#进阶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. python解包

    概念 python的解包可以这样来理解:把元素给拆分并把其赋值给自己所需要的变量,因此元素应该是一个可迭代对象. 形式 简单版本 下面展示的是解包的基本形式,根据长度赋值给对应多的变量. name_l ...

  2. Swoole练习 Web

    WEB 服务端代码 $http = new swoole_http_server("0.0.0.0", 9501); $http->on('request', functio ...

  3. 小程序JS框架

  4. json与javabean、list、map之间的转化

    一.java普通对象和json字符串的互转 java对象---->json 首先创建一个java对象: public class Student { //姓名 private String na ...

  5. 微信小程序之页面传值并且根据产品类别(主从关系)的赋值操作

    <view class="title"> <view class="titleName">{{cname}}</view> ...

  6. 搭建Springboot

    这几天一直在研究IDEA上面怎么搭建一个web-mvc的SpringBoot项目,看网上的教程一步步的搭建,可是还是出现一堆的问题. 为了让大家以后少走一些弯路,我在这里分享一下我这几天研究的成果,也 ...

  7. (一)Shiro,久闻其名,而今初相识

    文章目录 shiro简介 功能介绍 从外部看 Shiro 架构 从内部看 Shiro 架构 多说一句,在学习shiro之前,我觉得应该先用 filter ,自己动手写过粗粒度的权限系统,而不要一上来就 ...

  8. Python random模块(以后用到一个再更新一个)

    random模块是产生随机数的模块 1.random.random() 这是产生0~1之间一个随机浮点数,但是不会包括1 import random num = 0 while num < 10 ...

  9. Authentication源码解析

    1.获取当前的 Subject. 调用 SecurityUtils.getSubject(); 从当前线程的threadLocals属性中获取Subject对象 SecurityUtils publi ...

  10. 组件上使用v-model

    组件上使用v-model <input v-model="searchText"> 等价于 <input v-bind:value="searchTex ...