sql语句添加表,字段的描述

描述类型全部设置为:MS_Description

--添加表的描述
--格式如右:execute sp_addextendedproperty 'MS_Description','字段备注信息','user','dbo','table','字段所属的表名','column','添加注释的字段名'; --添加表描述
EXECUTE sp_addextendedproperty 'C', '课程表', 'user', 'dbo', 'table', 'Course',NULL, NULL; --添加字段描述
EXECUTE sp_addextendedproperty 'MS_Description', '课程ID', 'user', 'dbo','table', 'Course', 'column', 'CourseId';

或者:右键表(列)的属性,找到扩展属性

①获取表名

--查询所有的表名称
SELECT name FROM sys.objects obj WHERE obj.type='U'; -- xtype:类型可以区分表,视图,存储过程,函数等等

②获取表的描述  sys.extended_properties  这张表存的扩展描述

SELECT  obj.name 表名 ,
ds.value 描述
FROM sys.extended_properties ds
LEFT JOIN sys.objects obj ON ds.major_id = obj.object_id
WHERE ds.minor_id = 0
AND obj.name = 'Course';

最后整理:

--最后整理
SELECT obj.name,
se.value
FROM sys.objects obj
LEFT JOIN [sys].[extended_properties] se
ON obj.object_id = se.major_id
AND se.minor_id = 0
WHERE obj.type = 'U';

③获取表的主键信息

--表 sys.indexes
SELECT * FROM sys.indexes WHERE is_primary_key = 1 AND object_id =Object_Id('Course')

--最后整理
SELECT obj.name,
CAST(CASE
WHEN
(
SELECT COUNT(1) FROM sys.indexes WHERE is_primary_key = 1 AND object_id =obj.object_id
) >= 1 THEN
1
ELSE
0
END AS BIT) AS HasPrimaryKey
FROM sys.objects obj
WHERE obj.type = 'U';

④获取主键的类型和名称

--得到表的主键列id
SELECT sc.column_id
FROM sys.indexes si
INNER JOIN sys.index_columns sc
ON si.index_id = sc.index_id
AND si.object_id = sc.object_id
WHERE si.is_primary_key = 1
AND si.object_id = OBJECT_ID('Course');
 --获取主键类型和名称
SELECT TOP 1
colm.name AS TablePrimarkeyType,
systype.name AS TablePrimarkeyName
FROM sys.columns colm
INNER JOIN sys.types systype
ON colm.system_type_id = systype.system_type_id
WHERE colm.object_id = OBJECT_ID('Course')
AND colm.column_id IN (
SELECT ic.column_id
FROM sys.indexes idx
INNER JOIN sys.index_columns ic
ON idx.index_id = ic.index_id
AND idx.object_id = ic.object_id
WHERE idx.object_id = OBJECT_ID('Course')
AND idx.is_primary_key = 1
);

 --整理
SELECT obj.name,
t.TablePrimarkeyType,
t.TablePrimarkeyName
FROM sys.objects obj
OUTER APPLY
(
SELECT TOP 1
colm.name AS TablePrimarkeyType,
systype.name AS TablePrimarkeyName
FROM sys.columns colm
INNER JOIN sys.types systype
ON colm.system_type_id = systype.system_type_id
WHERE colm.object_id = obj.object_id
AND colm.column_id IN (
SELECT ic.column_id
FROM sys.indexes idx
INNER JOIN sys.index_columns ic
ON idx.index_id = ic.index_id
AND idx.object_id = ic.object_id
WHERE idx.object_id = obj.object_id
AND idx.is_primary_key = 1
)
) t
WHERE obj.type = 'U';

⑤最终结果:

--获取表的结构  表名,拥有着,行数,是否拥有主键,表描述,表的主键,表的主键名称
SELECT obj.name Tablename,
schem.name Schemname,
idx.rows,
CAST(CASE
WHEN
(
SELECT COUNT(1)
FROM sys.indexes
WHERE object_id = obj.object_id
AND is_primary_key = 1
) >= 1 THEN
1
ELSE
0
END AS BIT) HasPrimaryKey,
b.value TableDesc,
t.*
FROM sys.objects obj
INNER JOIN sysindexes idx --行数
ON obj.object_id = idx.id
AND idx.indid <= 1
INNER JOIN sys.schemas schem --架构
ON obj.schema_id = schem.schema_id
LEFT JOIN sys.extended_properties b --描述
ON obj.object_id = b.major_id
AND b.minor_id = 0  AND b.name='MS_Description'
OUTER APPLY --主键名称和类型
(
SELECT TOP 1
colm.name AS TablePrimarkeyType,
systype.name AS TablePrimarkeyName
FROM sys.columns colm
INNER JOIN sys.types systype
ON colm.system_type_id = systype.system_type_id
WHERE colm.object_id = obj.object_id
AND colm.column_id IN (
SELECT ic.column_id
FROM sys.indexes idx
INNER JOIN sys.index_columns ic
ON idx.index_id = ic.index_id
AND idx.object_id = ic.object_id
WHERE idx.object_id = obj.object_id
AND idx.is_primary_key = 1
)
) t
WHERE obj.type = 'U'
-- AND obj.name LIKE 'My_%'
ORDER BY obj.name;

