SqlServer資料庫的語句及一些操作整理

來源:互聯網
上載者:User

臨近年終,在工作之餘對工作和學習中遇到的問題以及常用的一些知識點做了些整理,以備後用。本文涉及的內容為資料庫,算是對開發總結(1)---資料庫一文的補充。

1 對於主鍵設定了Identity的表,在刪除表中資料後再往表中插入資料,Identity列不是從1起始了,如果想刪除資料後Indentity列仍從1起始,可以用下面代碼來刪除資料。

truncate table tablenameDBCC CHECKIDENT(tablename,RESEED,1)

2 判斷指定表在資料庫中是否存在

if exists(select name from sysobjects where name='tablename' and type='u')

3 判斷指定列在指定表中是否存在

if exists(select * from sys.columns,sys.tables       where sys.columns.object_id = sys.tables.object_id      and sys.tables.name='tablename' and sys.columns.[name]='columnname')

4 在編寫代碼產生器之類的程式的時候,通常需要取出資料庫中所有的表名以及表中欄位的一些基本資料,如欄位長度、欄位類型、描述等。實現上面要求的sql語句如下:

--取資料庫中表的集合select * from sysobjects where xtype='u' order by name--取表中欄位的一些基本資料select     sys.columns.name,  --欄位名    sys.types.name as typename, --欄位類型    sys.columns.max_length,    --欄位長度    sys.columns.is_nullable,    --是否可空    (select         count(*)     from         sys.identity_columns     where         sys.identity_columns.object_id = sys.columns.object_id     and         sys.columns.column_id = sys.identity_columns.column_id    ) as is_identity ,--是否自增    (select         value     from         sys.extended_properties     where         sys.extended_properties.major_id = sys.columns.object_id     and         sys.extended_properties.minor_id = sys.columns.column_id    ) as description  --注釋from     sys.columns, sys.tables, sys.typeswhere     sys.columns.object_id = sys.tables.object_id and     sys.columns.system_type_id=sys.types.system_type_id and     sys.tables.name='tablename'order by sys.columns.column_id

5 在預存程序中使用事務

create procedure procnameasbegin tran      --執行sql語句if @@ERROR!=0  begin      rollback tran   --失敗end  else  begin      commit tran   --成功end  

6 清除資料庫日誌

DUMP TRANSACTION DatabseName WITH NO_LOGBACKUP LOG DatabseName WITH NO_LOG DBCC  SHRINKFILE(DatabseLogName,1) --DatabseName為資料庫名稱--DatabseLogName為記錄檔名,可以通過下面語句得到--select name from sysfiles 

還有一種比較簡單的方法是分離資料庫,刪除記錄檔,再附加資料庫,這樣產生的記錄檔只有500多k。

下面介紹幾個常用的系統預存程序和函數

7 db_name()  得到資料庫名稱

select db_name()    Test(1 行受影響)

8 object_id 可以得到對象在系統中的編號,對象包括表、視圖、預存程序等。如果不存在返回null,所以也可以用來判斷表是否存在。

select object_id('objectname')--判斷表是否存在if  object_id('tablename') is not null

9 sp_helptext 用來得到視圖、預存程序等對象的文本,可以很快速找到,不過會改變視圖或預存程序的格式。所以這個系統預存程序我通常都是用來查看,如果要修改一個預存程序我還是會通過樹形菜單去找到預存程序然後修改儲存。

sp_helptext 'objectname'

10 parsename,可以得到對象名稱的指定部分,該函數有兩個參數,第一個為對象名稱,第二個為指定部分的代號。

select parsename('oec2003.databasename.dbo.tablename',1)    --對象名稱返回tablenameselect parsename('oec2003.databasename.dbo.tablename',2)    --Schema名稱返回dboselect parsename('oec2003.databasename.dbo.tablename',3)    --資料庫名稱返回databasenameselect parsename('oec2003.databasename.dbo.tablename',4)    --伺服器名稱返回oec200

先就寫這麼多吧,後面整理出來的會陸續補上。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.