MySQL——视图

含义:虚拟表,和普通表格一样使用

mysql5.1版本出现的新特性,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。

应用场景:多个地方用到同样的查询结果;该查询结果使用的sql语句较复杂。

特点:

        (1)实现了sql语句的重用

        (2)简化复杂的sql操作,不必知道他的查询细节

        (3)保护数据,提高安全性

eg1.查询姓张的学生名和专业名

CREATE VIEW vl
AS
SELECT studentname,majorname
FROM student AS s 
INNER JOIN major AS m
ON s.`majorid`=m.`majorid`;

SELECT * FROM vl WHERE studentname LIKE '张%';

一、视图的创建

语法:

        CREATE VIEW 视图名
        AS
        查询语句;

eg1.查询姓名中包含a字符的员工名、部门名和工种信息

CREATE VIEW vl1
AS
SELECT last_name,department_name,j.*
FROM employees AS e
INNER JOIN departments AS d
ON e.department_id=d.department_id
INNER JOIN jobs AS j
ON e.job_id=j.job_id;

SELECT * 
FROM vl1
WHERE last_name LIKE '%a%';

eg2.查询各部门的平均工资级别

CREATE VIEW vl2
AS 
SELECT AVG(salary) AS avgs,department_id
FROM employees AS e
GROUP BY department_id;

SELECT vl2.*,j.`grade_level`
FROM vl2
INNER JOIN job_grades AS j
ON vl2.`avgs` BETWEEN j.`lowest_sal` AND j.`highest_sal`;

eg3.查询平均工资最低的部门

SELECT vl2.*
FROM vl2
ORDER BY vl2.`avgs`
LIMIT 1;

eg4.查询平均工资最低的部门名和工资

CREATE VIEW myv3
AS
SELECT vl2.*
FROM vl2
ORDER BY vl2.`avgs`
LIMIT 1;

SELECT myv3.`avgs`,d.*
FROM myv3
INNER JOIN departments AS d
ON d.`department_id`=myv3.`department_id`;

二、视图的修改

#方式一:

CREATE OR REPLACE VIEW 视图名
AS
查询语句;

#方式二:

ALTER VIEW 视图名 
AS 
查询语句;

三、视图的删除

语法:

DROP VIEW 视图名1,视图名2……;

四、视图结构的查看

DESC 视图名;

或:

SHOW CREATE VIEW 视图名;

SHOW CREATE VIEW 视图名\G;

五、视图的更新(数据更新)

具备以下特点的视图不允许更新(增删改):

(1)包含以下关键字的sql语句:分组函数、distinct、group by、having、union或union all

(2)常量视图

(3)select中包含子查询

(4)join(可以update,不能insert)

(5)from一个不能更新的视图

(6)where子句的子查询引用了from子句中的表

        eg.

        CREATE OR REPLACE VIEW myv5
        AS
        SELECT last_name,email,salary
        FROM employees
        WHERE employee_id IN(
            SELECT manager_id
            FROM employees
            WHERE manager_id IS NOT NULL
        );

#视图和表的区别:

1、创建语法不同,视图为create view;表为create table

2、视图没有实际占用物理空间(只保存了sql逻辑),表占用实际物理空间(保存了数据)

3、视图一般不能增删改,可以查;表可以增删改查

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL视图是一种虚拟表,它有结构(有行和列),但没有实际存储数据。创建视图可以通过CREATE VIEW语句来实现。例如,使用SELECT语句来定义视图的查询结果。通过创建视图,我们可以简化复杂的查询,提高查询效率,并且可以直接使用视图来查询数据,而不必每次都编写复杂的查询语句。 在MySQL中,使用CREATE VIEW语句创建视图,语法如下: CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition; 其中,view_name是视图的名称,column1, column2等是要选择的列,table_name是要查询的表,condition是可选的筛选条件。 通过创建视图,我们可以使用视图的名称来查询数据,就好像查询表一样。视图的查询结果是根据视图定义的SELECT语句生成的。 总结起来,MySQL视图是一种虚拟表,可以通过CREATE VIEW语句创建,将复杂的查询结果保存为视图,方便后续查询操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span> #### 引用[.reference_title] - *1* *2* *4* [MySQL——视图查询](https://blog.csdn.net/qq_67308046/article/details/124413261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [MySQL视图](https://download.csdn.net/download/weixin_38550834/13685354)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值