sql查询表结构
sql查表结构语句
sql查表结构语句SQL查表结构语句是数据库开发中非常常见的操作,它可以帮助我们快速了解一个数据表的结构,包括字段名、数据类型、长度、是否允许为空等信息。
下面,我们来介绍一些常用的SQL查表结构语句。
1. DESC语句DESC语句是MySQL中查看表结构的最简单的方法之一。
它可以列出表中所有字段的名称、类型、长度、是否允许为空以及默认值。
使用方法如下:```DESC table_name;```其中,table_name是要查看结构的表名。
2. SHOW COLUMNS语句SHOW COLUMNS语句也可以用来查看表结构,它可以列出表中所有字段的详细信息,包括字段名、数据类型、长度、是否允许为空、默认值、注释等。
使用方法如下:```SHOW COLUMNS FROM table_name;```其中,table_name是要查看结构的表名。
3. INFORMATION_SCHEMA表除了使用DESC和SHOW COLUMNS语句外,我们还可以通过查询INFORMATION_SCHEMA表来查看表结构。
INFORMATION_SCHEMA是MySQL中的一个特殊数据库,它包含了所有数据库、表、列、索引等的元数据信息。
我们可以使用以下SQL语句来查询INFORMATION_SCHEMA表:```SELECT column_name, data_type, is_nullable, column_default FROM information_schema.columnsWHERE table_schema = 'database_name' AND table_name ='table_name';```其中,database_name是要查询的数据库名,table_name是要查询的表名。
4. DESCRIBE EXTENDED语句DESCRIBE EXTENDED语句是MySQL中的另一种查看表结构的方法,它可以显示更多的信息,包括字段的注释、存储引擎、分区信息等。
Sql:查看数据库表和表结构的语句
Sql:查看数据库表和表结构的语句T-sql显⽰表结构和字段信息的sql语句:exec sp_help tablename; ~~使⽤存储过程 sp_help显⽰数据库包含哪些表的sql语句:use yourDBname;select name from sysobjects where xtype='u'; ~~使⽤系统表 sysobjects在当前数据库中查询其他数据库的表use shaowu2_2013;select * from ac where acid not in(select acid from shaowu2_2014.dbo.ac); -- in old,but new has not this id~~~数据库系统中数据库对象的引⽤:数据库.对象所有者.对象名(好⽐:⼤楼.房间.谁的.什么东西)--------------------------------------------------SqlServer判断数据库、表、存储过程、函数是否存在--------------------------------------------------判断数据库是否存在 if exists (select * from sys.databases where name = '数据库名')~~~sql2008有系统表:sys.databases,⽽sql2000则没有提⽰对象名⽆效--drop database [数据库名]判断某个⽤户表是否存在 if exists (select * from sysobjects where id = object_id(N'[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)~~object_id(srhname) 函数,返回某个对象的id,( 等效于: select id from sysobjects where name=@srhname )~~objectproperty(sysobjectID,prop) 获取字段的属性--drop table [表名]判断存储过程是否存在 if exists (select * from sysobjects where id = object_id(N'[存储过程名]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) ~~同上 sysobjects系统表 object_id(objname)函数,objectproperty(objId, prop)函数,数据库的对象包括:表视图索引约束存储过程函数-- drop procedure [存储过程名]判断函数是否存在IF OBJECT_ID (N'函数名') IS NOT NULL DROP FUNCTION dnt_split判断数据库是否开启了全⽂搜索select databaseproperty('数据库名','isfulltextenabled')判断全⽂⽬录是否存在 select * from sysfulltextcatalogs where name ='全⽂⽬录名称'。
sql查询表结构
sql查询表结构
表结构查询是软件开发领域中极其重要的一步。
它往往会为开发
工作提供重要的方向指引,比如表的字段,它们的类型等。
为了高效的完成这一步,可以使用SQL语句来进行查询表结构的
工作。
使用SQL语句进行查询表结构可以通过表临时定义这一过程。
可以使用DESC命令,它将显示表字段的名称、字段类型等信息,可以
用SHOW CREATE TABLE命令来查看表的定义,还可以使用INFORMATION_SCHEMA.COLUMNS命令来查看表的字段定义等。
这些语句
都可以用来获取表结构的信息,使开发者可以更加精细的操作表结构,更好地完成开发的过程。
另外,查询表结构还可以通过查询直接显示表定义的方式来完成。
有些数据库管理系统(如MySQL)提供了查看表定义的工具,用户可以直接拖动图形接口来查看表结构,从而更快捷地查看表定义,这种方
式也非常方便。
总而言之,查询表结构是软件开发的一个必要步骤,使用SQL语句,或使用图形接口的方式可以帮助开发者较快较精准地查看表结构
信息,为后续的工作提供重要的方向和依据。
sql查看数据字典(表结构)
sql查看数据字典(表结构)SELECT (case when a.colorder=1 then else null end) 表名,a.colorder 字段序号, 字段名,(case when COLUMNPROPERTY( a.id,,'IsIdentity')=1 then '√'else '' end) 标识,(case when (SELECT count(*) FROM sysobjectsWHERE (name in (SELECT name FROM sysindexesWHERE (id = a.id) AND (indid in(SELECT indid FROM sysindexkeysWHERE (id = a.id) AND (colid in(SELECT colid FROM syscolumns WHERE (id = a.id) AND (name = )))))))AND (xtype = 'PK'))>0 then '√' else '' end) 主键, 类型,a.length 占⽤字节数,COLUMNPROPERTY(a.id,,'PRECISION') as 长度,isnull(COLUMNPROPERTY(a.id,,'Scale'),0) as ⼩数位数,(case when a.isnullable=1 then '√'else '' end) 允许空,isnull(e.text,'') 默认值,isnull(g.[value], ' ') AS [说明]FROM syscolumns aleft join systypes b on a.xtype=b.xusertypeinner join sysobjects d on a.id=d.id and d.xtype='U' and <>'dtproperties'left join syscomments e on a.cdefault=e.idleft join sys.extended_properties g on a.id=g.major_id AND a.colid=g.minor_idleft join sys.extended_properties f on d.id=f.class and f.minor_id=0where is not null--WHERE ='要查询的表' --如果只查询指定表,加上此条件order by a.id,a.colorder 转:/ynbt/archive/2012/07/16/2593389.html查看表⾏数,⼤⼩;查看索引因⼦(扫描密度,平均页密度⽐例较低,需重组),重组索引;select object_name(id) tablename,8*reserved/1024 reserved,rtrim(8*dpages)+'kb' used,8*(reserved-dpages)/1024 unused,8*dpages/1024-rows/1024*minlen/1024 free,rows,'DBCC showcontig('''+object_name(id)+''')' ,'--DBCC DBREINDEX('''+object_name(id)+''')','select top 10 * from '+object_name(id)from sysindexes where indid<=1 order by rows DESCView Code表添加字段和描述alter table FI_repsource add tt_orderstate VARCHAR(50) null;EXECUTE sp_addextendedproperty N'MS_Description', N'订单号状态', N'user', N'dbo', N'table', N'FI_repsource', N'column', N'tt_orderstate' View Code查看sql执⾏慢的语句--慢的sql语句SELECT(total_elapsed_time / execution_count)/1000 N'平均时间ms',total_elapsed_time/1000 N'总花费时间ms',total_worker_time/1000 N'所⽤的CPU总时间ms',total_physical_reads N'物理读取总次数',total_logical_reads/execution_count N'每次逻辑读次数',total_logical_reads N'逻辑读取总次数',total_logical_writes N'逻辑写⼊总次数',execution_count N'执⾏次数',SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,((CASE statement_end_offsetWHEN -1 THEN DATALENGTH(st.text)ELSE qs.statement_end_offset END- qs.statement_start_offset)/2) + 1) N'执⾏语句',creation_time N'语句编译时间',last_execution_time N'上次执⾏时间'FROMsys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) stWHERESUBSTRING(st.text, (qs.statement_start_offset/2) + 1,((CASE statement_end_offsetWHEN -1 THEN DATALENGTH(st.text)ELSE qs.statement_end_offset END- qs.statement_start_offset)/2) + 1) not like '%fetch%'ORDER BYtotal_elapsed_time / execution_count DESC;View Code批量删除数据(数据太多,指定删除top)declare @i intset @i=0while @i<6500000begindelete tb_name from tb_name aa join (select top 1000 id from tb_name where id<@i order by id asc) bb on aa.id=bb.idset @i=@i+1000print('@i='+convert(varchar,@i));endprint('end---')View Code锁单操作(每次只取⼀条)string guid = Guid.NewGuid().ToString();string sqldata = @"update t_order_deposit set [lockname]='{0}',locktime='{1}' from t_order_deposit aa join (select top 1 id from t_order_deposit WHERE state='N' and lockname is null order by locktime asc) bb on aa.id=bb.id; SELECT id,orderid,orderno,orderamount,pcc,pnr from t_order_deposit where lockname='{0}'";View Code批量复制同结构表数据IF OBJECT_ID(N'tempdb..#temp') IS NOT NULLDROP TABLE #tempSELECT*INTO #temp FROM SYSOBJECTS WHERE TYPE ='U'ORDER BY name asc--SELECT * FROM #tempDECLARE@tbName varchar(max)DECLARE@colName varchar(max) --声明@colName变量DECLARE@NcolName varchar(max)DECLARE@sql VARCHAR(MAX)DECLARE@sqlall VARCHAR(MAX)DECLARE@id INTDECLARE@count INTSET@sqlall='';SET@count=0;WHILE EXISTS(SELECT name FROM #temp)BEGINSELECT TOP1@id= id,@tbName=name FROM #temp;SET@colName=''SET@NcolName=''SET@sql=''--判断是否⾃增SELECT@count=count(1) from syscolumns where id=object_id(@tbName) and COLUMNPROPERTY(id,name,'IsIdentity')=1--PRINT(@count)--PRINT(@tbName)SELECT@colName=@colName+COLUMN_NAME+','FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=@tbNameSET@NcolName=subString(@colName,1,len(@colName)-1);IF(@count>0) SET@sql+='Set Identity_Insert '+@tbName+' on ';SET@sql+='insert into '+@tbName+'('+@NcolName+' )';SET@sql+='select '+@NcolName+' from [192.168.2.106].[数据库名称].[dbo].'+@tbName+'(NOLOCK) ';IF(@count>0) SET@sql+='Set Identity_Insert '+@tbName+' off ;';PRINT(@sql)--EXEC(@sql); --执⾏复制SET@sqlall+=''+@sql;DELETE FROM #temp WHERE id=@id;END--PRINT( @sqlall)View CodeSqlServer数据库表⽣成C# Model实体类SQL语句等常⽤sqlSELECT (case when a.colorder=1then else null end) 表名,a.colorder 字段序号, 字段名,(case when COLUMNPROPERTY( a.id,,'IsIdentity')=1then'√'else''end) 标识,(case when (SELECT count(*) FROM sysobjectsWHERE (name in (SELECT name FROM sysindexesWHERE (id = a.id) AND (indid in(SELECT indid FROM sysindexkeysWHERE (id = a.id) AND (colid in(SELECT colid FROM syscolumns WHERE (id = a.id) AND (name = )))))))AND (xtype ='PK'))>0then'√'else''end) 主键, 类型,a.length 占⽤字节数,COLUMNPROPERTY(a.id,,'PRECISION') as长度,isnull(COLUMNPROPERTY(a.id,,'Scale'),0) as⼩数位数,(case when a.isnullable=1then'√'else''end) 允许空,isnull(e.text,'') 默认值,isnull(g.[value], '') AS[说明]---------------,', { field: '''++''', title: '''+ISNULL( CAST(g.[value]as VARCHAR(max)),'') +''', sort: true }'AS[layui_JS],', { field: '''++''', title: '''+CASE WHEN g.[value]IS NULL THEN ELSE ISNULL( CAST( g.[value]AS VARCHAR(max)),'')END+''', sort: true '+CASE WHEN ='datetime'THEN', templet: function (d) { return LayuiDateToTime(d.ProductDate, ''yyyy-MM-dd HH:mm:ss'') }'WHEN ='date'THEN', templet: function (d) { return LayuiDateToTime(d.ProductDate, ''yyyy-MM-dd'') }'ELSE''END+'}'AS[layui_JS2],+'=_valveFeeModel.'++','AS[C#实体赋值],CASE WHEN ='datetime'OR ='date'THEN'laydate.render({ elem: ''#'++'_Min'', calendar: true, type: '''++''', trigger: ''click'' });laydate.render({ elem: ''#'++'_Max'', calendar: true, type: '''++''', trigger: ''click'' });laydate.render({ elem: ''#'++''', calendar: true, type: '''++''', trigger: ''click'' });'ELSE''END AS[layuid_JSdatetime],CASE WHEN ='datetime'OR ='date'THEN'<div class="layui-inline"><label class="layui-form-label">'+CASE WHEN g.[value]IS NULL THEN ELSE ISNULL( CAST( g.[value]AS VARCHAR(max)),'')END+'</label><div class="layui-input-inline"><input type="text" id="'++'_Min" name="'++'_Min" autocomplete="off" class="layui-input"/></div><div class="layui-form-mid">-</div><div class="layui-input-inline"><input type="text" id="'++'_Max" name="'++'_Max" autocomplete="off" class="layui-input"/></div></div>'ELSE' <div class="layui-inline"><label class="layui-form-label">'+CASE WHEN g.[value]IS NULL THEN ELSE ISNULL( CAST( g.[value]AS VARCHAR(max)),'')END+'</label><div class="layui-input-inline"><input type="text" name="'++'" id="'++'" autocomplete="off" class="layui-input" /></div></div>'END AS[HTML搜索框]--,'<div class="layui-form-item">-- <div class="layui-inline">-- <label class="layui-form-label">'+ CASE WHEN g.[value] IS NULL THEN ELSE ISNULL( CAST( g.[value] AS VARCHAR(max)),'')END +'</label>-- <div class="layui-input-inline">-- <input type="text" name="'++'" id="'++'" autocomplete="off" class="layui-input" />-- </div>-- </div>--</div>' AS [HTML搜索框],'<div class="layui-inline"><label class="layui-form-label">'+CASE WHEN g.[value]IS NULL THEN ELSE ISNULL( CAST( g.[value]AS VARCHAR(max)),'')END+'</label><div class="layui-input-inline"><select name="'++'" lay-search id="'++'"><option value="">请选择</option><% foreach (var item in _'++'Dic){ %><option value="<%=item.Key %>"><%=item.Value %></option><% } %></select></div></div>'AS[HTML搜索框_下拉],CASE WHEN ='datetime'OR ='date'THEN'if (!dic.ContainsKey("'++'") || !decimal.TryParse(dic["'++'"].paramValue, out amt))return "'+CASE WHEN g.[value]IS NULL THEN ELSE ISNULL( CAST( g.[value]AS VARCHAR(max)),'')END+'不能为空";'WHEN ='int'OR ='smallint'OR ='tinyint'THEN'if (!dic.ContainsKey("'++'") || !int.TryParse(dic["'++'"].paramValue, out id))return "'+CASE WHEN g.[value]IS NULL THEN ELSE ISNULL( CAST( g.[value]AS VARCHAR(max)),'')END+'不能为空";'WHEN ='bigint'THEN'if (!dic.ContainsKey("'++'") || !long.TryParse(dic["'++'"].paramValue, out longid))return "'+CASE WHEN g.[value]IS NULL THEN ELSE ISNULL( CAST( g.[value]AS VARCHAR(max)),'')END+'不能为空";'WHEN ='decimal'THEN'if (!dic.ContainsKey("'++'") || !decimal.TryParse(dic["'++'"].paramValue, out decimalid))return "'+CASE WHEN g.[value]IS NULL THEN ELSE ISNULL( CAST( g.[value]AS VARCHAR(max)),'')END+'不能为空";'ELSE'if (!dic.ContainsKey("'++'"))return "'+CASE WHEN g.[value]IS NULL THEN ELSE ISNULL( CAST( g.[value]AS VARCHAR(max)),'')END+'不能为空";'END AS[C#检查]FROM syscolumns aleft join systypes b on a.xtype=b.xusertypeinner join sysobjects d on a.id=d.id and d.xtype='U'and <>'dtproperties'left join syscomments e on a.cdefault=e.idleft join sys.extended_properties g on a.id=g.major_id AND a.colid=g.minor_idleft join sys.extended_properties f on d.id=f.class and f.minor_id=0where is not null--and in('Doc_VaseAudit','ValveFeeDetail','ValveFee','LogTrade','CompBalance','ValveFeeConfig') --如果只查询指定表,加上此条件--order by a.id,a.colorderORDER BY a.id,a.colorder-----------------------------------------------------------------------------------------------\\\--SELECT (case when a.colorder=1 then else null end) 表名,--a.colorder 字段序号, 字段名,--(case when COLUMNPROPERTY( a.id,,'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 = )))))))--AND (xtype = 'PK'))>0 then '√' else '' end) 主键, 类型,a.length 占⽤字节数,--COLUMNPROPERTY(a.id,,'PRECISION') as 长度,--isnull(COLUMNPROPERTY(a.id,,'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--inner join sysobjects d on a.id=d.id and d.xtype='U' and <>'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 is not null----and in('','Doc_VaseAudit','') --如果只查询指定表,加上此条件----order by a.id,a.colorder--ORDER BY a.id,a.colorder----------------------------------------------------------------------添加备注--alter table t_system_rebatesetting add currency CHAR(3) null;--EXECUTE sp_addextendedproperty N'MS_Description', N'结算币种(如:CNY(默认),USD,HKD 等', N'user', N'dbo', N'table', N't_system_rebatesetting', N'column', N'currency'--alter table t_system_multirebatesetting add currency CHAR(3) null;--EXECUTE sp_addextendedproperty N'MS_Description', N'结算币种(如:CNY(默认),USD,HKD 等', N'user', N'dbo', N'table', N't_system_multirebatesetting', N'column', N'currency'--------更新备注----EXECUTE sp_updateextendedproperty N'MS_Description', N'操作类型(1:充值 2:订单⽀付 3:信⽤额度配置 4:销帐 5:订单拒单,6:订单取消 7:提现 8:订单退票)', N'user', N'dbo', N'table', N't_log_trade', N'column', N'tradetype'----EXECUTE sp_updateextendedproperty N'MS_Description', N'操作类型(1:充值 2:订单⽀付 3:信⽤额度配置 4:销帐 5:订单拒单,6:订单取消 7:提现 8:订单退票)', N'user', N'dbo', N'table', N't_log_optpricetrade', N'column', N'opttype'------C# 赋值---------------------------SELECT 'model.'+name+'=item.'+name +';'+CHAR(39)+CHAR(34)+CHAR(10)--FROM syscolumns--WHERE id in( SELECT id--FROM sysobjects--WHERE (name = 't_order'))--FOR XML PATH('')---------------查看表 --------------select object_name(id) tablename,8*reserved/1024 reserved,rtrim(8*dpages)+'kb' used,--8*(reserved-dpages)/1024 unused,8*dpages/1024-rows/1024*minlen/1024 free,rows--,'DBCC showcontig('''+object_name(id)+''')' ,'--DBCC DBREINDEX('''+object_name(id)+''')'--from sysindexes where indid<=1 order by rows desc---删除某列----------------------------ALTER TABLE 表名 DROP COLUMN 新列名----PowerDesigner导出SQL时如何添加注释---------------------------------https:///article/47a29f24652e44c0142399c3.html------------第⼀步,按“Database”>>“Edit Current DBMS..”--第⼆步,按“Script”>>“Object”>>“Column”>>“ColumnComment”打开,然后将value中的信息改成--EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'%COMMENT%' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'[%QUALIFIER%]%TABLE%', @level2type=N'COLUMN',@ --,最后点击“确定”,--表说明同理:--comment on table [%QUALIFIER%]%TABLE% is [%COMMENT%?--%.q:COMMENT%:null] "Table"=>"TableComment"改为:--EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'%COMMENT%' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'[%QUALIFIER%]%TABLE%', @level2type=null,@level2na ----PowerDesigner导出C#实体类(带备注)---------https:///shuai7boy/p/10219963.html------------.if (%isGenerated%) and (%isValidAttribute%)--/// \<summary\>--/// [%Name%\n]\--/// \</summary\>--[%oidDocTag%\n]\--[%customAttributes%\n]\-- .if (%Multiple% == false) and (%isIndexer% == false)--[%visibility% ][%flags% ]%dataType%--.convert_name(%fieldCode%,,"_",FirstUpperChar)-- { get; set; } [ = %InitialValue%;]-- .else--[%visibility% ][%flags% ]%dataType%[%arraySize%]--.convert_name(%fieldCode%,,"_",FirstUpperChar)-- { get; set; } [ = %InitialValue%;]-- .endif--.endif-----------------------------------------------------------------------------------------------------1、sqlserver⽤语句给表注释--EXECUTE sp_addextendedproperty N'MS_Description', N'表注释', N'user', N'dbo', N'table', N'表名', NULL, NULL--2、sqlserver⽤语句给表的“字段”注释--EXECUTE sp_addextendedproperty N'MS_Description', N'字段注释', N'user', N'dbo', N'table', N'表名', N'column', N'字段名'--3、查看sqlserver注释--SELECT AS table_name, AS column_name,--C.value AS column_description--FROM sys.tables A--INNER JOIN sys.columns B ON B.object_id = A.object_id--LEFT JOIN sys.extended_properties C ON C.major_id = B.object_id AND C.minor_id = B.column_id--WHERE = '表名'----------SqlServer数据库表⽣成C# Model实体类SQL语句--------------- 使⽤临时表(遍历表名称,进⾏⽣成model-- 创建临时表IF OBJECT_ID('tempdb.dbo.#tempTable','U') IS NOT NULLDROP TABLE dbo.#tempTable;GO--SELECT * FROM sys.tables ---遍历表名称SELECT*INTO dbo.#tempTableFROM sys.tables WHERE1=1--AND name IN('') --指定表名称--SELECT * FROM dbo.#tempTable;-- 声明变量declare@TableName sysname ;declare@Result varchar(max);SET@Result='';--循环WHILE EXISTS(SELECT name FROM dbo.#tempTable)BEGIN-- 也可以使⽤top 1SELECT TOP1@TableName= name FROM dbo.#tempTable;--逻辑处理beginSET@Result+='/// <summary>/// '+@TableName+'/// </summary>public class '+@TableName+'{'select@Result=@Result+'/// <summary>/// '+CONVERT(NVARCHAR(500), ISNULL(ColName, '⽆')) +'/// </summary>public '+ ColumnType + NullableSign +''+ ColumnName +' { get; set; }'from(SELECTreplace(, '', '_') ColumnName,column_id ColumnId,prop.value ColName,case when'bigint'then'long'when'binary'then'byte[]'when'bit'then'bool'when'char'then'string'when'date'then'DateTime'when'datetime'then'DateTime'when'datetime2'then'DateTime'when'datetimeoffset'then'DateTimeOffset'when'decimal'then'decimal'when'float'then'float'when'image'then'byte[]'when'int'then'int'when'money'then'decimal'when'nchar'then'char'when'ntext'then'string'when'numeric'then'decimal'when'nvarchar'then'string'when'real'then'double'when'smalldatetime'then'DateTime'when'smallint'then'short'when'smallmoney'then'decimal'when'text'then'string'when'time'then'TimeSpan'when'timestamp'then'DateTime'when'tinyint'then'byte'when'uniqueidentifier'then'Guid'when'varbinary'then'byte[]'when'varchar'then'string'else'UNKNOWN_'+ end ColumnType,casewhen col.is_nullable =1and in ('bigint', 'bit', 'date', 'datetime', 'datetime2', 'datetimeoffset', 'decimal', 'float', 'int', 'money', 'numeric', 'real', 'smalldatetime', 'smallint', 'smallmoney', 'time', 'tinyint', 'uniqueidentifier') then'?'else''end NullableSignfrom sys.columns coljoin sys.types typ oncol.system_type_id = typ.system_type_id AND er_type_id = er_type_idLEFT JOIN sys.extended_properties prop ON col.object_id= prop.major_id AND col.column_id = prop.minor_idwhere object_id=object_id(@TableName)) t--order by ColumnIdset@Result=@Result+'}'--逻辑处理endDELETE FROM dbo.#tempTable WHERE name=@TableName; --删除临时表中已处理数据ENDSELECT@Resultprint@ResultView CodeC#将集合若⼲组(分页)///<summary>///将集合若⼲组///</summary>///<param name="source">数据集</param>///<param name="pageSize">每⼀组⼤⼩</param>private List<List<T>> SpliteSourceBySize<T>(List<T> source, int pageSize) where T : class, new() {// 计算组数List<List<T>> pages = new List<List<T>>();//页码 0也就是第⼀条int pageNum = 0;while (pageNum * pageSize < source.Count){//分页var query = source.Skip(pageNum * pageSize).Take(pageSize).ToList();pages.Add(query);pageNum++;}return pages;}View Code。
pg查询表结构的sql语句
pg查询表结构的sql语句你想要查询PostgreSQL 数据库中某张表的表结构和字段信息。
可以通过以下步骤实现:1.连接到PostgreSQL 数据库服务器,并切换到所需的数据库。
2.执行SQL 查询语句,查看当前实例下的表以及它们的名称。
3.执行SQL 查询语句,查看指定表的结构和字段信息。
以下是每个步骤的详细说明:1.首先,连接到PostgreSQL 数据库服务器。
可以使用以下命令:psql -h <host> -U <username> -d <database>其中,是数据库服务器的主机名或IP 地址,是连接数据库的用户名,是要连接的数据库名称。
在连接成功后,可以使用以下命令切换到所需的数据库:\c <database>其中,是要连接的数据库名称。
1.执行SQL 查询语句,查看当前实例下的表以及它们的名称。
有两种方法可以实现:•使用psql 命令的命令。
该命令将显示当前实例下的所有表的名称。
例如:\d•使用SQL 查询语句。
该语句将显示当前实例下的所有表的名称。
例如:SELECT tablename FROM pg_tables;1.执行SQL 查询语句,查看指定表的结构和字段信息。
可以使用以下SQL查询语句:SELECT a.attnum, a.attname AS field, t.typname AS type, a.attlen AS length, a.atttypmod AS lengthvar, a.attnotnull AS notnull, b.description AS commentFROM pg_class c, pg_attribute aLEFT JOIN pg_description bON a.attrelid = b.objoidAND a.attnum = b.objsubid, pg_type tWHERE c.relname = '<table_name>'AND a.attnum > 0AND a.attrelid = c.oidAND a.atttypid = t.oidORDER BY a.attnum;其中,是要查询的表的名称。
查询表结构的sql语句
查询表结构的sql语句查询表结构的SQL语句是用来查看数据库中表的结构信息的命令。
通过执行这些SQL语句,可以获取表的字段、数据类型、约束、索引等详细信息。
下面列举了十个常用的查询表结构的SQL语句。
1. 查询指定表的所有字段和数据类型```sqlDESCRIBE table_name;```这条SQL语句将返回指定表的字段名、数据类型、是否允许为空、默认值等信息。
2. 查询指定表的所有字段和约束```sqlSHOW CREATE TABLE table_name;```这条SQL语句将返回指定表的字段名、数据类型、主键、外键、唯一约束等详细信息。
3. 查询指定表的主键```sqlSHOW KEYS FROM table_name WHERE Key_name = 'PRIMARY';```这条SQL语句将返回指定表的主键字段名。
4. 查询指定表的外键```sqlSELECTCONSTRAINT_NAME,COLUMN_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAMEFROMINFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERETABLE_NAME = 'table_name' ANDREFERENCED_TABLE_NAME IS NOT NULL;```这条SQL语句将返回指定表的外键约束名称、字段名、引用的表名和字段名。
5. 查询指定表的索引```sqlSHOW INDEX FROM table_name;```这条SQL语句将返回指定表的索引名称、索引类型、字段名等信息。
6. 查询指定表的注释```sqlSELECTTABLE_NAME,COLUMN_NAME,COLUMN_COMMENTFROMINFORMATION_SCHEMA.COLUMNSWHERETABLE_SCHEMA = 'database_name' ANDTABLE_NAME = 'table_name';```这条SQL语句将返回指定表的字段注释。
sql 查表结构
sql 查表结构要查询表结构,我们需要使用SQL语句中的一些特定的关键字和函数。
下面将逐步介绍如何查询表结构的各个方面。
我们可以使用"DESC"关键字来查询表的字段信息。
例如,我们想要查询名为"users"的表的字段信息,可以使用以下SQL语句:```DESC users;```这将返回一个结果集,包含表的字段名、数据类型、是否为NULL 等信息。
通过这些信息,我们可以了解表中的字段及其属性。
除了使用"DESC"关键字,我们还可以使用"SHOW COLUMNS"关键字来查询表的字段信息。
例如,我们想要查询名为"users"的表的字段信息,可以使用以下SQL语句:```SHOW COLUMNS FROM users;```这将返回与"DESC"关键字相同的结果集,包含表的字段名、数据类型、是否为NULL等信息。
除了查询表的字段信息,我们还可以查询表的约束信息。
例如,我们想要查询名为"users"的表的主键信息,可以使用以下SQL语句:```SHOW INDEX FROM users WHERE Key_name = 'PRIMARY';```这将返回一个结果集,包含表的主键字段及其约束信息。
通过这些信息,我们可以了解表的主键字段以及主键的名称、类型等信息。
除了查询主键信息,我们还可以查询表的索引信息。
例如,我们想要查询名为"users"的表的索引信息,可以使用以下SQL语句:```SHOW INDEX FROM users;```这将返回一个结果集,包含表的索引字段及其相关信息。
通过这些信息,我们可以了解表的索引字段以及索引的名称、类型等信息。
除了查询字段、约束和索引信息,我们还可以查询表的外键信息。
例如,我们想要查询名为"users"的表的外键信息,可以使用以下SQL语句:```SELECTCONSTRAINT_NAME,COLUMN_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAMEFROMINFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERETABLE_NAME = 'users' ANDREFERENCED_TABLE_NAME IS NOT NULL;```这将返回一个结果集,包含表的外键字段及其相关信息。
用sql命令查看表结构
⽤sql命令查看表结构⽤sql命令查看表结构可以使⽤内置的存储过程sp_MShelpcolumns。
如查询表Tabel1的结构:sp_MShelpcolumns 'dbo.Tabel1'元数据简介元数据 (metadata) 最常见的定义为"有关数据的结构数据",或者再简单⼀点就是"关于数据的信息",⽇常⽣活中的图例、图书馆⽬录卡和名⽚等都可以看作是元数据。
在关系型数据库管理系统 (DBMS) 中,元数据描述了数据的结构和意义。
⽐如在管理、维护 SQL Server 或者是开发数据库应⽤程序的时候,我们经常要获取⼀些涉及到数据库架构的信息:某个数据库中的表和视图的个数以及名称;某个表或者视图中列的个数以及每⼀列的名称、数据类型、长度、精度、描述等;某个表上定义的约束;某个表上定义的索引以及主键/外键的信息。
下⾯我们将介绍⼏种获取元数据的⽅法。
获取元数据使⽤系统存储过程与系统函数访问元数据获取元数据最常⽤的⽅法是使⽤ SQL Server 提供的系统存储过程与系统函数。
系统存储过程与系统函数在系统表和元数据之间提供了⼀个抽象层,使得我们不⽤直接查询系统表就能获得当前数据库对象的元数据。
常⽤的与元数据有关的系统存储过程有以下⼀些:系统存储过程描述sp_columns 返回指定表或视图的列的详细信息。
sp_databases 返回当前服务器上的所有数据库的基本信息。
sp_fkeys 若参数为带有主键的表,则返回包含指向该表的外键的所有表;若参数为带有外键的表名,则返回所有同过主键/外键关系与该外键相关联的所有表。
sp_pkeys 返回指定表的主键信息。
sp_server_info 返回当前服务器的各种特性及其对应取值。
sp_sproc_columns 返回指定存储过程的的输⼊、输出参数的信息。
sp_statistics 返回指定的表或索引视图上的所有索引以及统计的信息。
MSSQL查询表结构
MSSQL查询表结构查询表格结构,表名,字段名,字段长度,描述,是否为空,是否为主键等--快速查看表结构(⽐较全⾯的)SELECT CASE WHEN col.colorder = 1 THEN ELSE ''END AS 表名,col.colorder AS 序号 , AS 列名 ,ISNULL(ep.[value], '') AS 列说明 , AS 数据类型 ,col.length AS 长度 ,ISNULL(COLUMNPROPERTY(col.id, , 'Scale'), 0) AS ⼩数位数 ,CASE WHEN COLUMNPROPERTY(col.id, , 'IsIdentity') = 1 THEN '√'ELSE ''END AS 标识 ,CASE WHEN EXISTS ( SELECT 1FROM dbo.sysindexes siINNER JOIN dbo.sysindexkeys sik ON si.id = sik.idAND si.indid = sik.indidINNER JOIN dbo.syscolumns sc ON sc.id = sik.idAND sc.colid = sik.colidINNER JOIN dbo.sysobjects so ON = AND so.xtype = 'PK'WHERE sc.id = col.idAND sc.colid = col.colid ) THEN '√'ELSE ''END AS 主键 ,CASE WHEN col.isnullable = 1 THEN '√'ELSE ''END AS 允许空 ,ISNULL(comm.text, '') AS 默认值FROM dbo.syscolumns colLEFT JOIN dbo.systypes t ON col.xtype = t.xusertypeinner JOIN dbo.sysobjects obj ON col.id = obj.idAND obj.xtype = 'U'AND obj.status >= 0LEFT JOIN dbo.syscomments comm ON col.cdefault = comm.idLEFT JOIN sys.extended_properties ep ON col.id = ep.major_idAND col.colid = ep.minor_idAND = 'MS_Description'LEFT JOIN sys.extended_properties epTwo ON obj.id = epTwo.major_idAND epTwo.minor_id = 0AND = 'MS_Description'WHERE = 'Table_Name'--表名ORDER BY col.colorder ;。
达梦数据库查询表结构
达梦数据库查询表结构达梦数据库(DM)是国产关系型数据库管理系统,具有高性能、高可靠性和高安全性等特点。
在进行数据库查询时,需要了解相关表的结构,以便正确地执行查询操作。
一、查询表结构的SQL语句1. 查询指定表的表结构:```desc 表名;```该语句会返回表的字段名、字段类型、字段长度等信息,以及主键、外键约束等相关信息。
2. 查询指定表的字段名:```select COLUMN_NAME fromINFORMATION_SCHEMA.COLUMNS where TABLE_NAME = '表名';```这条语句会返回该表的所有字段名,可用于了解表的字段结构。
3. 查询指定表的字段类型:```select COLUMN_NAME, DATA_TYPE from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = '表名';```这个语句不仅返回字段名,还返回字段的数据类型,有助于理解数据库存储的数据格式。
4. 查询指定表的主键信息:```select COLUMN_NAME fromINFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = '表名' and CONSTRAINT_NAME = '主键约束名称';```该语句用于返回指定表的主键字段名,如果不知道主键约束名称,可以省略该条件,返回该表的全部主键字段。
5. 查询指定表的外键信息:```select * fromINFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS where TABLE_NAME = '表名';```这条语句会返回指定表的外键信息,包括外键字段、关联的主键表、对应的主键字段等。
二、查询表结构的结果解释1. 字段名(COLUMN_NAME):表示数据库表的字段名称。
查询表结构sql
查询表结构SQL1. 介绍在关系型数据库中,表结构是指表中的字段、数据类型、约束等元数据信息。
查询表结构SQL是一条用于查询表的结构信息的SQL语句。
通过执行这条SQL语句,可以获取表中各个字段的名称、数据类型、长度、约束等详细信息,以及表的索引、主键、外键等结构信息。
本文将深入探讨查询表结构SQL的使用方法和注意事项。
2. 查询表结构SQL语句查询表结构SQL语句的具体语法和用法在不同的数据库系统中可能会有所区别。
以下是一些常见数据库系统中查询表结构的SQL语句示例:2.1 MySQL在MySQL中,可以使用DESC关键字查询表结构。
例如,要查询表employees的结构,可以执行以下SQL语句:DESC employees;2.2 Oracle在Oracle数据库中,可以使用DESCRIBE关键字查询表结构。
例如,要查询表employees的结构,可以执行以下SQL语句:DESCRIBE employees;2.3 SQL Server在SQL Server中,可以使用sp_help存储过程查询表结构。
例如,要查询表employees的结构,可以执行以下SQL语句:EXEC sp_help 'employees';2.4 PostgreSQL在PostgreSQL中,可以使用\d+命令查询表结构。
例如,要查询表employees的结构,可以执行以下SQL语句:\d+ employees;3. 查询结果解析执行查询表结构SQL语句后,将会返回一个表格,其中包含了表的各个字段的详细信息。
以下是一些常见的表结构信息解析示例:3.1 字段名称查询结果的第一列通常是字段名称,表示表中的字段名。
例如,对于表employees,查询结果可能如下所示:Fieldidnameagesalary3.2 数据类型查询结果的第二列通常是字段的数据类型,表示该字段存储的数据类型。
例如,对于表employees,查询结果可能如下所示:Field Typeid INTname VARCHAR(50)age INTsalary DECIMAL(10,2)3.3 字段约束查询结果的第三列通常是字段的约束信息,表示该字段的约束条件。
查询表结构sql
查询表结构sql一、概述在进行数据库开发和管理时,查询表结构的SQL语句是非常重要的工具。
通过查询表结构,可以了解表的字段、类型、约束等信息,方便进行数据操作和维护。
本文将介绍如何使用SQL语句查询表结构。
二、基本语法查询表结构的SQL语句主要包括两部分:选择需要查询的列和指定需要查询的表。
具体语法如下:SELECT column_name(s) FROM table_name;其中,column_name(s)为需要查询的列名,可以使用通配符“*”表示所有列;table_name为需要查询的表名。
三、常用命令1. 查询所有列当需要查看一个表中所有列时,可以使用以下命令:SELECT * FROM table_name;其中,“*”表示所有列,table_name为需要查询的表名。
2. 查询单个列当只需查看一个特定列时,可以使用以下命令:SELECT column_name FROM table_name;其中,column_name为需要查询的列名,table_name为需要查询的表名。
3. 查询多个列当需要查看多个特定列时,可以使用以下命令:SELECT column1, column2, …… FROM table_name;其中,column1, column2, ……为需要查询的多个列名,table_name 为需要查询的表名。
4. 查询带有条件限制的结果集当只需查看符合某些条件限制的结果集时,可以使用以下命令:SELECT * FROM table_name WHERE condition;其中,condition为需要符合的条件限制,可以使用运算符(如“>”, “<”, “=”, “LIKE”等)来指定。
四、进阶用法1. 查询表结构除了基本命令外,还可以使用以下命令查询表结构:DESC table_name;其中,table_name为需要查询的表名。
该命令将返回表的字段、类型、约束等信息。
sql 查询表字段说明
sql 查询表字段说明SQL 查询表字段说明在进行数据库操作时,经常需要了解表的结构,包括字段名、数据类型、约束等信息。
在SQL中,使用查询语句可以方便地获取表字段的说明。
下面是关于SQL查询表字段说明的一些常用方法:1. DESC命令DESC命令是MySQL数据库中用于查询表结构的命令。
通过DESC 命令可以获取表中各个字段的名称、类型、长度、是否允许为空以及默认值等信息。
下面是使用DESC命令查询表字段说明的基本语法:DESC 表名;例如,下面是查询表”employee”的字段说明:DESC employee;结果会显示出表”employee”中每个字段的名称、数据类型、是否允许为空、键类型等信息。
2. SHOW COLUMNS命令SHOW COLUMNS命令也是用于查询表结构的命令,它可以获取表中各个字段的详细信息,包括字段名、数据类型、是否允许为空、键类型、默认值、额外信息等。
下面是使用SHOW COLUMNS命令查询表字段说明的基本语法:SHOW COLUMNS FROM 表名;例如,下面是查询表”employee”的字段说明:SHOW COLUMNS FROM employee;结果会显示出表”employee”中每个字段的详细信息,包括字段名、数据类型、是否允许为空、键类型、默认值、额外信息等。
3. INFORMATION_SCHEMA数据库在MySQL中,INFORMATION_SCHEMA是一个包含了数据库元数据的数据库,我们可以通过查询INFORMATION_SCHEMA来获取表的字段说明信息。
下面是使用INFORMATION_SCHEMA查询表字段说明的基本语法:SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_ DEFAULTFROM INFORMATION_WHERE TABLE_NAME = '表名';例如,下面是查询表”employee”的字段说明:SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_ DEFAULTFROM INFORMATION_WHERE TABLE_NAME = 'employee';结果会显示出表”employee”中每个字段的名称、数据类型、是否允许为空以及默认值等信息。
oracle查询表结构sql语句
oracle查询表结构sql语句1. 查询表结构的SQL语句在Oracle数据库中,可以使用以下SQL语句查询表的结构信息:1.1. 查询所有表的结构```SELECT owner, table_name, column_name, data_type, data_length, nullableFROM all_tab_columnsORDER BY owner, table_name, column_id;```该语句会返回所有表的所有列的结构信息,包括所属用户(owner)、表名(table_name)、列名(column_name)、数据类型(data_type)、数据长度(data_length)和是否可为空(nullable)等。
1.2. 查询指定表的结构```SELECT column_name, data_type, data_length, nullableFROM all_tab_columnsWHERE owner = 'SCHEMA_NAME' AND table_name = 'TABLE_NAME' ORDER BY column_id;```将上述语句中的'SCHEMA_NAME'替换为要查询表所属的用户,'TABLE_NAME'替换为要查询的表名,可以获取指定表的结构信息。
1.3. 查询表的主键信息```SELECT cols.table_name, cols.column_name, cons.constraint_nameFROM all_constraints cons, all_cons_columns colsWHERE cons.constraint_type = 'P'AND cons.constraint_name = cols.constraint_nameAND cons.owner = cols.ownerAND cols.table_name = 'TABLE_NAME'AND cols.owner = 'SCHEMA_NAME';```将上述语句中的'SCHEMA_NAME'替换为要查询表所属的用户,'TABLE_NAME'替换为要查询的表名,可以获取指定表的主键信息。
sql查表结构语句
sql查表结构语句SQL(Structured Query Language)是一种用于在关系型数据库管理系统中进行数据操作和查询的编程语言。
在SQL中,可以使用一系列的语句来查看和操作表的结构信息。
下面是一些常用的SQL语句来查看表的结构信息:1. DESC语句:DESC是DESCRIBE的缩写,用于查看表的列信息。
语法如下:```DESC table_name;```这条语句将返回表的列名、数据类型、长度以及其他相关属性。
2. SHOW COLUMNS语句:SHOW COLUMNS用于显示表的列信息,包括列名、数据类型、是否允许为空、默认值等。
语法如下:```SHOW COLUMNS FROM table_name;```3. SHOW TABLES语句:SHOW TABLES用于显示数据库中所有的表名称。
语法如下:```SHOW TABLES;```4. SHOW CREATE TABLE语句:SHOW CREATE TABLE语句可以显示创建表的完整语句,包括表名、列信息、索引、外键等。
语法如下:```SHOW CREATE TABLE table_name;```这条语句将返回一个CREATE TABLE语句的字符串,其中包含了创建该表的所有信息。
5. SELECT语句:使用SELECT语句可以从表中查询数据,并通过查询结果来获取表的结构信息。
语法如下:```SELECT * FROM table_name LIMIT 0;```上述语句将返回一个空的结果集,但是它会包含表的列名和数据类型信息。
除了以上的常用语句之外,不同的数据库管理系统还提供了其他的方式来查看表结构信息。
例如,MySQL提供了INFORMATION_SCHEMA数据库,其中包含了关于数据库、表、列、索引等的详细信息,可以使用SELECT语句查询该数据库以获取表结构的信息。
总结起来,SQL中有多种方式来查看表结构信息,包括DESC、SHOW COLUMNS、SHOW TABLES、SHOW CREATE TABLE和SELECT等语句。
SQL结构化查询语句
SQL结构化查询语句
SQL(Structured Query Language)是用于管理关系型数据库的标准化语言。
它包含了各种结构化查询语句,用于执行数据库操作。
常见的结构化查询语句包括:
1.SELECT语句:用于从数据库中检索数据。
例如:SELECT*FROM表名;
2.INSERT语句:用于向数据库中插入新的数据。
例如:INSERTINTO表名(列1,列2)VALUES(值1,值2);
3.UPDATE语句:用于更新数据库中的数据。
例如:UPDATE表名SET列名=值WHERE条件;
4.DELETE语句:用于删除数据库中的数据。
例如:DELETEFROM表名WHERE条件;
5.CREATETABLE语句:用于创建表格。
例如:CREATETABLE表名(列1数据类型,列2数据类型,...);
6.ALTERTABLE语句:用于修改表格结构。
例如:ALTERTABLE表名ADD列名数据类型;
7.DROPTABLE语句:用于删除表格。
例如:DROPTABLE表名;
这些是SQL中的常见结构化查询语句,通过使用这些语句可以对数据库进行增删改查等操作。
不同的数据库管理系统可能会稍有差异,但基本的语法和功能是相似的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
--新建一张表后,会将所有与表有关的信息写入该数据库下面的某张系统表, sysobjects, syscolumns, systypes 是其中三张SELECT as 表名, as 表列名,SC.colid as 索引, as 类型FROMsysobjects SO, -- 对象表syscolumns SC, -- 列名表systypes ST -- 数据类型表WHERESO.id = SC.idAND SO.xtype = 'U' -- 类型U表示表,V表示视图AND SO.status >= 0 --加一个条件:SO.status >= 0,否则会将系统的临时表显示出来AND SC.xtype = ST.xusertypeORDER BY, SC.colorder -- 按表名、列名排序-----------------------------------------------------------------------------------------SELECT 表名, 表列名,SC.colid 索引, 类型FROMsysobjects SO, -- 对象表syscolumns SC, -- 列名表systypes ST -- 数据类型表 CliqueClientWHERESO.id = SC.idAND SO.xtype = 'U' -- 类型U表示表,V表示视图AND SO.status >= 0 -- status >= 0 为非系统对象AND SC.xtype = ST.xusertypeAND = 'CliqueClient' -- 某张特定表ORDER BY, SC.colorder -- 按表名、列名排序查询指定数据表中的所有列的列名:SELECT name FROM syscolumnsWHERE id = object_id('Your Table Name')ORDER BY colorder查询指定数据表中的所有列的列名和数据类型名:SELECT AS ColumnName, AS ColumnType FROM syscolumns CLEFT JOIN systypes T ON C.xusertype = T.xusertype WHERE C.id = object_id('Your Table Name')索引及主键信息SelectTableId=O.[object_id],TableName=,IndexId=ISNULL(KC.[object_id],IDX.index_id),IndexName=,IndexType=ISNULL(KC.type_desc,'Index'),Index_Column_id=IDXC.index_column_id,ColumnID=C.Column_id,ColumnName=,Sort=CASE INDEXKEY_PROPERTY(IDXC.[object_id],IDXC. index_id,IDXC.index_column_id,'IsDescending')WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END, PrimaryKey=CASE WHEN IDX.is_primary_key=1 THEN N'√'ELSE N'' END,[UQIQUE]=CASE WHEN IDX.is_unique=1 THEN N'√'ELSE N'' END,Ignore_dup_key=CASE WHEN IDX.ignore_dup_key=1 TH EN N'√'ELSE N'' END,Disabled=CASE WHEN IDX.is_disabled=1 THEN N'√'ELSE N'' END,Fill_factor=IDX.fill_factor,Padded=CASE WHEN IDX.is_padded=1 THEN N'√'ELSE N' ' ENDFROM sys.indexes IDXINNER JOIN sys.index_columns IDXCON IDX.[object_id]=IDXC.[object_id]AND IDX.index_id=IDXC.index_idLEFT JOIN sys.key_constraints KCON IDX.[object_id]=KC.[parent_object_id]AND IDX.index_id=KC.unique_index_idINNER JOIN sys.objects OON O.[object_id]=IDX.[object_id]INNER JOIN sys.columns CON O.[object_id]=C.[object_id]AND O.type='U'AND O.is_ms_shipped=0AND IDXC.Column_id=C.Column_id-- INNER JOIN -- 对于一个列包含多个索引的情况,只显示第1个索引信息-- (-- Select [object_id], Column_id, index_id=MIN(index_i d)-- FROM sys.index_columns-- GROUP BY [object_id], Column_id-- ) IDXCUQ-- ON IDXC.[object_id]=IDXCUQ.[object_id]-- AND IDXC.Column_id=IDXCUQ.Column_id--表结构信息查询SelectTableName=CASE WHEN C.column_id=1 THEN E LSE N'' END,TableDesc=ISNULL(CASE WHEN C.column_id=1 THEN PT B.[value] END,N''),Column_id=C.column_id,ColumnName=,PrimaryKey=ISNULL(IDX.PrimaryKey,N''),[IDENTITY]=CASE WHEN C.is_identity=1 THEN N'√'ELSE N'' END,Computed=CASE WHEN C.is_computed=1 THEN N'√'ELS E N'' END,Type=,Length=C.max_length,Precision=C.precision,Scale=C.scale,NullAble=CASE WHEN C.is_nullable=1 THEN N'√'ELSE N'' END,[Default]=ISNULL(D.definition,N''),ColumnDesc=ISNULL(PFD.[value],N''),IndexName=ISNULL(IDX.IndexName,N''),IndexSort=ISNULL(IDX.Sort,N''),Create_Date=O.Create_Date,Modify_Date=O.Modify_dateFROM sys.columns CINNER JOIN sys.objects OON C.[object_id]=O.[object_id]AND O.type='U'AND O.is_ms_shipped=0INNER JOIN sys.types TON er_type_id=er_type_idLEFT JOIN sys.default_constraints DON C.[object_id]=D.parent_object_idAND C.column_id=D.parent_column_idAND C.default_object_id=D.[object_id]LEFT JOIN sys.extended_properties PFDON PFD.class=1AND C.[object_id]=PFD.major_idAND C.column_id=PFD.minor_id-- AND ='Caption' -- 字段说明对应的描述名称(一个字段可以添加多个不同name的描述)LEFT JOIN sys.extended_properties PTBON PTB.class=1AND PTB.minor_id=0AND C.[object_id]=PTB.major_id-- AND ='Caption' -- 表说明对应的描述名称(一个表可以添加多个不同name的描述)LEFT JOIN -- 索引及主键信息(SelectIDXC.[object_id],IDXC.column_id,Sort=CASE INDEXKEY_PROPERTY(IDXC.[object_id], IDXC.index_id,IDXC.index_column_id,'IsDescending')WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE ' ' END,PrimaryKey=CASE WHEN IDX.is_primary_key=1 TH EN N'√'ELSE N'' END,IndexName=FROM sys.indexes IDXINNER JOIN sys.index_columns IDXCON IDX.[object_id]=IDXC.[object_id]AND IDX.index_id=IDXC.index_idLEFT JOIN sys.key_constraints KCON IDX.[object_id]=KC.[parent_object_id]AND IDX.index_id=KC.unique_index_idINNER JOIN -- 对于一个列包含多个索引的情况,只显示第1个索引信息(Select [object_id], Column_id, index_id=MIN(index _id)FROM sys.index_columnsGROUP BY [object_id], Column_id) IDXCUQON IDXC.[object_id]=IDXCUQ.[object_id]AND IDXC.Column_id=IDXCUQ.Column_idAND IDXC.index_id=IDXCUQ.index_id) IDXON C.[object_id]=IDX.[object_id]AND C.column_id=IDX.column_id-- Where =N'要查询的表' -- 如果只查询指定表,加上此条件orDER BY ,C.column_id。