失效链接处理 |
SQL Sever DBA必备的数据库基础知识 PDF 下载
本站整理下载:
相关截图:
主要内容:
系统表的整理
1.1.1 Sysobjects 在每个数据库中都存在此表。存放着数据库中的所有对象,如表,列,
索引等等。字段 xtype 代表对象类型,u 代表用户表,p 代表存储过程,tr 代表触
发器。name 字段表示对象名称。 如: select * from sysobjects where
xtype='u'
1.1.2 Syscolumns 在每个数据库中都存在此表。name:名称。id:该列所属的表对象 ID,
或与该参数关联的存储过程 ID. 如: select col.name,obj.name from
syscolumns col join sysobjects obj on col.id = obj.id where obj.xtype
= 'u' and obj.name like 'Dim_%' order by col.name
1.1.3 Systypes 对于每种系统提供数据类型和用户定义数据类型,均包含一行信息。该表
存储在每个数据库中。这些是系统提供的数据类型及其 ID 号。
1.1.4 Spt_values 相当于一个数字辅助表,在 sql 中主要用到 number 这个字段。列名分别
为名称、值、类型、下限、上限、状态类型。列的取值含义:D=Database Option
P=Projection DBR=Database Role DC=Database Replication I=Index L=Locks
V=Device Type 因为比较多,无法一一列举。其中类型 P 较为特殊,它只是 0-2047(与
版本有关)之间的数字的简单列表,作为对所有类型之间关系的预测。巧用
master..spt_values 表输出数字或者时间常量表 2009-10-16 14:32 。sql 开发中
经常需要使用数字或者时间的常量表。比如,输出一年的月份表,输出 1000 以内的
自然数等等。数量连续且不超过 2048。那么使用 master..spt_values 表就会再也
方便不过了。
1.1.5 Syscoments: 包含数据库中每个视图、规则、默认值、触发器、CHECK 约束、DEFAULT 约
束和存储过程的项。text 列包含原始的 SQL 定义语句。 select A.* ,B.* from
syscomments A join sysobjects B on A.id=B.id where
B.xtype= 'TR''
1.1.6 Sysdatabases:存放数据库的信息
1.1.7 Sysforeignkeys: 包含关于表定义中的 FOREIGN KEY 约束的信息。该表存储在每个数
据库中
1.18 Object_ID返回架构范围内对象的数据库对象标识号。OBJECT_ID(N'A',N'U') /*AF
= 聚合函数(CLR) C = CHECK 约束 D = DEFAULT(约束或独立)F = FOREIGN KEY 约 束FN = SQL 标量函数FS = 程序集(CLR) 标量函数FT = 程序集(CLR) 表值函数IF = SQL
内联表值函数IT = 内部表P = SQL 存储过程PC = 程序集(CLR) 存储过程PG = 计划指南PK
= PRIMARY KEY 约束R = 规则(旧式,独立)RF = 复制筛选过程S = 系统基表SN = 同义
词SQ = 服务队列TA = 程序集(CLR) DML 触发器TF = SQL 表值函数TR = SQL DML 触发
器TT = 表类型U = 表(用户定义类型)UQ = UNIQUE 约束V = 视图X = 扩展存储过程
如果是临时表的话,就这样处理
数据库项目文档
*/
if object_id('tempdb.dbo.#TempTable') is not null
drop table #TempTable
if object_id('tempdb..#TempTable') is not null
drop table #TempTable
获取列的基本信息:
SELECT
表名=case when a.colorder=1 then d.name else '' end,
表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,
字段序号=a.colorder,
字段名=a.name,
标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else
'' end,
主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name
in (
SELECT name FROM sysindexes WHERE indid in(
SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
))) then '√' else '' end,
类型=b.name,
占用字节数=a.length,
长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允许空=case when a.isnullable=1 then '√'else '' end,
默认值=isnull(e.text,''),
字段说明=isnull(g.[value],'')
FROM syscolumns a
left join systypes b on a.xusertype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U' and
d.name<>'dtproperties'
left join syscomments e on a.cdefault=e.id
left join sys.extended_properties g on a.id=g.major_id and
a.colid=g.minor_id
left join sys.extended_properties f on d.id=f.major_id and f.minor_id=0
where d.name='D' --如果只查询指定表,加上此条件
order by a.id,a.colorder
/*
|