2019-2-25SqlServer 中所有表、列、视图、索引、主键、外键等常用sql
sp_help Accounts_Users 其中Accounts_Users 表示表名
sp_columns Accounts_Users
exec sp_helpconstraint '表名'
在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。
sysobjects 表结构:
根据sysobjects 表格我们可以得到如下的查询:
1.获取所有表结构
1 | select name as [表名] from sysobjects where xtype= 'U' and name != 'dtproperties' |
2.获取所有的列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | SELECT d.name 表名, a.name 字段名, ( CASE WHEN Columnproperty(a.id, a.name, 'IsIdentity' ) = 1 THEN '是' ELSE '否' END ) 标识, ( CASE WHEN Columnproperty(a.id, a.name, 'IsIdentity' ) = 1 THEN IDENT_Seed( d.name ) ELSE 0 END ) 标识种子 , ( CASE WHEN Columnproperty(a.id, a.name, 'IsIdentity' ) = 1 THEN Ident_Incr(d.name) ELSE 0 END ) 标识增长量, ( CASE WHEN (SELECT Count(*) FROM sysobjects WHERE ( name IN (SELECT name FROM sysindexes WHERE ( id = a.id ) AND ( indid IN (SELECT indid FROM sysindexkeys WHERE ( id = a.id ) AND ( colid IN (SELECT colid FROM syscolumns WHERE ( id = a.id ) AND ( name = a.name )) )) )) ) AND ( xtype = 'PK' )) > 0 THEN '是' ELSE '否' END ) 主键, b.name 类型, a.length 占用字节数, Columnproperty(a.id, a.name, 'PRECISION' ) AS 长度, Isnull(Columnproperty(a.id, a.name, 'Scale' ), 0) AS 小数位数, ( CASE WHEN a.isnullable = 1 THEN '是' ELSE '否' END ) 允许空, Isnull(e.text, '' ) 默认值, Isnull(g.[value], ' ' ) AS [说明] FROM syscolumns a LEFT JOIN systypes b ON a.xtype = b.xusertype left 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. class AND f.minor_id = 0 WHERE b.name IS NOT NULL and d.name is not null --and d.name= '{0}' --如果只查询指定表,加上此条件 ORDER BY a.id, a.colorder |
3.获取所有的视图
1 | select b.name as [视图名称],a.text as [视图脚本] from syscomments a inner join sysobjects b on a.id=b.id where b.type= 'V' |
4.获取所有主键约束
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | SELECT tab.name AS [表名], idxCol.is_descending_key as [是否降序], idx.name AS [约束名称], idx.type_desc as [约束类型], col.name AS [约束列名] FROM sys.indexes idx JOIN sys.index_columns idxCol ON (idx.object_id = idxCol.object_id AND idx.index_id = idxCol.index_id AND idx.is_primary_key = 1) JOIN sys.tables tab ON (idx.object_id = tab.object_id) JOIN sys.columns col ON (idx.object_id = col.object_id AND idxCol.column_id = col.column_id); |
5.获取所有唯一约束
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | SELECT tab.name AS [表名], idxCol.is_descending_key as [是否降序], idx.name AS [约束名称], idx.type_desc as [约束类型], col.name AS [约束列名] FROM sys.indexes idx JOIN sys.index_columns idxCol ON (idx.object_id = idxCol.object_id AND idx.index_id = idxCol.index_id AND idx.is_unique_constraint = 1) JOIN sys.tables tab ON (idx.object_id = tab.object_id) JOIN sys.columns col ON (idx.object_id = col.object_id AND idxCol.column_id = col.column_id); |
6.获取所有外键约束
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | select oSub.name AS [子表名称], fk.name AS [外键名称], SubCol.name AS [子表列名], oMain.name AS [主表名称], MainCol.name AS [主表列名] from sys.foreign_keys fk JOIN sys.all_objects oSub ON (fk.parent_object_id = oSub.object_id) JOIN sys.all_objects oMain ON (fk.referenced_object_id = oMain.object_id) JOIN sys.foreign_key_columns fkCols ON (fk.object_id = fkCols.constraint_object_id) JOIN sys.columns SubCol ON (oSub.object_id = SubCol.object_id AND fkCols.parent_column_id = SubCol.column_id) JOIN sys.columns MainCol ON (oMain.object_id = MainCol.object_id AND fkCols.referenced_column_id = MainCol.column_id) |
7.获取所有Check约束
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | SELECT tab.name AS [表名], chk.name AS [约束名称], col.name AS [约束列名], chk.definition AS [约束定义] FROM sys.check_constraints chk JOIN sys.tables tab ON (chk.parent_object_id = tab.object_id) JOIN sys.columns col ON (chk.parent_object_id = col.object_id AND chk.parent_column_id = col.column_id) |
8.获取所有默认约束
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | SELECT tab.name AS [表名], def.name AS [约束名称], col.name AS [约束列名], def.definition AS [约束定义] FROM sys.default_constraints def JOIN sys.tables tab ON (def.parent_object_id = tab.object_id) JOIN sys.columns col ON (def.parent_object_id = col.object_id AND def.parent_column_id = col.column_id) |
9.获取所有索引约束
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | SELECT tab.name AS [表名], idx.is_unique as [是否唯一索引], idxCol.is_descending_key as [是否降序], idx.name AS [约束名称], idx.type_desc as [约束类型], col.name AS [约束列名] FROM sys.indexes idx JOIN sys.index_columns idxCol ON (idx.object_id = idxCol.object_id AND idx.index_id = idxCol.index_id AND idx.is_unique_constraint= 0 and is_primary_key=0) JOIN sys.tables tab ON (idx.object_id = tab.object_id) JOIN sys.columns col ON (idx.object_id = col.object_id AND idxCol.column_id = col.column_id); |
标签:
工作记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)