创建视图的目的

简单 隐藏数据复杂性

安全 可以对视图授权

数据独立 可以屏蔽表结构变化对用户的影响,比如增加列,更改列名

创建视图

1. 创建单表视图

以下视图显示JAVA班的学生姓名、身份证号和班级。

CREATE VIEW vJAVAstudent

as

SELECT sname 姓名,cardID 身份证号,class 班级 from `TStudent` where class='JAVA'

查询视图

select * from vJAVAstudent;

select 姓名,身份证号 from vJAVAstudent where 姓名='白安'

2. 在多表上创建视图

创建一个视图,展示学生学号 姓名 身份证号 班级 科目 成绩

create VIEW vStudentInfo

as

select a.studentid 学号,sname 姓名,cardID 身份证号,class 班级,subjectName 科目,mark 成绩 from `TStudent` a join `TScore` b on a.`StudentID`=b.`StudentID` join `TSubject` c on b.`subJectID`=c.`subJectID`

查询视图

select * from `vStudentInfo`

查找各科最高分

select 科目,MAX(成绩) 最高分 from `vStudentInfo` group by 科目

3. 创建视图

该视图显示学生学号 姓名 分数 和学科

CREATE VIEW `studentMark`

AS

(

SELECT a.studentid 学号,sname 姓名,mark 分数,subJectName 学科

FROM TStudent a JOIN TScore b ON a.studentid=b.studentid

JOIN TSubject c ON b.subjectid=c.subjectid

);

查询该视图

select * from studentMark

4. 行列转换视图

以以上视图为表,创建行列转换视图

CREATE VIEW Vmark

AS

(

SELECT 学号,姓名,

AVG(CASE 学科 WHEN '计算机网络' THEN 分数 END) 计算机网络,

AVG(CASE 学科 WHEN 'JAVA开发' THEN 分数 END) JAVA开发,

AVG(CASE 学科 WHEN '数据结构' THEN 分数 END) 数据结构

FROM `studentMark`

GROUP BY 学号

);

查询Vmark视图

select * from Vmark

查看视图

5. 查看视图基本信息

DESCRIBE `vStudentInfo`

如图,双击vStudentInfo视图,可以查看创建的视图

6. 在views表中查看视图详细信息

使用SQL admin 连接到Information_schema数据库

输入SELECT * FROM information_schema.views;

修改视图

1. 使用create or replace修改视图

给现有视图添加一列email

create OR REPLACE VIEW vStudentInfo

as

select a.studentid 学号,sname 姓名,cardID 身份证号,email 邮箱,class 班级,subjectName 科目,mark 成绩 from `TStudent` a join `TScore` b on a.`StudentID`=b.`StudentID` join `TSubject` c on b.`subJectID`=c.`subJectID`

2. 使用ALTER修改视图

给现有视图去掉身份证号列

ALTER VIEW vStudentInfo

as

select a.studentid 学号,sname 姓名,email 邮箱,class 班级,subjectName 科目,mark 成绩 from

`TStudent` a join `TScore` b on a.`StudentID`=b.`StudentID` join `TSubject` c on b.`subJectID`=c.`subJectID`

通过视图更改数据

通过视图来插入、更新、删除表中的数据,都是修改的基本表上进行更新

3. 通过视图更改数据

select * from `vStudentInfo`

给韩旭的数据结构加10分

update `vStudentInfo` set 成绩=成绩+10 where 姓名='韩旭' and 科目='数据结构'

查看结果

select * from `vStudentInfo`

4. 通过视图插入数据

下面视图能够插入数据

CREATE VIEW vJAVA

as

select studentID 学号,sname 姓名,sex 性别,email 邮箱,class 班级 from `TStudent` where class='JAVA'

通过视图插入记录

INSERT vJAVA values ('00025','姚帅','男','yaoshuai@onest.net','JAVA')

select * from vJAVA

5. 通过视图删除数据

delete from vJAVA where 学号='00025'

select * from vJAVA

删除创建的视图

6. 查看创建的视图

7. 删除视图

drop view `vJAVA`

按F5可以看到vJAVA视图已经被删除

8. 查看视图的语法

不能更新的视图

视图中不包含基表中被定义为非空的列

在定义视图的select语句后的字段列表中使用了数学表达式

在定义视图的select语句后的字段使用聚合函数

在定义视图的select语句中使用了distinct union top group by 或having

课下作业

创建一个视图 studentMark

select sname 姓名, subJectName 学科,mark 分数 from TStudent a join TScore b

