1. 程式人生 > >SQL課堂筆記--索引和視圖

SQL課堂筆記--索引和視圖

比較 成績表 存儲 _id 復合索引 res 子句 unique 列名

2017.11.16

5.11 .認識索引

1.索引的概念:
-(1)加快數據檢索速度
-(2)加快表與表之間的連接速度
-(3)在使用order by 和 group by子句檢索時,可以顯著地減少查詢分組的
-(4)
2.索引的類型:
唯一索引:不會有兩行記錄相同
單列索引:索引不唯一
復合索引:根據多列組合創建的
主鍵索引:為表定義一個主鍵,將會自動地在主鍵所在列上創建的唯一索引


根據索引的順序與數據表的物理順序是否相同分:
聚集索引:是根據數據行的鍵值,在表或視圖中排序和存儲數據行,每個數據庫中的每個表只能有一個聚集索引.
非聚集索引:
特點:1.表的物理存儲順序與索引順序不同,即表的數據並不是按照索引排列.
2.不會影響數據表中的記錄實際存儲順序
3.一個表最多可以創建249個非聚集簇索引

例1:按‘姓名‘創建聚集索引:

3.創建唯一索引:
特征:不允許具有相同的索引值
4.復合索引:
特征:可以為唯一索引,也可以為不唯一索引
最多可以有16個字段組合到一個復合索引

索引的使用:
1.考慮創建索引的列:
-(1).主鍵列
-(2).經常用在連接的列
-(3).經常進行範圍查詢的列
-(4).經常需要排序的列上

2.不考慮創建索引的列:
-(1).很少或從來不在查詢中引用的列
-(2).選擇性低(重復值多)的列
-(3).小表(記錄數據很少的表)
-(4).更新操作比較頻繁的列

創建索引:
索引名字以‘IX_‘開始

語法:
create [unique][clustered|nonclustered] index 索引名 on {表名|視圖名} (列{asc|desc}[,...n])

unique:表示索引的列必須唯一
clustered:表示索引為聚集索引
nonclustered:表示索引為非聚集索引,默認

創建聚集索引:
create unique clustered index IX_sno on student(sno)

創建非聚集索引:
create unique nonclustered index IX_sname on student(sname) --nonslustered可省略

創建組合索引:
create clustered index IX_sc_sno_cno on sc (sno,cno)

對索引的管理:
使用系統存儲過程:sp_helpindex表名:查看索引信息

1.查看索引
例:查看學生表創建的索引信息:
sp_helpindex student
2.刪除索引
dropindex {表名.索引名|視圖名.索引名}[,...n]

例:刪除學生表姓名列上的索引:
dropindex student.IX_sname
5.31.認識視圖

視圖的概念:是由一個或多個數據表或視圖到處的虛擬表或查詢表,是關系數據庫系統提供給用戶以多種角度...

視圖的優點:

創建視圖:
create view 視圖名[(列名1,列名2[,...n])] as <select語句>

例:創建女同學的視圖,包括學號,姓名,性別和系部信息
create view gril_view as select sno,sname,ssex,sdept from student where ssex=‘女‘
管理視圖:
查看 select * from 視圖名

1.修改視圖:
alter view 視圖名[(列名1,列名2[,...n])] as <select語句>
alter view gril_view as select sno,sname,ssex,sdept from student where ssex=‘女‘ and sdept=‘計算機‘
2.視圖更名:
sp_rename 舊名字,姓名字

3.刪除視圖:
drop view 刪除視圖名

4.使用視圖:
select * from 視圖名

    練習:

use student
go
--1、在學生表的姓名列上創建唯一的非聚集索引。
create unique nonclustered index IX_sname on student(sname)

--2、在學生成績表的學生編號列和課程編號列上創建組合的聚集索引。
create clustered index IX_sc_sno_cno on sc (sno,cno)

--3、查看學生表上的索引信息。
sp_helpindex student

--4、刪除學生表姓名列上的索引。
dropindex student.IX_sname

--5、創建女同學的視圖(girl_view),包括學號、姓名、性別和專業等信息。
create view gril_view as select sno,sname,ssex,sdept from student where ssex=‘女‘

--6、修改任務5創建的“girl_view”視圖的定義信息,將其改為顯示所有電子專業的女生信息。
alter view gril_view as select sno,sname,ssex,sdept from student where ssex=‘女‘ and sdept=‘計算機‘

--7、使用系統存儲過程SP_RENAME將視圖“GIRL_VIEW”改為“VIEW_GIRL”。
sp_rename GRIL_VIEW,VIEW_GILE

--8、查詢視圖VIEW_GIRL的所有信息。
select * from VIEW_GIRL

--9、刪除視圖VIEW_GIRL。
drop view VIEW_GIRL


use job
go
--2 使用create index語句為name字段創建索引index_name。
create index index_name on workInfo(name)

--3 、使用create index語句在type和address上創建名為index_t的索引。
create index index_t on workInfo(type,adress)

--4、刪除workInfo表的唯一性索引index_id。
dropindex workIfon.index_id


use example
go

--2、 在College表上創建視圖college_view。視圖的字段包括College_num、Colleget_name、College_age和department。
create view college_view as select number,name,age,department from college


--3、 查看視圖college_view的詳細結構。
select * from college_view

--4 、修改college_view視圖,使其顯示專業為計算機的信息,其他條件不變。
alter view college_view as select number,name,age,major from college where major=‘計算機‘

--5 、刪除視圖college_view。
drop view collage_view

SQL課堂筆記--索引和視圖