由於最近使用到SQL Server 2012,於是把SQL Server 知識重新梳理一遍。
本篇文章只要講解SQL Server 高級用法之CREATE INDEX, IDENTITY以及Date 函數。
CREATE INDEX
CREATE INDEX 語句用語表中的創建索引。
開發者可以在表中穿件索引,可以更加高速有效的查詢數據。需要注意的是用戶是無法看到的,並且更新有一個索引的表的時間要比正常更新時間要久,因為表索引也是需要更新的。
語法:
<code>CREATE INDEX index_name ON table_name (column_name)/<code>
用法:
我們現在有一張表:
我們可以在name這一列創建索引叫NameIndex,可以使用下面的語句:
CREATE INDEX NameIndex ON Student (name)
我們還可以按照name列的升序和降序來進行根據name的排名。
CREATE INDEX NameIndex ON Student (name DESC)
IDENTITY (自增長)
每次插入新紀錄的時候,標記IDENTITY列的字段會自動增加。
例如Student表創建的時候,id行使用了IDENTITY 關鍵字。默認的,IDENTITY是從1開始每次遞增1,如果想要從900開始每次遞增1可以使用IDENTITY(900,1) 表示該列從900開始每次遞增1。
Date 函數
在我們處理日期和時間的時候,最難處理的就是時間和日期的插入。有的值設計日期,有點列設計時間有些都包括這就讓Date函數發揮了重要作用。
SQL Server 使用下列數據類型在數據庫中存儲日期或日期/時間值:
- DATE - 格式 YYYY-MM-DD
- DATETIME - 格式: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - 格式: 唯一的數字
一下表格羅列出SQL SERVER中重要的date函數:
例如我們想查詢Student表中,在1991年4月13日出生的同學,那麼我們可以使用下面SQL語句:
SELECT * FROM Student WHERE birth='1991-04-13'
如果表中birth精確到了時分秒,1991-04-13 12:15:55 類似這樣的數據,那麼我們使用
SELECT * FROM Student WHERE birth='1991-04-13' 將查詢不到結果,因為birth是帶有時間的。在SQL SERVER中日期和時間是區分的。所以要想簡單方便查詢維護,儘量避免在日期裡使用時間。
GETDATE() :常用配合DEFAULT 在表中列中記錄數據插入的時間;
DATEPART(datepart,date):date 參數是合法的日期表達式。datepart 參數可以是下列的值。單獨返回時間相關的部分。
DATEADD(datepart,number,date)
date 參數是合法的日期表達式。number 是您希望添加的間隔數;對於未來的時間,此數是正數,對於過去的時間,此數是負數。
DATEDIFF(datepart,startdate,enddate)
函數返回兩個日期之間的時間。startdate 和 enddate 參數是合法的日期表達式。datepart 參數可以是上圖所述的值。
CONVERT()
用不同的格式顯示日期/時間。
以上為本片文章內容。如有錯誤,請在評論區指出。