列出SQL SERVER 資料庫所有表資訊的sql 語句

來源:互聯網
上載者:User
 1select 
 2     ( case when a.colorder = 1 then d.name else '' end ) 表名,
 3     a.colorder 欄位序號,
 4     a.name 欄位名,
 5     ( case when COLUMNPROPERTY (a.id,a.name,'isidentity') = 1 then '√' else '' end ) 標識,
 6     ( case when ( 
 7            select count(*) from sysobjects
 8                where name in (
 9                    select name from sysindexes
10                    where (id = a.id ) and ( indid in 
11                        (select indid from sysindexkeys where
12                            ( id = a.id ) and ( colid in (
13                                select colid from syscolumns
14                                    where ( id = a.id ) and ( name = a.name ))))))
15                    and ( xtype ='PK')) > 0 then '√' else '' end ) 主鍵,
16    b.name 類型,
17    a.length 位元組數,
18    COLUMNPROPERTY ( a.id,a.name ,'PRECISION' ) as 長度,
19    isnull ( COLUMNPROPERTY ( a.id,a.name ,'Scale'),0) as 小數位元,
20    (case when a.isnullable = 1 then '√' else '' end ) 允許空,
21    isnull ( e.text,'') 預設值,
22    isnull (g.[value],'' ) as 欄位說明
23from syscolumns a left join systypes b
24on a.xtype = b.xusertype
25inner join sysobjects d
26on a.id = d.id and d.xtype='U' and d.name <> 'dtproperties'
27left join syscomments e
28on a.cdefault = e.id
29left join sysproperties g
30on a.id = g.id and a.colid = g.smallid
31order by a.id ,a.colorder

從這個 sql 語句我學到的東西:
1、case when ... then ... else ... end  :選擇語句用在 select 語句中,可以將原來用0,1這樣的描述資訊,轉換為實際的含義,而不要在程式中根據查詢出來的結果再進行判斷。這個可以理解為簡單的資料格式化吧。如這條sql 語句中出現的 case when a.isnullable = 1 then '√' else '' end  將資料庫從儲存的 0,1 轉換為了 '√' 和'';

2、left join :使用這種串連方式可以使查詢結果描述出一種內含項目關聯性。

3、isnull 函數:ISNULL ( check_expression , replacement_value ) ,作用是使用指定的替換值替換 NULL,例如下面的 SQL 陳述式中如果一本書的名稱為 null ,則將價格設定為 0.00。

1SELECT SUBSTRING(title, 1, 15) AS Title, type AS Type, 
2   ISNULL(price, 0.00) AS Price
3FROM titles
4

4、當然,最重要的是學到這個列出資料庫表資訊(包括表名、欄位名、是否標識、是否主鍵、欄位類型、位元組數、長度、小數位元、允許空、預設值、欄位說明)的 SQL 陳述式。^_^

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.