协众水岸风华,李宗瑞梁婖婷qvod,孙天柏
名称 | 地址 | 说明 |
---|---|---|
sysaltfiles | 主数据库 | 保存数据库的文件 |
syscharsets | 主数据库 | 字符集与排序顺序 |
sysconfigures | 主数据库 | 配置选项 |
syscurconfigs | 主数据库 | 当前配置选项 |
sysdatabases | 主数据库 | 服务器中的数据库 |
syslanguages | 主数据库 | 语言 |
syslogins | 主数据库 | 登陆帐号信息 |
sysoledbusers | 主数据库 | 链接服务器登陆信息 |
sysprocesses | 主数据库 | 进程 |
sysremotelogins | 主数据库 | 远程登录帐号 |
syscolumns | 每个数据库 | 列 |
sysconstrains | 每个数据库 | 限制 |
sysfilegroups | 每个数据库 | 文件组 |
sysfiles | 每个数据库 | 文件 |
sysforeignkeys | 每个数据库 | 外部关键字 |
sysindexs | 每个数据库 | 索引 |
sysmembers | 每个数据库 | 角色成员 |
sysobjects | 每个数据库 | 所有数据库对象 |
syspermissions | 每个数据库 | 权限 |
systypes | 每个数据库 | 用户定义数据类型 |
sysusers | 每个数据库 | 用户 |
SELECT * FROM sys.objects WHERE object_id = object_id('表名或视图名')
在sqlserver中一般可通过查询sys.objects系统表来得知结果,不过可以有更方便的方法
如下:
if object_id('tb_table') is not null print 'exist' else print'not exist'
如上,可用object_id()来快速达到相同的目的,tb_table就是我将要创建的资源的名称,所以要先判断当前数据库中不存在相同的资源
object_id()可接受两个参数,第一个如上所示,代表资源的名称,上面的就是表的名字,但往往我们要说明我们所要创建的是什么类型的资源,
这样sql可以明确地在一种类型的资源中查找是否有重复的名字,如下:
if object_id('tb_table','u') is not null print 'exist' else print'not exist'
第二个参数 “u” 就表示tb_table是用户创建的表,即:USER_TABLE地首字母简写
查询sys.objects中可得到各种资源的类型名称(TYPE列),这里之举几个主要的例子
select * from syscolumns where id=object_id('表名') and name='列名'
select * from sys.databases where name = 'student'
"select * from sys.backup_devices where name ='backupdb' (添加备份设备:exec sp_addumpdevice 'disk','backupdb','d:\\backup\\backupdb.bak')
select name, physical_name dbfile from sys.master_files where database_id=db_id('student') master数据库中sysdatabases表(是sqlserver中所有的数据库的库名) :
如果你要查询的是所有数据库(用户/系统):
select * from master..sysdatabases
如果你要查询的是用户数据库,则使用:
select * from master..sysdatabases where dbid > 4
如果你要查询的是系统数据库,只需要把where字句改为dbid < 4即可。
SELECT cacheobjtype,objtype,usecounts,sql from sys.syscacheobjects where sql not like'%cach%' and sql not like '%sys.%'
2.对应数据库中sysobjects表(反应的是相应数据库中所有的对象):
这个表的用处是最大的,因为它里面存放的有:表(系统/用户)、存储过程(系统/用户)、视图、主键、外键等。
这里就不一一说明了。
比如你sqlserver中有个数据库名叫 test,如果要查询该数据库中的所有表对象:
select * from test..sysobjects where type = ’u’ or type = ’s’
这里的type = ’u’是表示用户表对象,type = ’s’是系统表对象,怎样单独查询用户表对象或者系统表对象就不用说了吧。
如果你要查询的是存储过程当然也分了系统和用户了:
这个是查询数据库中所有存储过程
select * from test..sysobjects where type = ’p’
如果你要查询的是用户存储过程则加上 and category <> 2 即可。
查询系统存储过程就不用说了吧(category = 2 谁不知道。。。)
查询视图与查询存储过程一样,比如:
你查询的是数据库中所有视图
select * from test..sysobjects where type = ’v’
如果你要查询的是用户视图则加上 and category <> 2 即可。
其他的就不说了,就把 它们的type给大家说下:
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法
SQL Server 2017 Developer的下载、安装、配置及SSMS的下载安装配置(图文教程详解)
网友评论