SQL课堂笔记--索引和视图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL课堂笔记--索引和视图相关的知识,希望对你有一定的参考价值。
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课堂笔记--索引和视图的主要内容,如果未能解决你的问题,请参考以下文章
Python全栈100天学习笔记Day37MySQL详解(sql语句基本操作含索引视图存储过程)