重點一:索引
(1)定義:索引是數據表中數據和相應存儲位置的列表。(一個頁佔8KB的存儲空間)
(2)作用:索引可以提高在表和視圖中查找數據的速度。
(3)分類:1.聚集索引:指表中數據行的物理存儲順序與索引順序完全相同。(當表中有主鍵時會自動生成聚集索引)
2.非聚集索引:不改變數據行的物理存儲位置,數據與索引分開存儲,通過索引指向的地址與表中的數據發生關係。
非聚集索引的特點:非聚集索引包含聚集函數,它數據唯一性高,數據量較少。
聚集索引和非聚集索引的區別:
1.一張表只能有一個聚集索引;最多有249個非聚集索引。
2.聚集索引:物理的重排表中的數據以符合索引約束;非聚集索引:鍵值指向數據在數據頁中的位置。
3.聚集索引指定表中的存儲順序;非聚集索引指定表的邏輯順序。
4.聚集索引用於經常查找數據的列;非聚集縮影用於從中查找單個值的列。
創建索引的語法格式:
create[unique][clustered/nonclustered]--!當數據唯一是可加unique
index index_name
on table_name(column_name...)--!表名
[with fillfactor=x]--填充因子:0-100之間的值,表示索引填充的百分比,一般在70-80之間。
刪除索引:
--如果存在該索引,先將其刪除掉
IF exists(SELECT * FROM sys.indexes WHERE name = 'IX_score')
DROP index 表名.IX_score
--使用索引
--指定按索引查詢
SELECT * FROM stuMarks WITH(index = IX_score)
WHERE score between 60 and 90
重複性高的列,數據量特別少的表,不適合(沒有必要)創建索引。
*重點二:視圖
(1)定義:視圖是一張虛擬表,其結構和數據建立在對錶的查詢基礎之上。
(2)語法格式:
CREATE VIEW view_name [(列名...)]
[with encryption]--加密視圖(加密視圖定義數據)
AS
<SELECT語句>
go
select * from 視圖名
select * from information_schema.views--查看所有視圖信息
刪除視圖:
--如果存在該視圖,先將其刪除掉
IF exists(SELECT * FROM sys.views WHERE name = 'view_tableName')
DROP index 表名.view_tableName
--使用視圖
select * from view_tableName