MySQL中的视图重点总结

视图:

不同的人员关注不同的数据

保证信息的安全性

 

视图是一张虚拟表:

  1. 表示一张表的部分数据或多张表的综合数据
  2. 其结构和数据是建立在对表的查询基础上

视图中不存放数据:数据存放在视图所引用的原始表中

一个原始表,根据不同用户的不同需求,可以创建不同的视图

 

视图的用途:

  1. 筛选表中的行
  2. 防止未经许可的用户访问敏感数据
  3. 降低数据库的复杂程度
  4. 将多个物理数据库抽象为一个逻辑数据库

 

视图的主要语句:

1. 使用SQL语句创建视图:

CREATE VIEW view_name AS <SELECT 语句>;

2. 使用SQL语句删除视图

DROP VIEW [IF EXISTS] view_name;

             删除前判断视图是否存在

3. 使用SQL语句查看视图

SELECT 字段1, 字段2, …… FROM view_name;

 

使用视图注意事项:

  1. 视图中可以使用多个表
  2. 一个视图可以嵌套另一个视图
  3. 对视图数据进行添加、更新和删除操作直接影响所引用表中的数据
  4. 当视图数据来自多个表时,不允许添加和删除数据

 

查看所有视图:

USE information_schema;

SELECT * FROM views\G

注:

使用视图修改数据会有许多限制,一般在实际开发中视图仅用作查询

 

总结:

<think>好的,用户需要寻找带有中文备注的MySQL视图练习资料,并提供示例。首先,我需要确认用户的需求。他们可能正在学习MySQL视图,需要实际的例子来练习,并且希望这些例子有中文注释,这样更容易理解。 接下来,我应该回顾用户提供的引用内容,看看是否有相关的信息可以利用。引用[2]提到了视图的定义和作用,说明视图是基于基表的虚拟表,可以展示部分数据。这可以作为理论基础。用户可能需要结合理论和实际例子来练习。 用户提供的其他引用中有关于数据库表操作、临时表、变量赋值和查询示例。虽然这些不直接涉及视图,但可能在与视图相关的查询中用到。例如,在创建视图时可能需要使用SELECT语句,或者在视图中使用GROUP BY或ORDER BY时可能涉及临时表(引用[3])。 接下来,我需要构建一个包含中文注释的视图示例。可能需要先创建示例表,然后创建视图,并展示如何查询视图。同时,要确保注释是中文的,符合用户的需求。 根据引用[5]中的查询示例,用户可能需要视图来简化复杂的查询,比如统计学生人数或最高分。例如,可以创建一个视图来统计每个班级的学生人数,或者显示成绩信息,包括课程名和学生名,而不是学号和课程号。 还需要考虑视图的常见应用场景,如简化复杂查询、权限控制、数据抽象等。在示例中体现这些用途会更有帮助。例如,创建一个视图将学生表和成绩表连接起来,显示学生姓名、课程名和分数,这样用户就不需要每次都写复杂的JOIN语句。 另外,用户可能需要练习如何修改视图、查看视图结构以及删除视图。根据引用[1],可以使用SHOW CREATE TABLE查看创表语句,这可能也适用于视图。但需要注意,查看视图结构可能需要使用SHOW CREATE VIEW。 最后,确保所有的SQL语句都正确,并且注释清晰。例如,在创建视图时使用COMMENT关键字添加备注,或者在创建表时添加中文注释。同时,提供相关问题,帮助用户进一步练习,比如如何优化视图查询或视图与临时表的关系。 总结步骤: 1. 创建示例表(学生表、课程表、成绩表),并添加中文注释。 2. 创建视图,展示连接后的信息,并添加视图的注释。 3. 演示视图的查询、修改和删除操作。 4. 提供相关问题,巩固知识点。</think>### MySQL视图练习示例(含中文注释) 根据视图的定义和实践[^2],以下是三个视图练习示例: --- **示例1:创建基础视图** ```sql -- 创建学生信息基表(含中文注释) CREATE TABLE student ( stu_id INT PRIMARY KEY COMMENT '学号', stu_name VARCHAR(20) COMMENT '姓名', class_id INT COMMENT '班级编号' ) COMMENT='学生信息表'; -- 创建视图:显示95031班学生(含备注) CREATE VIEW v_class_95031 AS SELECT stu_id, stu_name FROM student WHERE class_id = 95031 COMMENT '筛选95031班学生的视图'; -- 视图级别注释 -- 查询视图(用法与普通表一致) SELECT * FROM v_class_95031; ``` --- **示例2:多表关联视图** ```sql -- 创建成绩表(含中文注释) CREATE TABLE score ( stu_id INT COMMENT '学号', course_id INT COMMENT '课程编号', grade INT COMMENT '分数' ) COMMENT='成绩表'; -- 创建视图:显示学生姓名+课程+分数(含连接逻辑) CREATE VIEW v_stu_score_detail AS SELECT s.stu_name AS 姓名, c.course_name AS 课程, sc.grade AS 分数 FROM student s JOIN score sc ON s.stu_id = sc.stu_id JOIN course c ON sc.course_id = c.course_id COMMENT '关联三表生成成绩明细视图'; -- 查询视图最高分(类似引用[5]的问题) SELECT 姓名, MAX(分数) FROM v_stu_score_detail; ``` --- **示例3:带聚合函数的视图** ```sql -- 创建视图:统计班级人数(含GROUP BY) CREATE VIEW v_class_count AS SELECT class_id AS 班级编号, COUNT(*) AS 学生人数 FROM student GROUP BY class_id COMMENT '统计各班人数的视图'; -- 查询结果会触发临时表操作[^3] SELECT * FROM v_class_count WHERE 学生人数 > 30; ``` --- ### 关键操作命令 1. **查看视图备注** ```sql SHOW CREATE VIEW v_class_95031; -- 显示视图定义及注释 ``` 2. **修改视图** ```sql ALTER VIEW v_class_95031 AS SELECT stu_id, stu_name, class_id -- 新增班级编号字段 FROM student WHERE class_id = 95031; ``` 3. **删除视图** ```sql DROP VIEW IF EXISTS v_class_count; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值