ASP.net , C#, and VB.net , and Java, and SQL

coding and testing

博客园 首页 新随笔 联系 订阅 管理

http://www.cnblogs.com/sandy_liao/admin/EditPosts.aspx?opt=1

0.查询表字段的标题备注

View Code
1 SELECT  A.COLID, UPPER(A.NAME) AS NAME,ISNULL(C.VALUE,A.NAME) AS REMARK , UPPER(B.NAME) AS DATATYPE,
2   (CASE WHEN A.XPREC=0 THEN A.LENGTH ELSE A.XPREC ENDAS XPREC,
3   A.XSCALE, A.ISNULLABLE,A.CDEFAULT
4  FROM SYSCOLUMNS A INNER JOIN SYSTYPES B 
5 ON (A.XTYPE=B.XTYPE) LEFT JOIN SYS.extended_properties C ON (A.ID=C.MAJOR_ID and A.COLID=C.MINOR_ID)
6  WHERE A.ID= OBJECT_ID('TABLENAME')  ORDER BY A.COLID

1.查询出当前数据库的所有主键信息。

 

View Code
 1 SELECT A.parent_obj AS TABLEID,
 2        UPPER(E.NAME) AS TABLENAME,
 3        UPPER(A.NAME) AS INDEXNAME,
 4        UPPER(D.NAME) AS COLNAME,
 5        C.KEYNO AS COLNO,
 6        (SELECT TOP 1 KEYNO
 7           FROM sysindexkeys
 8          WHERE ID = B.ID
 9            AND INDID = B.INDID
10          ORDER BY KEYNO DESCAS KEYCNT
11   FROM sysobjects   A,
12        sysindexes   B,
13        sysindexkeys C,
14        syscolumns   D,
15        sysobjects   E
16  WHERE (A.xtype = 'PK')
17    AND (A.parent_obj = B.ID AND A.NAME = B.NAME)
18    AND (B.ID = C.ID AND B.INDID = C.INDID)
19    AND (C.ID = D.ID AND C.COLID = D.COLID)
20    AND (A.parent_obj = E.ID AND E.XTYPE = 'U' AND E.NAME <> 'dtproperties')
21  ORDER BY A.parent_obj, A.NAME 

 

 2.查询出当前数据库的所有索引名称及索引字段 ,不包含主键。

 

View Code
 1 SELECT X.*, Y.FIELDCNT
 2   FROM (SELECT A.id as tableid,
 3                object_name(A.id) as tablename,
 4                A.name AS INDNAME,
 5                B.INDID,
 6                C.COLID,
 7                C.NAME AS COLNAME
 8           FROM sysindexes A, sysindexkeys B, syscolumns C, sysobjects D
 9          where (A.indid > 0 and A.indid < 255 and (A.status &64= 0)
10            AND (A.ID = B.ID AND A.INDID = B.INDID)
11            AND (B.ID = C.ID AND B.COLID = C.COLID)
12            AND (C.ID = D.ID AND D.XTYPE = 'U' AND D.PARENT_OBJ = 0 AND
13                D.NAME <> 'dtproperties')
14            AND NOT EXISTS (SELECT 1
15                   FROM sysobjects
16                  WHERE XTYPE = 'PK'
17                    AND PARENT_OBJ > 0
18                    AND NAME = A.NAME)) X,
19        (SELECT ID, INDID, MAX(KEYNO) AS FIELDCNT
20           FROM sysindexkeys
21          GROUP BY ID, INDID) Y
22  WHERE X.tableid = Y.ID
23    AND X.INDID = Y.INDID
24  ORDER BY X.TABLEID, X.INDNAME, X.COLID

3.查询外键,约束,字段默认值。

 

View Code
 1 select (CASE a.xtype
 2          WHEN 'F' THEN
 3           '外键'
 4          WHEN 'C' THEN
 5           '约束'
 6          WHEN 'D' THEN
 7           '默认值'
 8        ENDAS lx,
 9        a.name AS name,
10        b.text
11   from sysobjects a
12   left outer join syscomments b on a.id = b.id
13  where (a.xtype IN ('C''F','D'))
14    AND (OBJECTPROPERTY(a.id, N'IsMSShipped'= 0)
15    and a.parent_obj = object_id('表名'

 

4.查询出所有的递增字段

 

View Code
1 select name, object_name(id) as tablename
2   from syscolumns
3  where COLUMNPROPERTY(id, name, 'IsIdentity'= 1

 

5.查询存储过程

View Code
1 select (CASE a.xtype
2          WHEN 'p' THEN
3           '存储过程'
4        endas lx,
5        a.name,
6        b.text
7   from sysobjects a
8   left outer join syscomments b on a.id = b.id
9  where xtype = 'p'

6.查询视图

 

 

View Code
1 select (CASE a.xtype
2          WHEN 'v' THEN
3           '视图'
4        endas lx,
5        a.name,
6        b.text
7   from sysobjects a
8   left outer join syscomments b on a.id = b.id
9  where xtype = 'v'

 

 

7.获取表的基本字段属性

 

View Code
1 SELECT syscolumns.name,
2        systypes.name,
3        syscolumns.isnullable,
4        syscolumns.length
5   FROM syscolumns, systypes
6  WHERE syscolumns.xusertype = systypes.xusertype
7    AND syscolumns.id = object_id('表名')

 

 

 

8.查询字段默认值。

 

View Code
1 select  a.XTYPE,   OBJECT_NAME(parent_obj) AS TABLENAME,D.NAME AS COLNAME,C.colid, b.TEXT,C.STATUS
2   from sysobjects a , syscomments B, sysconstraints C ,SYSCOLUMNS D 
3  where (a.xtype = 'D' AND OBJECTPROPERTY(a.id, N'IsMSShipped'= 0)
4    AND (A.id = B.id)
5    AND (A.ID=C.CONSTID AND A.parent_obj=C.ID AND C.status  = 2069)
6    AND (C.ID=D.ID AND C.COLID=D.COLID)
7    --and a.parent_obj = object_id('表名') 
8 ORDER BY A.parent_obj

 

9. 所有表信息

 

 

View Code
 1  SELECT   
 2     table_name=case when a.colorder=1 then d.name else '' end,  
 3     column_order=a.colorder,  
 4     column_name=a.name,  
 5     [IsIdentity]=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then ''else '' end,  
 6     [IsPrimaryKey]=case when exists(SELECT 1   
 7                                     FROM sysobjects   
 8                                     where xtype='PK' and name in (  
 9                                                SELECT name   
10                                                FROM sysindexes   
11                                                WHERE indid in(  
12                                                       SELECT indid   
13                                                       FROM sysindexkeys  
14                                                        WHERE id = a.id   
15                                                           AND colid=a.colid)))  
16                              then '' else '' end,  
17      column_datatype=b.name,  
18      [Length]=a.length,  
19      [PRECISION]=COLUMNPROPERTY(a.id,a.name,'PRECISION'),  
20      [Scale]=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),  
21      [IsNullable]=case when a.isnullable=1 then ''else '' end,  
22      [Default]=isnull(e.text,''
23      --, [Description]=isnull(g.[value],'')  
24 FROM syscolumns a  
25    left join systypes b   
26        on a.xtype=b.xusertype  
27    inner join sysobjects d   
28        on a.id=d.id    
29            and d.xtype='U'   
30            and  d.name<>'dtproperties' 
31    left join syscomments e   
32        on a.cdefault=e.id  
33    --left join sysproperties g   
34    --    on a.id=g.id   
35    --        and a.colid=g.smallid    
36 order by   
37     a.id,  
38     a.colorder 

 

posted on 2012-02-08 12:59  mr liao  阅读(134)  评论(0)    收藏  举报