T-SQL---- 系统表
T-SQL-----存储过程
虽说现在orm,nosql对数据的操作会减少很多t-sql的编程,但是t-sql这应该是每个程序员要掌握的,接下来的两周准备把这块知识点进行系统总结。
存储SQL所有的系统信息。存储有关数据库服务中的元数据所谓元数据即(比如数据服务器有哪些用户数据库、数据库服务器有哪些登陆账号,
数据库中都有哪些表,每个表都有哪些字段 每个数据库有哪些存储过程、视图等等的数据),系统表一般sys开头。
任何用户都不应直接更改系统表。( 不要尝试使用 DELETE、UPDATE、INSERT 语句或用户定义的触发器修改系统表。)
若要检索存储在系统表中的信息,应用程序应使用下列组件之一:
系统存储过程
Transact-SQL 语句和函数
SQL Server 管理对象 (SMO)
复制管理对象 (RMO)
数据库 API 目录函数
Microsoft SQL Server 上的每个数据库在表中占一行。
最初安装 SQL Server 时,sysdatabases 包含 master、model、msdb、mssqlweb 和 tempdb 数据库的项。
关键字段:
name :库的名字;
dbid :库的ID,dbid从1到5是系统的。分别是:master、model、msdb、mssqlweb、tempdb 这五个库。
select * from master.dbo.sysdatabases 就可以查询出所有的库名。
SQL-SERVER的每个数据库内都有此系统表,它存放该数据库内创建的所有对象,如约束、默认值、日志、规则、存储过程等。
关键字段
Name:对象名称
id:对象ID
xtype(type):对象类型
uid:所有者对象用户id
status:对象状态。
对象类型(xtype)。可以是下列对象类型中的一种:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程
当xtype='U' and status>0代表是用户建立的表,对象名就是表名,对象ID就是表的ID值(object_id(‘表名’))。
select * from wyl_db.dbo.sysobjects where xtype='U' and status>0-- 就可以列出库
判断是否存在
if (object_id('proc_get_student', 'P') is not null)--判断存储过程是否存在 另外一种 if (exists (select * from sys.objects where name = 'proc_get_student'))//
注: proc_get_student 是一个存储过程名称,p代表是对象类型为存储过程,对象类型,就上面已列出。
每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。该表位于每个数据库中。
关键字段有:
name :字段名称
id:表的id号
colid :字段id号。
其中的 ID 是 刚上我们用sysobjects得到的表的ID号。
判断是否存在
IF COL_LENGTH('A', 'C') IS NOT NULL 注:A是表名 C是列名 或者: select * from syscolumns where id=object_id('表名') and name='列名' 注:存在则返回此列的一条说明记录,不存在返回空;
wyl_dbwyl_db.dbo. sysaltfiles 保存数据库的文件 syscharsets 字符集与排序顺序 sysconfigures 配置选项 syscurconfigs 当前配置选项 syslanguages 语言 syslogins 登陆帐号信息 sysoledbusers 链接服务器登陆信息 sysprocesses 进程 sysremotelogins 远程登录帐号 sysconstrains 限制 sysfilegroups 文件组 sysfiles 文件 sysforeignkeys 外部关键字 sysindexs 索引 sysmenbers 角色成员 syspermissions 权限 systypes 用户定义数据类型 sysusers 用户