显示表结构sql语句

本文提供针对SQLServer 2000、2005版本的SQL语句,用于查询数据库表的详细结构,包括字段名、数据类型、是否为主键等属性。
显示表结构sql语句SQL Server 2000--------------------------------------------------------------------------------1SELECT表名=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 aleft join systypes b on a.xusertype=b.xusertypeinner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'left join syscomments e on a.cdefault=e.idleft join sysproperties g on a.id=g.id and a.colid=g.smallidleft join sysproperties f on d.id=f.id and f.smallid=0--where d.name='要查询的表' --如果只查询指定表,加上此条件order by a.id,a.colorderSQL Server 2000--------------------------------------------------------------------------------2 SELECT (case when a.colorder=1 then d.name else '' end)表名, a.colorder 字段序号, a.name 字段名, (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' 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 bon a.xtype=b.xusertypeinner join sysobjects don a.id=d.id and d.xtype='U' and .name<>'dtproperties'left join syscomments eon a.cdefault=e.idleft join sysproperties gon a.id=g.id AND a.colid = g.smallidorder by a.id,a.colorderSQL Server 2005--------------------------------------------------------------------------------SELECT (case when a.colorder=1 then d.name else '' end)表名, a.colorder 字段序号, a.name 字段名, (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' 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 bon a.xtype=b.xusertypeinner join sysobjects don a.id=d.id and d.xtype='U' and d.name<>'dtproperties'left join syscomments eon a.cdefault=e.idleft join sys.extended_properties g --2005相应的修改on a.id=g.major_id AND a.colid = g.major_id --2005相应的修改where d.name='D3'order by a.id,a.colorder
### 查看 ClickHouse 中某个表的表结构 在 ClickHouse 中,可以通过 `DESCRIBE TABLE` 或 `SHOW CREATE TABLE` 语句来查看表的结构信息。 #### 使用 `DESCRIBE TABLE` 查看表结构语句用于列出表的字段名、数据类型、是否为分区键、排序键等信息。语法如下: ```sql DESCRIBE TABLE table_name; ``` 例如,查看名为 `test01` 的表结构: ```sql DESCRIBE TABLE test01; ``` 输出结果中会包含字段名称、数据类型、默认表达式、是否为分区键等信息[^2]。 #### 使用 `SHOW CREATE TABLE` 查看建表语句语句用于查看创建表时所使用的完整 SQL 语句,包括表引擎、分区策略、排序键等配置信息。语法如下: ```sql SHOW CREATE TABLE table_name; ``` 例如,查看 `test01` 的建表语句: ```sql SHOW CREATE TABLE test01; ``` 输出结果将显示完整的建表语句,包括使用的引擎类型(如 `MergeTree`)、分区键(如 `PARTITION BY toDate(time/1000)`)、排序键(如 `ORDER BY (id, name)`)以及表的其他设置[^2]。 --- ### 示例输出 假设存在如下建表语句: ```sql CREATE TABLE IF NOT EXISTS test01( id UInt64, name String, time UInt64, age UInt8, flag UInt8 ) ENGINE = MergeTree PARTITION BY toDate(time/1000) ORDER BY (id, name) SETTINGS index_granularity = 8192; ``` 使用 `DESCRIBE TABLE test01;` 输出可能如下: ``` name type default_type default_expression comment is_in_partition_key is_in_sorting_key is_in_primary_key id UInt64 NULL NULL NULL 0 1 0 name String NULL NULL NULL 0 1 0 time UInt64 NULL NULL NULL 1 0 0 age UInt8 NULL NULL NULL 0 0 0 flag UInt8 NULL NULL NULL 0 0 0 ``` 使用 `SHOW CREATE TABLE test01;` 输出可能如下: ```sql CREATE TABLE default.test01 ( `id` UInt64, `name` String, `time` UInt64, `age` UInt8, `flag` UInt8 ) ENGINE = MergeTree PARTITION BY toDate(time / 1000) ORDER BY (id, name) SETTINGS index_granularity = 8192; ``` --- ### 注意事项 - `DESCRIBE TABLE` 提供了字段级别的详细信息,适合用于快速了解表的字段结构。 - `SHOW CREATE TABLE` 更适合用于复制建表语句或查看完整的表定义,包括引擎和分区设置。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值