天天看點

sqlserver學習筆記

排序函數:産生一個新的列,一般作為一個流水号

排序函數  OVER( [分組子句] 排序子句[DESC][ASC] )

(1)row_number():産生一個新的列流水号列,所有的流水号從1開始,然後累加

(2)rank():産生一個新的列流水号列,所有的流水号從1開始,然後累加,如果排序子句内容重複,流水号也跟着重複.而後續的流水号會掉過一個或多個.

(3)dense_rank():産生一個新的列流水号列,所有的流水号從1開始,然後累加,如果排序子句内容重複,流水号也跟着重複.而後續的流水号不會跳過

用途:分頁

視圖:相當于給查詢的結果起别名

1、建立視圖:

create view 視圖名稱(view_stuinfo_stuscore)

as

查詢語句

注意:

(1)視圖名稱不要和查詢的表名有重複

(2)SQL Server 2005 允許嵌套視圖。但嵌套不得超過 32 層。視圖最多可包含1024個字段。

(3)視圖中不能使用DEFAULT/COMPUTE 子句、COMPUTE BY 子句或 INTO 關鍵字/ORDER BY,

除非ORDER BY所在查詢語句中有top子句

2、使用視圖:

select * from 視圖名稱(view_stuinfo_stuscore)

3、删除視圖:

drop view 視圖名稱(view_stuinfo_stuscore)

目标:

集合運算:

UNION和UNION ALL:并集

UNION:把兩張表合為一張表,去掉重複資料

UNION ALL:把兩張表合為一張表,不去掉重複資料

注意:兩張是同一個表

select * from stumarks where writtenexam >70

union

select * from stuinfo where writtenexam > 60

select * from stumarks where writtenexam > 70

union all

select * from stumarks where writtenexam > 60

INTERSECT:交集

把兩張表合為一張表,去掉不重複資料,保留重複資料

intersect

EXCEPT:差集

把兩張表相減,保留不重複的資料

注意:前一個表比後一個表的資料要多才行

except

索引:類似是一個目錄,使搜尋資料的時候速度更快,大資料量非常龐大的時候,使用索引可以加快增,删,查,改的速度.

索引的主要分類

(1)聚集索引:

一旦使用聚集索引,所有的資料回全部重新排列一遍.

一張表中,隻能有一個聚集索引

一張表中,如果有主鍵,那麼會自動的在主鍵上添加一個聚集索引

(2)非聚集索引 

使用非聚集索引的時候,資料不會重新排列.

一張表中,可以建立多個非聚集索引

一張表中,可以對所有的非主鍵字段加上非聚集索引

建立非聚集索引:

CREATE NONCLUSTERED INDEX IX_score

ON stuMarks(score)

WITH FILLFACTOR= 30

删除索引:

DROP INDEX Students.IX_score

注意:

(1)索引名所在的表sysindexes;

IF exists(SELECT NAME FROM dbo.sysindexes WHERE name = 'IX_score')

(2)在删除索引的時候:資料庫名.索引名稱

(3)使用索引

SELECT * FROM stuMarks WITH(INDEX = IX_score)

WHERE score between 60 and 90

(3)其他索引

唯一索引

索引視圖

包含性列索引

全文索引

XML索引等

事務:一個不可再分的子產品,要麼子產品内容都執行,要麼都不執行

顯示事務

建立顯示事務:

begin TRANSACTION 顯示事務名(tran_bank)

當事物中的代碼有錯誤的時候,那麼就需要復原事物,使我們的環境回到初使狀态

ROLLBACK TRANSACTION

當事物中的代碼沒有錯誤的時候,那麼就需要送出事物來運作所有内容

COMMIT TRANSACTION

自動送出事物

每一條sql語句就是一個自動送出事物,sql語句運作失敗了資料是不會發生改變的。

隐式事務