码迷,mamicode.com
首页 > 数据库 > 详细

SQL课堂笔记--索引和视图

时间:2017-11-16 14:33:55      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:from   unique   17.1   过程   type   特征   计算   group by   关系   

       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课堂笔记--索引和视图

标签:from   unique   17.1   过程   type   特征   计算   group by   关系   

原文地址:http://www.cnblogs.com/TuringShine/p/7843739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!