SQL之视图与索引[通俗易懂]

SQL之视图与索引[通俗易懂]SQL之视图与索引视图的定义、修改、使用索引的创建、查看视图人们在使用数据库时,并不是直接对数据源表进行操作,通常人们只关心源表的部分数据,因此为了使得用户在查询时方便,用不着在每次查询时都编写复杂的代码(比如连接等),可以事先将用户要使用的查询结果通过视图定义在数据库中,这样人们在进行查询时只需查看视图即可,简化了用户的操作,同时使得数据同源数据分离,提高了安全性。1.视图的创建语法:

大家好,又见面了,我是你们的朋友全栈君。

#SQL之视图与索引

  • 视图的定义、修改、使用
  • 索引的创建、查看

##视图
人们在使用数据库时,并不是直接对数据源表进行操作,通常人们只关心源表的部分数据,因此为了使得用户在查询时方便,用不着在每次查询时都编写复杂的代码(比如连接等),可以事先将用户要使用的查询结果通过视图定义在数据库中,这样人们在进行查询时只需查看视图即可,简化了用户的操作,同时使得数据同源数据分离,提高了安全性。
1.视图的创建
语法:
create view view_name
as
select_states
[with check option]
视图创建注意事项:
1.视图的名称必须唯一,不能与表名重复
2.视图通常只能定义在当前数据库中,分区视图除外
3.可以在视图上定义视图
4.视图中的select定义部分不能包含order by,compute、compute by、default语句
5.不能创建临时视图,也不能创建临时表上的视图
6.当视图中的某一列是计算列等,或者有重名列,则视图必须为每个列名命一个唯一的名称
例子:
创建一个查询student表中人员所选课程成绩大于80分的视图
代码:

use student
go
create view score_gt_80
as
select student.no,name,age,department,identityid,sc.classid,score
from student inner join sc
on student.no=sc.no
where score>80

效果:
这里写图片描述

  2.修改视图
    创建好的视图可以修改
    语法:
    alter view view_name
    as 
       select_states
    [with check option]
    用法与create  view类似,这里不再赘述

  3.使用视图
    1.一般简单的查询(只读查询)
      可以利用已经建好的视图直接进行专门的功能查询,由于建立的视图是针对专门用户的,因此在该用户进行查询时,直接对视图进行查询即可,不必通过源表进行,方便快捷。
      例子:
      利用刚建好的score_gt_80视图查询student表中学生课程成绩大于80分的人员信息
      代码:
select *
from score_gt_80

效果:
这里写图片描述

    2.利用视图对源表进行修改
      可以利用视图对源表进行修改,但必须满足以下条件:
      1.若视图是源表行列的子集且不含不能为空且没有默认值得列,则
        可以通过视图对源表进行插入、删除、更新操作。
      2.若视图来源于几个源表,则不能通过视图对源表进行删除、插入
        操作。但可以对源表的单个列进行更新操作。
      3.能通过视图进行修改源表的视图必须引用的是源表而不是聚合函
        数、计算列等。
      4.被修改的列不应受having、group  by、distinct、top n
        控制
      例子:
      定义视图查询studnet表中学生年龄的student_age视图,包括
      学生学号、姓名、年龄属性,视图中只包含年龄在22岁以上的成员
      通过student_age视图将student表中所有22岁以上成员的年龄
      都加1岁。
      代码:
create view student_age ---创建视图
as 
select no,name,age
from student
where age>22

update student_age  ---通过视图修改
set age=age+1

select *          ---查看视图修改
from student_age

select *          ----查看基本表修改
from student

效果:
修改后查询视图:
这里写图片描述
修改后查询基本表:
这里写图片描述

       3.删除视图
       语法:
       drop  view view_name

##索引
为了加快检索速度,sql引入了索引,如果没有引入索引,那么每次查询sql都会遍历这个基本表,效率低下。引入索引之后,索引将表中的某个列或几个列的值进行排序,为每个列建立索引,在查找时直接通过索引就可找到所要的值,效率较高。
索引按其列值分为:
1.唯一索引:索引所在的列中的值是不可重复的
2.非唯一索引:索引所在的列可以重复
unique、primary key约束的索引为唯一索引

