#进阶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. maybatis调用函数和过程的区别

    //定义存储过程create or replace procedure pag_add(p1 varchar2,p2 varchar2,p3 out varchar2) as begin p3:=p1 ...

  2. SQL优化————Insert

    1.如果是非生产环境,可以先将索引和约束删掉,等数据插入完之后,再建立索引和约束. 2.如果一次性插入数据较大,可以使用游标,每次小批量的插入数据. 3.如果数据表太大,可以构建历史表,老数据通常不会 ...

  3. 【剑指offer】面试题 25. 合并两个排序的链表

    面试题 25. 合并两个排序的链表 NowCoder 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. Java 实现 ListNode Clas ...

  4. 【转帖】linux date 显示指定时区的时间 借助TZ 环境变量 export TZ=Asia/Shanghai 或 America/New_York

    linux date 显示指定时区的时间 借助TZ 环境变量 export TZ=Asia/Shanghai 或 America/New_York 2015-02-10 10:58:22 youcha ...

  5. qt 旧项目编译运行提示 “启动程序失败,路径或者权限错误?” 原因及解决方法

    qt 旧项目编译运行提示 "启动程序失败,路径或者权限错误?" 原因及解决方法 原因 Qt Creator在打开项目文件的同时会生成.pro.user文件,.pro.user文件叫 ...

  6. 以php中的自增自自减运算符操作(整型,浮点型,字符串型,布尔型,空类型)数据

    // 环境 // // php版本 // PHP 7.0.33-0+deb9u1 (cli) (built: Dec 7 2018 11:36:49) ( NTS ) // Copyright (c) ...

  7. 网络编程 - 端口 & 地址占用

    1.设置地址复用(还可以设置端口复用): int enable=1; if (setsockopt(socketfd,SOL_SOCKET,SO_REUSEADDR,&iEnable,size ...

  8. netty--使用注意事项

  9. oracle 生成随机日期+时间

    oracle 生成随机日期+时间 SELECT to_date(TRUNC(DBMS_RANDOM.VALUE(to_number(to_char(to_date('20110101','yyyymm ...

  10. P1777 帮助_NOI导刊2010提高(03)

    也许更好的阅读体验 \(\mathcal{Description}\) Bubu的书架乱成一团了!帮他一下吧! 他的书架上一共有n本书.我们定义混乱值是连续相同高度书本的段数.例如,如果书的高度是30 ...