mysql视图的更新 条件_MySQL进阶16 - 视图的创建/修改/删除/更新--可更新性的不适用条件...

本文详细介绍了MySQL中视图的概念、作用,以及如何创建、替换、修改和删除视图。通过实例展示了如何利用视图简化SQL查询,保护数据,并探讨了视图的可更新性条件。此外,还提供了多个关于学生和员工信息的视图操作示例,包括查询、插入、更新和删除数据。
摘要由CSDN通过智能技术生成

#进阶16 : 视图/*含义: 虚拟表,和普通表一样使用;(从5.1开始使用的:)是通过表动态生成的数据

创建语法:

create view 视图名

as

查询语句;

----------

作用: 重用SQL语句,简化复杂的sql操作,不必知道它的查询细节;

保护数据,提高安全性;

-------------------------

视图的修改:

方式1: create or replace view 视图名

as

查询语句;

方法2: alter view 视图名

as

查询语句;

----------------------------

三:视图的删除 : 用户可以一次删除一个或者多个视图,前提是必须有该视图的drop权限。

语法: drop view 视图名,视图名,视图名;

-----------------------------

四:查看视图

desc v2;

-----------------------------

#五: 视图的更新

CREATE OR REPLACE VIEW myv1

AS

SELECT last_name,email FROM employees;

SELECT * FROM myv1 ORDER BY last_name DESC;

#1.插入

INSERT INTO myv1 VALUES('张飞','zafqq.com');

#2 修改

UPDATE myv1 SET last_name ='张无忌' WHERE last_name='张飞';

#3 删除

DELETE FROM myv1 WHERE last_name ='张无忌';

--------------------------------------------

#六 视图的可更新性

视图的可更新性和视图中查询的定义有关系,以下类型的视图是不能更新的。

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

• 常量视图 • Select中包含子查询

• join

• from一个不能更新的视图

• where子句的子查询引用了from子句中的表

---------------------------------------------

视图 : create view 没有占用多少物理空间,只保存sql逻辑

表 : create table 占用了*/#案例():查询姓张的学生名和专业名USEstudent;SELECTstudentname,majornameFROMstuinfo sINNER JOIN major m ON s.`majorid`=m.`majorid`WHERE s.`studentname` LIKE '张%';

#demo1: 创建视图 ;CREATE VIEWv1AS

SELECTstudentname,majornameFROMstuinfo sINNER JOIN major m ON s.`majorid`=m.`majorid`WHERE s.`studentname` LIKE '张%';

#然后从视图中查找出全部信息;SELECT * FROMv1WHERE studentname LIKE '张%';

#----------------------------

#1.查询邮箱中包含a字符的 员工名、部门名和工种信息CREATE VIEWv2AS

SELECTe.`last_name`,e.`department_id`,j.`job_id`,j.job_titleFROMemployees e,jobs jWHERE e.`job_id`=j.`job_id` AND email LIKE '%a%';

#② 使用视图SELECT * FROM v2 WHERE last_name LIKE '%a%';

#2.查询各部门的平均工资的级别CREATE VIEWv3AS

SELECT AVG(salary) ag,department_idFROMemployeesGROUP BYdepartment_id;SELECTv3.department_id,g.`grade_level`FROMv3JOINjob_grades gON v3.ag BETWEEN g.`lowest_sal` ANDg.`highest_sal`;

#3.查询平均工资最低的部门信息SELECT * FROM v3 ORDER BY ag LIMIT 1;

#4.查询平均工资最低的部门名和工资SELECT *

FROM`departments`WHERE departments.department_id =(SELECT department_id FROMv3ORDER BY ag LIMIT 1);

#5.视图的修改(REPLACE)--方式1

CREATE OR REPLACE VIEWv3AS

SELECT MIN(salary) min_ag,department_idFROMemployeesGROUP BYdepartment_id;SELECT * FROMv3;

#6.视图的修改(alter)--方式2

ALTER VIEWv3AS

SELECT MAX(salary) max_ag,department_idFROMemployeesGROUP BYdepartment_id;

#平均1.00 --2400次

SELECT ('28-29两天scanner sum'),(865-833+621-523+230-175+3+ 58-41+87-66+4+48-32+7+2+20+31-14+11-9),(0.054+0.073);

#五: 视图的更新CREATE OR REPLACE VIEWmyv1AS

SELECTlast_name,emailFROMemployees;SELECT * FROM myv1 ORDER BY last_name DESC;

#1.插入INSERT INTO myv1 VALUES('张飞','zafqq.com');

#2修改UPDATE myv1 SET last_name ='张无忌' WHERE last_name='张飞';

#3删除DELETE FROM myv1 WHERE last_name ='张无忌';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值