#进阶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 占用了 */
#案例():查询姓张的学生名和专业名
USE student;
SELECT studentname,majorname
FROM stuinfo s
INNER JOIN major m ON s.`majorid`=m.`majorid`
WHERE s.`studentname` LIKE '张%';
#demo1: 创建视图 ;
CREATE VIEW v1
AS
SELECT studentname,majorname
FROM stuinfo s
INNER JOIN major m ON s.`majorid`=m.`majorid`
WHERE s.`studentname` LIKE '张%';
#然后从视图中查找出全部信息;
SELECT * FROM v1
WHERE studentname LIKE '张%';
#----------------------------
#1.查询邮箱中包含a字符的 员工名、部门名和工种信息 CREATE VIEW v2
AS
SELECT e.`last_name`,e.`department_id`,j.`job_id`,j.job_title
FROM employees e,jobs j
WHERE e.`job_id`=j.`job_id` AND email LIKE '%a%';
#② 使用视图
SELECT * FROM v2 WHERE last_name LIKE '%a%'; #2.查询各部门的平均工资的级别
CREATE VIEW v3
AS
SELECT AVG(salary) ag,department_id
FROM employees
GROUP BY department_id; SELECT v3.department_id,g.`grade_level`
FROM v3
JOIN job_grades g
ON v3.ag BETWEEN g.`lowest_sal` AND g.`highest_sal`; #3.查询平均工资最低的部门信息
SELECT * FROM v3 ORDER BY ag LIMIT 1; #4.查询平均工资最低的部门名和工资 SELECT *
FROM `departments`
WHERE departments.department_id = (
SELECT department_id FROM v3
ORDER BY ag LIMIT 1
);
#5.视图的修改(REPLACE)--方式1
CREATE OR REPLACE VIEW v3
AS
SELECT MIN(salary) min_ag,department_id
FROM employees
GROUP BY department_id; SELECT * FROM v3;
#6.视图的修改(alter)--方式2
ALTER VIEW v3
AS
SELECT MAX(salary) max_ag,department_id
FROM employees
GROUP BY department_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 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 ='张无忌';

MySQL进阶16 - 视图的创建/修改/删除/更新--可更新性的不适用条件的更多相关文章

  1. MySQL入门很简单: 4 创建 修改删除表

    1. 创建表的方法 1)创建表的语法形式 首先,选择数据库: USE 数据库名: 创建表: CREATE TABLE 表名 (属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件 ...

  2. MySQL进阶11--DDL数据库定义语言--库创建/修改/删除--表的创建/修改/删除/复制

    /*进阶 11 DDL 数据库定义语言 库和表的管理 一:库的管理:创建/修改/删除 二:表的管理:创建/修改/删除 创建: CREATE DATABASE [IF NOT EXISTS] 库名; 修 ...

  3. MySQL进阶(视图)---py全栈

    目录 mysql进阶(视图)---py全栈 一.什么是视图? 二.视图的特性 三.视图的优点 四.使用场合 五.视图基本操作 六.案例 mysql进阶(视图)---py全栈 一.什么是视图? 视图是从 ...

  4. Linux创建修改删除用户和组

    Linux 创建修改删除用户和组 介绍 在日常的维护过程中创建用户操作用的相对会多一些,但是在这个过程中涉及到的知识点就不单单就是useradd了,接下来就来详细了解账号管理的相关信息. 用户信息 先 ...

  5. oracle11g创建修改删除表

    oracle11g创建修改删除表 我的数据库名字: ORCL         密码:123456 1.模式 2.创建表 3.表约束 4.修改表 5.删除表 1.模式 set oracle_sid=OR ...

  6. MySQL进阶19--函数的创建(举例)/设置mysql的创建函数的权限/查看(show)/删除(drop) / 举4个栗子

    /*MySQL进阶19 函数 存储过程和函数:都类似于java中的方法; 存储过程和函数通用好处: 1.提高代码的重用性 2.简化操作 好处: 减少操作次数,减少了编译次数,减少了和服务器的连接次数, ...

  7. MySQL数据库(8)----表的创建、删除、索引和更改

    MySQL允许使用 CREATE TABLE 语句和 DROP TABLE 语句来创建.删除表,使用 ALTER TABLE 语句更改其结构.CREATE INDEX 语句和 DROP INDEX 语 ...

  8. Linux基础学习-用户的创建修改删除

    用户添加修改删除 1 useradd添加用户 添加一个新用户hehe,指定uid为3000,家目录为/home/haha [root@qdlinux ~]# useradd -u 3000 -d /h ...

  9. MySQL高级查询之索引创建、删除、增加、修改、慢sql、explain解释sql

    day04数据库 昨日知识点回顾 1.单表操作 1.单表的操作 条件查询的优先级别: where > group by >having > order by > limit; ...

随机推荐

  1. 老司机带大家领略MySQL中的乐观锁和悲观锁

    原文地址:https://cloud.tencent.com/developer/news/227982 为什么需要锁 在并发环境下,如果多个客户端访问同一条数据,此时就会产生数据不一致的问题,如何解 ...

  2. Kafka运维大全来了!优化、监控、故障处理

    Kafka运维大全来了!优化.监控.故障处理……   Kafka概念 Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的 ...

  3. CSS 按钮水波纹特效

    /* 按钮反馈之波纹 */ .ripple { position: relative; /* overflow:hidden */  打开注释及效果不扩散在外 } .ripple:focus{ out ...

  4. left join 和inner join关联查询区别

    inner join 必须两边对应才能查处结果 left join 用主表关联副表,关联不出来依然显示结果

  5. linux本地内核提权之CVE-2019-13272(鸡肋)

    CVE-2019-13272 发布时间: 2019月7月17日 影响内核版本: Linux Kernel < 5.1.17 漏洞描述: 译文 kernel 5.1.17之前版本中存在安全漏洞,该 ...

  6. Semi-supervised learning for Text Classification by Layer Partitioning

    本文是arxiv上一篇较短的文章,之所以看是因为其标题中半监督和文本分类吸引了我.不过看完之后觉得所做的工作比较少,但想法其实也挺不错. 大多数的半监督方法都选择将小扰动施加到输入向量或其表示中,这种 ...

  7. 设计模式之--Visitor

    Ref: https://www.jianshu.com/p/feec47a25b67 https://www.cnblogs.com/alphablox/p/5346567.html

  8. go tcp发送网络请求

    //发送http请求 package main import ( "fmt" "net" "io" ) func main () { //使 ...

  9. 异常:[vue/no-parsing-error] Parsing error:x-invalid-end-tag

  10. 使用parted对Linux未分区部分进行分区

    1. 使用命令parted -l 查看当前分区 可以看到硬盘有2396GB即有2.5T , 但是分区就分了50G一个盘, 需要分剩下部分 [root@localhost ~]# parted -l M ...