SQL提取数据库表名、字段名等信息

-------在SQLserver 2000中测试

复制代码
-- 查询所有用户表所有字段的特征
SELECT D.Name  as TableName, A.colorder  AS ColOrder, A.name  AS Name,  
   COLUMNPROPERTY(A.ID,A.Name,  ' IsIdentity 'AS IsIdentity,  
   CASE  WHEN  EXISTS
  ( SELECT  1
   FROM dbo.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  1  ELSE  0  END  AS 主键,  
  B.name  AS 类型,
  A.length  AS  [ 长度 ],
  A.xprec  AS  [ 精度 ],
  A.xscale  AS  [ 小数 ],
   CASE  WHEN A.isnullable  =  1  THEN  1  ELSE  0  END  AS  [ 可为空 ],  
ISNULL(E. text'   'AS  [ 默认值 ],  
   ISNULL(G. [ value ]'   'AS  [ 说明 ]
FROM dbo.syscolumns A  LEFT  OUTER  JOIN
  dbo.systypes B  ON A.xtype  = B.xusertype  INNER  JOIN
  dbo.sysobjects D  ON A.id  = D.id  AND D.xtype  =  ' U '  AND  
  D.name  <>  ' dtproperties '  LEFT  OUTER  JOIN
  dbo.syscomments E  ON A.cdefault  = E.id 
   LEFT  OUTER  JOIN dbo.sysproperties G  ON A.id  = G.id  AND A.colid  = G.smallid
-- WHERE D.Name='tablename' --如果找指定表,把注释去掉
ORDER  BY  12
复制代码

 

------在SQLserver 2005中测试

复制代码
-- 查询所有用户表所有字段的特征
SELECT    
( case  when a.colorder = 1  then d.name  else  ''  endas 表名, -- 如果表名相同就返回空   
     a.colorder  as 字段序号,   
     a.name  as 字段名,   
     ( case  when  COLUMNPROPERTY( a.id,a.name,  ' IsIdentity ' ) = 1  then  ' '  else  ''  endas 标识,   
     ( 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  ''  endas 主键, -- 查询主键END   
b.name  as 类型,   
a.length  as 占用字节数,   
COLUMNPROPERTY(a.id,a.name, ' PRECISION ' )  as    长度,   
isnull( COLUMNPROPERTY(a.id,a.name, ' Scale ' ), 0as 小数位数,   
( case  when a.isnullable = 1  then  ' '  else  ''  endas 允许空,   
isnull(e. text, '' )  as 默认值,   
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 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    
      -- where d.name='PE_U_ValliMessage' --所要查询的表   
order  by a.id,a.colorder  
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 MySQL 中,你可以使用 `DESCRIBE` 或 `SHOW COLUMNS` 语句来查看表的字段名和数据类型。 例如,如果你的表名为 `mytable`,你可以使用如下的语句来查看表的字段名和数据类型: ``` DESCRIBE mytable; ``` 或者: ``` SHOW COLUMNS FROM mytable; ``` 这两个语句的作用相同,都可以用来查看表的字段名和数据类型。执行这个语句后,你将会得到一个结果集,包含表的字段名、数据类型、是否允许为 NULL、默认值等信息。 如果你使用 Python 的 MySQL Connector 来查询数据库,你可以使用 `cursor.description` 属性来获取查询结果的字段名和数据类型。例如: ``` cursor = cnx.cursor() sql = "SELECT * FROM mytable" cursor.execute(sql) result = cursor.fetchall() # 获取字段名和数据类型 columns = [desc[0] for desc in cursor.description] datatypes = [desc[1] for desc in cursor.description] # 打印字段名和数据类型 print("Columns:") print(columns) print("Data types:") print(datatypes) # 打印查询结果 for row in result: print(row) ``` 在这个示例中,我们首先执行了一个 `SELECT` 查询语句,然后使用 `cursor.description` 属性来获取查询结果的字段名和数据类型。注意,`cursor.description` 属性返回的是一个元组列表,每个元组包含字段的名称、数据类型、显示长度、精度、是否为 NULL 等信息。我们使用列表推导式从元组列表中提取字段名和数据类型,并分别保存到 `columns` 和 `datatypes` 变量中。最后,我们打印了查询结果的字段名、数据类型,以及查询结果本身。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值