sql server 语句获取表的描述,主键等等的更多相关文章

  1. 在SQL SERVER中获取表中的第二条数据

    在SQL SERVER中获取表中的第二条数据, 思路:先根据时间逆排序取出前2条数据作为一个临时表,再按顺时排序在临时表中取出第一条数据 sql语句如下: select top 1 * from(se ...

  2. SQL SERVER中获取表间主外键关系

    sql server 2008中的主外键关系获取方式: 转自:http://www.cnblogs.com/ke10/archive/2012/06/11/2544655.html SELECT OB ...

  3. Sql Server约束的学习一(主键约束、外键约束、唯一约束)

    一.约束的分类 1.实体约束 实体约束是关于行的,比如某一行出现的值不允许出现在其他行,例如主键约束. 2.域约束 域约束是关于列的,对于所有行,某一列有那些约束,例如检查约束. 3.参照完整性约束 ...

  4. SQL语句建表、设置主键、外键、check、default、unique约束

    · 什么是数据库? 存放数据的仓库. · 数据库和数据结构有什么区别? 数据结构要解决在内存中操作数据的问题,数据库要解决在硬盘中操作数据的问题.数据结构研究一些抽象数据模型(ADT)和以及定义在该模 ...

  5. sql server 2008获取表的字段注释

    SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, 字段序号=a.colorder, 字段名=a.n ...

  6. oracle&&Sqlserver获取表名列名主键及数据类型

    SQlserver获得列名,列类型,列类型长度,scale,prec等数据类型(syscolumns,systypes,sysobjects均为视图) select a.name as colname ...

  7. SQL SERVER 2005 获取表的所有索引信息以及删除和新建语句

    BEGIN        WITH tx AS        (                SELECT a.object_id                      ,b.name AS s ...

  8. SQL Server语句创建数据库和表——并设置主外键关系

    简单的创建数据库的 SQL 语句: use master go if exists(select * from sysdatabases where name='Test') begin select ...

  9. MS SQL SERVER搜索某个表的主键所在的列名

    原文:MS SQL SERVER搜索某个表的主键所在的列名 SELECT SYSCOLUMNS.name  FROM SYSCOLUMNS,SYSOBJECTS,SYSINDEXES,SYSINDEX ...

随机推荐

  1. Servlet3.0的文件上传功能

    在Servlet3.0之前,文件上传需要借助于第三方插件,在Servlet3.0之后,Servlet本身开始支持文件上传功能. 获取上传的文件可以通过HTTPServletRequest的getPar ...

  2. Python 递归返回树形菜单JSON串 <flask>

    需求:菜单管理功能(增.删.改),多级树形菜单展示 数据库表设计 create table if not exists Menu( id serial primary key , title ) no ...

  3. 004 java中的变量

    这篇文章为你搞懂三个问题 什么是变量? 如何使用变量? 变量命名有哪些规范? 变量 计算机的内存类似于人的大脑,电脑使用内存来存储计算所需要的数据. 内存像旅馆一样,不同的房间类型对应不同的数据类型, ...

  4. net 预览文件 转换文件

    预览SWF文件 swfobject.js  (google浏览器 会阻止 需设置) @{ ViewBag.Title = "PdfPreview"; Layout = " ...

  5. 2017年10月30日 vs初级教学

    Console.Write("Hello World!"); / / 插入 Hello World!            Console.WriteLine("Hell ...

  6. 面试基础(二)-mem函数

    常考的函数有下面三个,memset,memcpy,memmove,一定要记住三个函数的函数原型,熟记返回值类型和参数类型,当然也不能忘记参数检查   memset #include<iostre ...

  7. vue1.0 与 Vue2.0的一些区别 及用法

    1.Vue2.0的模板标记外必须使用元素包起来: eg:Vue1.0的写法 <!DOCTYPE html> <html> <head> <meta chars ...

  8. Web安全色的意义

    问题: 不同的平台(Mac.PC等)有不同的调色板,不同的浏览器也有自己的调色板.这就意味着对于一幅图,显示在Mac上的Web浏览器中的图像,与它在PC上相同浏览器中显示的效果可能差别很大. 选择特定 ...

  9. 一次完整的HTTP事务过程

    基本流程: a. 域名解析 b. 发起TCP的3次握手 c. 建立TCP连接后发起http请求 d. 服务器端响应http请求,浏览器得到html代码 e. 浏览器解析html代码,并请求html代码 ...

  10. SharePoint 2013 - Sideloading

    默认情况下,App是不能直接部署到Production环境,只能通过App Catalog中安装. 只有在Developer类型站点中才默认激活了Developer feature. 所以如果想要使用 ...