一、创建视图的目的
简单 隐藏数据复杂性
安全 可以对视图授权
数据独立 可以屏蔽表结构变化对用户的影响 一、创建视图的目的 ,比如增加列,更改列名
二、创建视图
1. 创建单表视图
以下视图显示 JAVA 班的学生姓名、身份证号和班级。
CREATE VIEW JAVAstudent
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
查看学生的学号 姓名 身份证 总分 平均分
select 学号,姓名,班级,AVG(成绩) 平均分,sum(成绩) 总分 from vStudentInfo group by 学号,姓名,班级 order by 总分 desc
4.行列转换视图
以上视图为表,创建行列转换视图
create view chengji
as SELECT 学号,姓名,
AVG(CASE 科目 WHEN '大数据' THEN 成绩 END) 大数据,
AVG(CASE 科目 WHEN '网络管理' THEN 成绩 END) 网络管理,
AVG(CASE 科目 WHEN 'JAVA 开发' THEN 成绩 END) JAVA 开发,
AVG(CASE 科目 WHEN '人工智能' THEN 成绩 END) 人工智能
FROM vStudentInfo group by 学号,姓名
查询 chengji 视图
select * from chengji
三、查看视图
5. 查看视图基本信息
DESCRIBE `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 科目='.net 开发'
update vStudentInfo set 姓名='韩立刚' where 姓名='易祥辉' and 科目='.net 开发'
4. 通过视图插入数据
下面视图能够插入数据,视图来自一张表,且视图必须包含表中不允许为空的那些列。
alter VIEW vJAVAstudent1
as
SELECT studentID 学号,sname 姓名,cardID 身份证号,class 班级 from `TStudent` where 学号='10006'
通过视图插入记录
insert into vJAVAstudent1 values ('10006','章玉华','111111111','net')
select * from vJAVA
5. 通过视图删除数据
视图中的数据只能来源于一张表。
delete from Vjavastudent where 身份证号='3846152307322401'
六、删除创建的视图
6.查看创建的视图
7. 删除视图
drop view `vJAVA`
按 F5 可以看到 vJAVA 视图已经被删除
标签:数据库,身份证号,视图,vStudentInfo,姓名,部分,select,科目 From: https://blog.csdn.net/2301_78892847/article/details/144239397