什么是视图(保姆版)

news/2024/7/8 8:58:40

目录

一、如何提高查询效率:

那如何提高查询语句的效率呢?

二、视图的使用:

1、视图关键字:view

2、视图的基本使用

3、视图的修改

4、删除视图

三、视图的创建:

四、视图的修改

五、视图的删除

什么是视图?视图有什么作用?

为什么要建立视图?建立视图有什么好处和优点


一、如何提高查询效率:


查询语句也有查询的效率问题,比如说交叉连接与内外连接的区别,交叉连接需要产生一个笛卡尔积的临时表,这样效率比较低

那如何提高查询语句的效率呢?


1、选择有效的表名顺序,select语句一般优先处理写在from子句最后的表,将记录条数最少的或者父辈(被参考表)放在最后可提高查询效率


2、select尽量避免使用*,如果不需要查询所有属性的话,尽量把需要查询的字段一一写出来,而不是用*代替,比如说一共有10个字段,你需要查询其中的9个字段,把9个字段都写上更好,在满足需求的情况下,能少查一个字段就少查一个字段


3、整合简单的数据库查询语句,能一次性查询出来的数据就不要分为两次或者多次查询


4、尽可能使用where替换having,能使用where解决的就不要使用分组查询的having语句,因为having是查询所有记录之后,在进行分组过滤,其中可能还需要排序和统计等,比较繁琐


5、尽量多使用内部函数,少用运算符自己进行的操作,因为内部函数的处理优化的比较好


6、多使用表的别名,以减少解析时间


7、尽量使用exists代替in、not exists 代替 not in 


8、尽量用>=代替>等。如:有时候>5和>6所查询的效果是一样的,但是一个先找5,一个是先找6,多找了一个数
  

二、视图的使用:


1、视图关键字:view


一般格式:create view <视图名> as <查询语句>;
create view <视图名称> as <select <属性名> from <表名>>;

可以查询表中全部数据创建视图,也可查询表中部分数据创建视图


2、视图的基本使用


select *from <视图名>;

视图与上面的查询语句结果一致


3、视图的修改


alter view 视图名 as 查询语句 ;

#将视图更改为其他查询


4、删除视图


drop view 视图名;

三、视图的创建:

select *from student;
create view V_S as select * from student;
-- 视图可以用于代替一条查询语句,相当于为查询语句取一个别名
视图的使用:
select* from V_S;
    -- 将视图当做表格来使用

-- 查询视图中的部分属性
select s_id ,s_name from V_S where s_id >=1008;

四、视图的修改

-- 可以修改视图所对应的查询语句
    -- 查询所有学生所在班级的班级名称,以及对应班级的任课老师
select S.s_id 学号,S.s_name 学生姓名,C.c_name 班级名称,T.t_name 任课老师
    from student S left join  class C on S.s_cid = C.c_id
    left join teacher T on C.c_tid = T.t_id;

alter view V_S as
    select S.s_id 学号,S.s_name 学生姓名,C.c_name 班级名称,T.t_name 任课老师
    from student S left join  class C on S.s_cid = C.c_id
    left join teacher T on C.c_tid = T.t_id;

-- 可以使用视图代替一个复杂的查询语句
-- 也可以对视图创建视图(视图的嵌套)
create view V_SC as select 学生姓名, 班级名称 from V_S;


五、视图的删除

drop view 视图名;
-- 视图只可以用于代替查询语句
-- 视图不占用额外的存储空间


什么是视图?视图有什么作用?


了解了视图的创建和视图的基本使用方法后,大概会有这么一个概念,就是视图可以用于代替查询,多次使用同一个查询语句时,可以为此查询创建一个视图,方便后续使用
    视图就相当于为一个查询结果集(虚拟表)创建一个快捷方式

为什么要建立视图?建立视图有什么好处和优点


1、由于有些查询语句又长又麻烦,并且经常使用,这时可以给他创建一个视图,以便于后续操作


2、用户只用关心数据,而不关心数据是如何查询的,表与表之间的连接操作是怎样的,是面向结果,而不是面向过程


