• 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

  • 相关阅读:
    React的环境搭建
    Maven学习(3)-依赖管理-项目依赖相关操作命令
    k8s的yaml文件配置详解(转))
    Jenkins学习-Jenkins+K8s(k8s部署)
    Jenkins学习-定时任务设置(转)
    IntelliJ IDEA+Github+Maven+Jenkins+SipringBoot+VUE搭建Web开发环境样例(3)-为查询数据库项目样例创建Jenkins构建任务
    Maven学习(3)-依赖管理-POM文件中依赖的范围定义
    Maven学习(3)-依赖管理-POM文件中依赖的版本锁定详解
    Maven学习(3)-依赖管理-POM文件中依赖的jar包下载过程详解
    Maven学习(3)-依赖管理-依赖仓库管理
  • 原文地址:https://www.cnblogs.com/TuringShine/p/7843739.html
Copyright © 2020-2023  润新知