2019-2-25SqlServer 中所有表、列、视图、索引、主键、外键等常用sql
sp_help Accounts_Users 其中Accounts_Users 表示表名
sp_columns Accounts_Users
exec sp_helpconstraint '表名'
在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。
sysobjects 表结构:

根据sysobjects 表格我们可以得到如下的查询:
1.获取所有表结构
select name as [表名] from sysobjects where xtype='U'and name !='dtproperties'
2.获取所有的列
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.获取所有的视图
select b.name as [视图名称],a.text as [视图脚本] from syscomments a inner join sysobjects b on a.id=b.id where b.type='V'
4.获取所有主键约束
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.获取所有唯一约束
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.获取所有外键约束
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约束
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.获取所有默认约束
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.获取所有索引约束
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);
2019-2-25SqlServer 中所有表、列、视图、索引、主键、外键等常用sql的更多相关文章
- 通过 jdbc 分析数据库中的表结构和主键外键
文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hib ...
- 查询SQLServer2005中某个数据库中的表结构、索引、视图、存储过程、触发器以及自定义函数
查询SQLServer2005中某个数据库中的表结构.索引.视图.存储过程.触发器以及自定义函数 2013-03-11 09:05:06| 分类: SQL SERVER|举报|字号 订阅 ( ...
- ORACLE动态sql在存储过程中出现表或视图不存在的解决方法
Oracle动态sql在存储过程中出现表或视图不存在的解决方法 CREATE OR REPLACE PROCEDURE P_test is strsql varchar2(2000); BEGIN ...
- 第15课-数据库开发及ado.net-数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库
第15课-数据库开发及ado.net 数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库 1. 学习方法 2. 多涨见识 3. 比自己强的人一起,学习更强:比自己更聪明的人 ...
- MySQL创建表时加入的约束以及外键约束的的意义
1,创建表时加入的约束 a) 非空约束,not null b) 唯一约束,unique c) 主键约束,primary key d) 外键约束,foreign key 1,非空约束,针对某个字段设置其 ...
- EF中主表和附表一起提交的话,如果主附表的主键外键已经设定。
EF中主表和附表一起提交的话,如果主附表的主键外键已经设定,如果新增同时新增主表和附表的记录,那么在EF同时提交时,不需要人为的设定附表的主表的主键值,EF会自动为附表添加外键值.
- (原)未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值与DATEADD
SQLServer2014,查询分析器中 这样的脚本是没有问题的:AND TPO.CREATEON <= DATEADD(DAY, 1, '2017/3/3 0:00:00') 但.NET D ...
- MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建
前言 在操作数据库的时候经常会用到判断数据表.视图.函数/方法.存储过程是否存在,若存在,则需要删除后再重新创建.以下是MS SQL Server中的示例代码. 数据表(Table) 创建数据表的时候 ...
- 备忘:MySQL中修改表中某列的数据类型、删除外键约束
-- MySQL中修改表中某列的数据类型 ALTER TABLE [COLUMN] 表名 MODIFY 列名 列定义; -- 删除外键约束 SHOW CREATE TABLE 表名; -- 复制CON ...
- mysql获取表列信息、主键信息
/** * 获取物理表中已存在的列信息 * @param tbName 表名 * @return results 查询结果 */ fun getExistColumnInfo(tbName:Strin ...
随机推荐
- 【洛谷P1313 计算系数】
题目连接 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio&g ...
- Maven pom文件标签解析大全
<span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...
- gcc __thread关键字
https://blog.csdn.net/xj178926426/article/details/54345449 EventLoop.cpp __thread EventLoop* t_loopI ...
- vbox安装增强功能,实现宿主机文件夹共享并浏览器访问
虚拟机版本:6.0.4 r128413 (Qt5.6.2) linux:centos7/6 点击菜单栏中的设备->安装增强功能,再reboot 获取内核版本号 uname -r 查看yum的内核 ...
- CAS server打包小白教程
如题,cas是耶鲁大学的一个开源的登录系统,功能齐全,受到很多企业的青睐. 耶鲁大学都不知道那你太out了,我告诉你吧!耶鲁大学就是山东一个椰子树长的很多的地方的大学,很牛逼. 很多新手程序员简历都喜 ...
- 类型和原生函数及类型转换(三:终结js类型转换)
Number() parseInt() parseFloat() Boolean() String() toString() 一.显式类型转换 -------Number()函数把对象的值转换为数字. ...
- ACM-ICPC 2018 沈阳赛区网络预赛 I Lattice's basics in digital electronics(模拟)
https://nanti.jisuanke.com/t/31450 题意 给出一个映射(左为ascll值),然后给出一个16进制的数,要求先将16进制转化为2进制然后每9位判断,若前8位有奇数个1且 ...
- 基于Rabbit实现的RPC
最近在学习项目中的通用技术,其中一个是在项目中会经常使用的基于RabbitMQ实现的RPC.这里一共有三个点要学习,分别是:RPC是什么?RabbitMQ是什么?如何使用RabbitMQ实现RPC.奔 ...
- 第三节:Action向View传值的四种方式(ViewData、ViewBag、TempData、Model)
简 介 在前面的章节中,我们已经很清楚,MVC工作模型的流程,Controller中的Action接收到客户端的请求,处理后要将数据返回给View,那么Action中是如何将数据返回给View的,二 ...
- 关于使用python ~取反操作符带出的一系列问题
晚上的时候,无意之间看到stackoverflow上面的一个编程挑战赛,各路高手各种搞事,看到python的地方突然发现用了很多位运算的符号,但是~符号引起了我和同事的注意. 我们很少在程序中使用这种 ...