3、数据的安全性,视图可以单独设置权限,有些表中的某些数据是不方便给用户看的,视图能使用户只看到表中的部分数据,而没办法看到表中的全部数据和表的结构以及表与表之间的联系,相当于起到一个封装和保密的作用。(如用户查找他人账号信息,就只能看到一些基本信息,而不能看到账号密码等私密信息了)


4、数据独立,一旦视图确定,原表中其他数据的修改很难影响到视图,除非修改或者删除了视图中所涉及的字段或属性值

总的来说,视图使查询变的更加简单,安全,数据独立性得到了提高。


http://lihuaxi.xjx100.cn/news/1067982.html

相关文章

统计学知识

期望&#xff1a;随机变量的平均值 矩&#xff1a; X X X的 n n n阶矩&#xff1a; μ n ′ E X n \mu_n^\primeEX^n μn′​EXn X X X的 n n n阶中心矩&#xff1a; μ n E ( X − μ ) n \mu_nE(X-\mu)^n μn​E(X−μ)n X X X的2阶中心矩称为方差 三种收敛 依概率收敛 如…

产品经理与项目经理(区别/特点)

项目经理岗位要求&#xff08;侧重项目本身&#xff09;&#xff1a; 项目管理&#xff1a;熟悉项目管理的流程和方法&#xff0c;如敏捷开发、瀑布模型等&#xff0c;具备良好的项目规划、执行、监控和收尾能力。技术理解&#xff1a;具备一定的软件开发背景&#xff0c;了解…

MySQL Community Server 8.0.33安装教程【笔记】

仅安装MySQL Community Server 下载网址&#xff1a;https://dev.mysql.com/downloads/installer/ 1、下载对应版本&#xff1b; 2、下载后&#xff0c;双击安装&#xff0c;弹出界面选择【Custom】&#xff1b; 3、弹出界面选择【MySQL Server 8.0.33 - X64】; 3、弹出界面…

U盘安装Windows11和ubuntu20.04双系统

准备&#xff1a; 一台PC电脑&#xff08;我的是两个固态硬盘&#xff09; 一个U盘&#xff08;最好不小于32G&#xff09; 下载安装工具&#xff1a; 老白菜u盘启动盘制作工具_u盘启动_u盘装系统下载尽在老白菜官网 最新UltraISO官方免费下载 - UltraISO软碟通中文官方网…

Android动态权限申请从未如此简单

前言 大家是否还在为动态权限申请感到苦恼呢&#xff1f;传统的动态权限申请需要在Activity中重写onRequestPermissionsResult方法来接收用户权限授予的结果。试想一下&#xff0c;你需要在一个子模块中申请权限&#xff0c;那得从这个模块所在的Activity的onRequestPermissio…

Go语言面试题--进阶语法(33)

文章目录 1.下面哪一行代码会 panic&#xff0c;请说明原因&#xff1f;2.下面的代码输出什么&#xff1f;3.下面的代码输出什么&#xff1f;4.下面哪一行代码会 panic&#xff0c;请说明原因&#xff1f; 1.下面哪一行代码会 panic&#xff0c;请说明原因&#xff1f; packag…

【处理网络难题,还得靠这份网工经验合集】

网络维护&#xff0c;是很多初阶网工必须要做的工作。但说起来容易&#xff0c;做起来难&#xff0c;想要做好这个工作&#xff0c;需要的不仅仅是技术的加持&#xff0c;更多的是经验的积累。 今天&#xff0c;和你分享一份关于一些网络维护过程中一些典型、经典问题的解决方…

同步辐射X射线断层扫描成像在各行业的应用

同步辐射X射线断层扫描成像在各行业的应用 同步辐射X射线断层扫描成像&#xff08;synchrotron radiation X-ray computed tomography&#xff0c;SRCT&#xff09;是一种非侵入式、高分辨率的成像技术&#xff0c;利用同步辐射光束产生的高强度、高亮度、单色性和相干性的X射线…