索引按组织方式分为:
1.聚集索引:索引中的顺序和实际列在数据库中的物理存储顺序一致
2.非聚集索引:与上面相反,sql默认情况下的配置

索引的定义及使用:
对于索引的使用,只需要知道在哪些情况下定义索引即可,定义之后,系统自动维护索引,不需人为干预。
索引使用情况:
1.有大量记录且查询频繁但更新很少的列
2.值较多的属性列
3.有大量记录的聚集函数列
 
索引的定义:
语法:
create [unique|clustered|nonclustered]index index_name
on table|view_name(column1 desc|asc,column2 ...)
例子:
为student表的name属性创建非唯一非聚集索引
代码:
use student
go
create index name_index
on student(name)

效果:
这里写图片描述

  索引的查看:
  使用系统存储过程sp_index 表名 即可查看index相关信息
  代码:
use student
go 
exec sp_helpindex student

效果:
这里写图片描述

    索引的删除:
    语法:
    drop index table_name.index_name
    代码:
use student
go 
drop index student.name_index

效果:
这里写图片描述

您的赞助将是我不断创作的最大动力,谢谢支持!!!
如果您觉得我的文章对您有帮助,可以通过以下方式进行赞赏:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163047.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月22日 下午4:36
下一篇 2022年7月22日 下午4:46


相关推荐

  • 单点登录sso的实现原理(单点登录原理)

    什么是单点登录一个账户在多个系统上实现单一用户的登录为什么用单点登录单点登录可以做到在不记录用户密码的情况下,实现不同系统之间的资源共享,自动登录不安全,单点登录,一处登录,处处都可用,不用做多余的登录操作引用一个很经典的案例比如现在有OA系统、门户系统、人力资源管理系统、档案管理系统、生产管理系统、xx系统等,这么多个系统在一个公司里面,如果一个用户需要使用这么多个系统,那每天都要登录…

    2022年4月14日
    46
  • awk 数组学习

    awk 数组学习awk是Linux一个必不可少的文本处理工具,其编程简单,功能强大。其中awk处理文本的几块比较常用:1、行分隔;2、正则表达式匹配;3、字符串处理;4、awk数组。接下来主要介绍一下awk数组的相关内容。awk数组特点:(1)、是一种关联数组(AssociativeArrays),下表可以是数字也可以是字符串,(2)、数组名和元素无需提前声明,(3)、无需指定数…

    2022年7月19日
    20
  • OAuth及OIDC技术分享PPT杂记

    OAuth及OIDC技术分享PPT杂记本文为整理 OAuth2 0 amp OIDC1 0 分享 PPT 过程的准备材料 有些杂 感兴趣的小伙伴可以挑感兴趣的章节看 整个文章脉络亦展示了作者对认证 OAuth2 0 OIDC1 0 的整个认知过程

    2026年3月26日
    3
  • Java和Java大数据有什么区别?

    Java和Java大数据有什么区别?单单提起java或者大数据,很多人对此都一目了然,但对于Java大数据这样一个新鲜名词,多少有些疑惑。那java和java大数据学习的内容是一样的吗?两者有什么区别呢?今天就从java和java大数据的以下方面谈谈两者的区别。Java和Java大数据有什么区别Java和大数据的关系:java是计算机的一门编程语言;可以用来做很多工作,大数据开发属于其中一种;大数据…

    2022年5月25日
    46
  • HTML 打开新页面 关闭,javascript打开新窗口同时关闭旧窗口

    HTML 打开新页面 关闭,javascript打开新窗口同时关闭旧窗口javascript 打开新窗口同时关闭旧窗口更新时间 2009 年 01 月 16 日 21 03 33 作者 因业务需要 在网上查找这个问题的解决办法 但是昏天黑地地搞了半天 找到的方法虽然可以实现功能 但是总是会跳出讨厌的 关闭窗口 的提示框 郁闷 其实这个问题和浏览器的版本息息相关 作为菜鸟的我 直到现在也没有找到完美的解决办法 没办法 因为业务必须要实现 所以只好用另一种方法去做了 通过重定向 U

    2026年2月24日
    1
  • 关于淘汰85%查看面试官百度开发者面对的问题

    关于淘汰85%查看面试官百度开发者面对的问题

    2022年1月2日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号