排序函數:産生一個新的列,一般作為一個流水号
排序函數 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語句運作失敗了資料是不會發生改變的。
隐式事務