on a.studentid=b.studentid join TSubject c on b.subjectid=c.subjectid

再创建一个视图Vmark,将studentMark进行行列转换

姓名 计算机网络 JAVA开发 数据结构

韩立刚 89 78 89

王瑞斯 90 78 76

mySQL 教程 第8章 视图的更多相关文章

  1. mySQL 教程 第7章 存储过程和函数

    存储过程和存储函数 MySQL的存储过程(stored procedure)和函数(stored function)统称为stored routines. 1. MySQL存储过程和函数的区别 函数只 ...

  2. mySQL 教程 第4章 数据查询

    mySQL运算符 这些运算符在SQL查询中用得到. 算数运算符 + 加 - 减 * 乘 / DIV 除 % MOD 取余数 比较运算符 = 等于 <> != 不等于 < <= ...

  3. mySQL 教程 第3章 数据类型和数据完整性

    准备数据库 创建练习数据库,以下实验都是在这个数据库中完成. 练习1:比较各种数值型 create table tmp1 ( id INT, name VARCHAR(25), deptId deci ...

  4. mySQL 教程 第2章 安装和介绍mySQL

    设置mySQL字符集 支持中文的字符集是utf8,该设置可以更改mySQL配置文件进行全局设置,也可以针对数据库设置,也可以针对表设置,也可以针对列设置.字符集更改后新插入的数据生效,对以前不生效. ...

  5. mySQL教程 第1章 数据库设计

    E-R设计 很多同学在学SQL语句时,觉得非常困难,那是因为你在学一个你根本不了解的数据库,数据库中的表不是你设计的,表与表之间的关系你不明白.因此在学SQL语句之前,先介绍一下数据库设计. 下面举例 ...

  6. mySQL 教程 第5章 插入 更新与删除数据

    使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 为表中所有字段插入数据,可以不 ...

  7. 转-MySQL教程-写的很详细,赞一个

    原帖地址:https://www.w3cschool.cn/mysql/,谢谢原帖大人 MySQL是什么? MySQL安装 MySQL示例数据库 MySQL导入示例数据库 MySQL基础教程 MySQ ...

  8. 2017.2.16 开涛shiro教程-第十七章-OAuth2集成(一)服务器端

    原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 开涛shiro教程-第十七章-OAuth2集成 1.OAuth2介 ...

  9. Cobalt Strike系列教程第七章:提权与横向移动

    Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...

随机推荐

  1. Eclipse properties文件编辑插件

    安装 Properties Editor 步骤:help--->Install New Software...---> 名称:Properties Editor URL:http://pr ...

  2. Oracle ASM 相关的 视图(V$) 和 数据字典(X$)

    本文转自: http://blog.csdn.net/tianlesoftware/article/details/6733039 ASM由于其高度的封装性,使得我们很难知道窥探其内部的原理.可以通过 ...

  3. 使用SAE(VAE)检测信用卡欺诈——感觉误报率还是比较高啊 70%+误报 蛋疼

    from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScale ...

  4. Maven 入门篇(下)

    第一篇文章大概的介绍了一下Apache Maven以及它的下载和安装,并且运行了一个简单的示例.那么在对maven有了一点接触后,接下去的一步是要了解maven的核心概念,这样才能在使用maven的时 ...

  5. ZOJ 3822 Domination 概率dp 难度:0

    Domination Time Limit: 8 Seconds      Memory Limit: 131072 KB      Special Judge Edward is the headm ...

  6. vuex 简单理解

    废话不多说,直接上图!                 不懂的 参考 API

  7. TClientDataSet 的Filename 和 open方法

    cdsAdd.Open 不能用open,因为这个是DataSet的通用方法,不会检测文件名的,文件名是CDS特有的

  8. python3 win10_x64 安装pcapy

    稀里糊涂就装上了 大概记录一下都有什么. visual studio build tools 2015 下载地址: http://landinghub.visualstudio.com/visual- ...

  9. mac_os_x更新yosemite以后github客户端更新提示ca认证错误解决办法

    最近手贱更新了mac os yosemite的系统版本,更新以后发现部分软件无法使用,例如php 扩展的redis模块,mou,eclipse等等,甚是郁闷啊.对于图形化的软件还好说去官网更新一下新版 ...

  10. 基于资源名的MVC权限控制

    在程序复杂程度不断上升的过程中,无可避免需要触碰到权限控制,而权限控制又与业务逻辑紧紧相关,市场上出现了大量的权限控制产品,而程序的开发,讲究去繁化简的抽象,在我的开发过程中,逐渐发现程序的权限控制核 ...