结果代码是: 建表后,设置表/字段的注释信息。
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的青龙网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
下面是 读取表/字段 的说明备注 的 SQL 语句。
获取数据库表清单:
select top 1000
ROW_NUMBER() OVER (ORDER BY a.object_id) AS No,
a.name AS 表名,
isnull(g.[value],'-') AS 说明
from
sys.tables a left join sys.extended_properties g
on (a.object_id = g.major_id AND g.minor_id = 0)
No 表名 说明
1 test_table 测试表
2 test_main -
获取数据库表的字段清单 [这里是查看 test_table 表的字段]
SELECT
a.column_id AS No,
a.name AS 列名,
isnull(g.[value],'-') AS 说明
FROM
sys.columns a left join sys.extended_properties g
on (a.object_id = g.major_id AND g.minor_id = a.column_id)
WHERE
object_id =
(SELECT object_id FROM sys.tables WHERE name = 'test_table')
No 列名 说明
1 Test_ID 主键(自增长)
2 Test_Key 种类
3 Test_Value 数值
4 Test_Type 内部类型
5 Test_BelongTo 从属关系
6 Test_Grade 等级
7 Test_Remark 备注
8 Test_Visible 是否可见
-----
更加详细一点的信息
SELECT
col.name AS 列名,
typ.name as 数据类型,
col.max_length AS 占用字节数,
col.precision AS 数字长度,
col.scale AS 小数位数,
col.is_nullable AS 是否允许非空,
col.is_identity AS 是否自增,
case when exists
( SELECT 1
FROM
sys.indexes idx
join sys.index_columns idxCol
on (idx.object_id = idxCol.object_id)
WHERE
idx.object_id = col.object_id
AND idxCol.index_column_id = col.column_id
AND idx.is_primary_key = 1
) THEN 1 ELSE 0 END AS 是否是主键
FROM
sys.columns col left join sys.types typ on (col.system_type_id = typ.system_type_id)
WHERE
col.object_id =
(SELECT object_id FROM sys.tables WHERE name = 'test_table')
SQL Server 2005 的 Microsoft SQL Server Management Studio Express
没有 带列名一起复制。 凑合着看看吧,就不手动写列名了。
Test_ID int 4 10 0 0 1 1 主键(自增长)
Test_Key varchar 10 0 0 0 0 0 种类
Test_Value varchar 20 0 0 0 0 0 数值
Test_Type int 4 10 0 0 0 0 内部类型
Test_BelongTo int 4 10 0 1 0 0 从属关系
Test_Grade int 4 10 0 1 0 0 等级
Test_Remark varchar 50 0 0 1 0 0 备注
Test_Visible bit 1 1 0 1 0 0 是否可见
在SQL标准中标准的注释方式是"--"注释,即单行注释,不过不同的数据库注视方式也略有不同,下面是各个数据库支持饿方式
其中这是方式基本上每个数据库都是支持的mysql 注释方法
在MySQL中病支持标准的"--"注释方式,他采用的是"#"方式才进行单行注释。
1."#"注释. 以#开头的一句表示注释一行如:
#
##创建用户表
#
create table user(
id int primary key not null,
name varchar(20));
#注释也可以用在行中注释,注释从#开始,到行末结束.如:
create table user(
id int primary key not null, # 用户id
name varchar(20));2.这种是C语言的注释风格,支持一行注释也支持多行注释。另外还可以是行内注释
1) 单行注释 即用注释一行如
create table student(
id int primary not null,
name varchar(50));
2)多行注释 即可以跨行注释如
create table student(
id int primary not null,
name varchar(50));
3)行内注释 即注释的内容可以在sql语句中,可以用来对字段进行注释。如:
create table student(
id int ,name varchar(50) );SqlServer 注释方法
--注释,即标准的单行注释
--
----创建用户表
--
create table student(
id int primary not null,
name varchar(50));
注释:用法同MySQL的注释方式,支持单行,多行和行内注释。Oracle和DB2数据库的注释方式基本上和SqlServer相同,参见上面。
sysobjects是系统对象表,syscolumns是系统字段信息表,systypes是系统类型表。通过字段的ID和sysproperties(系统注释属性表)关联,即可读出注释信息。
使用上面的命令,不管是否已经添加过注释,都会通过覆盖的方式替换掉。当语句当中的注释不为空的时候,就相当于是修改表或字段的注释;当表或者字段的注释为空的时候,就相当于是在增加注释;更新也是一样。
我们在给字段添加注释的时候往往会有很多字段,比如一张表的字段会有50个字段,如果逐条添加至少会用20分钟这样效率太慢了,这时候我们要想如何快速添加。这里给大家附上我的方法
sysproperties表里
表注释对应的smallid为0的记录,字段注释对应的是smallid大于0的记录,id是对象id与sysobjects表中的id相对应,可以join一下取得表名
首先,要明确一点的是注释存在sysproperties表中而不是跟创建的表捆绑到一起的
具体使如方法如下:
一、使用SQL Server窗口创建表是会有注释窗口;
二、使用SQL语句的comment语句,该语句放置在create table()后面,如:
comment on table table_name is 'table_mark'
comment on column table_name."Column" is 'column_mark'
三、调用系统存储过程sp_addextendedproperty来添加注释,如:
EXECUTE sp_addextendedproperty N'MS_Description',N'雇员信息',N'user',N'dbo',N'table',N'Employee',NULL,NULL
EXECUTE sp_addextendedproperty N'MS_Description',N'主键ID,自动增加',N'user',N'dbo',N'table',N'Employee',N'column',N'EmployeeID'
或者
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'角色ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CharData', @level2type=N'COLUMN',@level2name=N'charid'
GO