邯郸网站建设维护,广告设计专业哪个大学最好,网站项目的介绍,福田莲花北网站建设一、什么是视图 MySQL 视图#xff08;View#xff09;是一种虚拟存在的表#xff0c;同真实表一样#xff0c;视图也由列和行构成#xff0c; 但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的 表#xff0c;并且还是在使用视图时动态生成的。…一、什么是视图 MySQL 视图View是一种虚拟存在的表同真实表一样视图也由列和行构成 但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的 表并且还是在使用视图时动态生成的。 使用视图查询数据时数据库会从真实表中取出对应的数 据。因此视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改 变显示在视图中的数据也会发生改变。 视图可以从原有的表上选取对用户有用的信息那些对用户没用或者用户没有权限 了解的信息都可以直接屏蔽掉作用类似于筛选。这样做既使应用简单化也保证 了系统的安全。 二、视图与表的区别 视图并不同于数据表它们的区别在于以下几点 视图不是数据库中真实的表而是一张虚拟表其结构和数据是建立在对数据中真实表的查询基础上的。存储在数据库中的查询操作 SQL 语句定义了视图的内容列数据和行数据来自于视图查询所引用的实际表引用视图时动态生成这些数据。视图没有实际的物理记录不是以数据集的形式存储在数据库中的它所对应的数据实际上是存储在视图所引用的真实表中的。视图是数据的窗口而表是内容。表是实际数据的存放单位而视图只是以不同的显示方式展示数据其数据来源还是实际表。视图是查看数据表的一种方法可以查询数据表中某些字段构成的数据只是一些 SQL 语句的集合。从安全的角度来看视图的数据安全性更高使用视图的用户不接触数据表不知道表结构。视图的建立和删除只影响视图本身不影响对应的基本表。三、视图的优点 视图与表在本质上虽然不相同但视图经过定义以后结构形式和表一样可以进行 查询、修改、更新和删除等操作。同时视图具有如下优点 1) 定制用户数据聚焦特定的数据 在实际的应用过程中不同的用户可能对不同的数据有不同的要求。 例如当数据库同时存在时如学生基本信息表、课程表和教师信息表等多种表同时 存在时可以根据需求让不同的用户使用各自的数据。学生查看修改自己基本信息的 视图安排课程人员查看修改课程表和教师信息的视图教师查看学生信息和课程信 息表的视图。 2) 简化数据操作 在使用查询时很多时候要使用聚合函数同时还要显示其他字段的信息可能还需 要关联到其他表语句可能会很长如果这个动作频繁发生的话可以创建视图来简 化操作。 3) 提高数据的安全性 视图是虚拟的物理上是不存在的。可以只授予用户视图的权限而不具体指定使用 表的权限来保护基础数据的安全。 4) 共享所需数据 通过使用视图每个用户不必都定义和存储自己所需的数据可以共享数据库中的数 据同样的数据只需要存储一次。 5) 更改数据格式 通过使用视图可以重新格式化检索出的数据并组织输出到其他应用程序中。 6) 重用 SQL 语句 视图提供的是对查询操作的封装本身不包含数据所呈现的数据是根据视图定义从 基础表中检索出来的如果基础表的数据新增或删除视图呈现的也是更新后的数据。视图定义后编写完所需的查询可以方便地重用该视图。 要注意区别视图和数据表的本质即视图是基于真实表的一张虚拟的表其数据来源 均建立在真实表的基础上。 四、创建基于单表的视图 语法 creat view 视图名 as select语句 视图名指定视图的名称。该名称在数据库中必须是唯一的不能与其他表或 视图同名。select语句通过select语句查询数据组成新的视图 对于创建视图中的 SELECT 语句的指定存在以下限制 用户除了拥有 CREATE VIEW 权限外还具有操作中涉及的基础表和其他视图的相关权限。SELECT 语句不能引用系统或用户变量。SELECT 语句不能包含 FROM 子句中的子查询。SELECT 语句不能引用预处理语句参数。① 查看数据库 ② 切到Class_LInux数据库 ③ 查看库中的所有表 ④ 查看表中的内容 ⑤ 创建视图 将students表中的idname字段作为students_name视图中的数据 create view students_name as select id,name from students;⑥ 查看视图是否创建成功 有了students_name 说明视图创建成功 ⑦ 查看视图信息 五、创建基于多表的视图 以student表student_course表course2表创建多表视图 create view student_info(s_id,s_name,s_no,sc_courseid,c_name) as
select s.id,s.name,s.no,sc.courseid,c.name from student s,student_course sc,course2 c where s.idsc.studentid and sc.courseidc.id;【 解释】 create view student_info(s_id,s_name,s_no,sc_courseid,c_name) # 创建的视图student_info拥有的字段为s_id,s_name,s_no,sc_courseid,c_nameselect s.id,s.name,s.no,sc.courseid,c.name from student s,student_course sc,course2 c where s.idsc.studentid and sc.courseidc.id; # select语句【s.id,s.name,s.no,sc.courseid,c.name】就是从这三张表中所拿出的数据去创建student_info视图【student s,student_course sc,course2 c】就是视图数据来源的三张表我这里给student 重命名为sstudent_course 重命名为sccourse2 重命名为 c方便后续操作【s.idsc.studentid and sc.courseidc.id】就是将这三张表连接起来 【所以创建基于多表的视图说白了就是视图名后边加上视图所具有字段select语句就是进行了多表连接将一些字段放进视图注意”视图所具有字段“ 和 “一些字段”是一样的字段但是”视图所具有字段“最好重命名】 六、视图结构的查看 视图一经定义之后就可以如同查询数据表一样使用 SELECT 语句查询视图中的数据语法和查询基础表的数据一样。 视图用于查询主要应用在以下几个方面 使用视图重新格式化检索出的数据。使用视图简化复杂的表连接。使用视图过滤数据。DESCRIBE 可以用来查看视图的结构语法如下DESCRIBE 视图名 【注意】DESCRIBE 一般情况下可以简写成 DESC输入这个命令的执行结果和输 入 DESCRIBE 是一样的 desc 视图名 七、查看视图的详细信息 在 MySQL 中SHOW CREATE VIEW 语句可以查看视图的详细定义。 其语法如下所示 SHOW CREATE VIEW 视图名 \G 上述 SQL 语句以 \G 结尾这样能使显示结果格式化。如果不使用 \G 显示的结果 会比较混乱如下所示 八、查看视图的数据信息 语法和查询表的语法一致 九、视图的修改 可以使用 ALTER VIEW 语句来对已有的视图进行修改。 语法格式如下 ALTER VIEW 视图名 AS SELECT语句 ① 查看视图students_name ② 查看表studnets ③ 将视图students_name的两个字段修改成四个个字段 ④ 查看视图是否修改成功 10、修改视图内容 视图是一个虚拟表实际的数据来自于基本表所以通过插入、修改和删除操作更新 视图中的数据实质上是在更新视图所引用的基本表的数据。 【注意对视图的修改就是对基本表的修改因此在修改时要满足基本表的数据定义。】 某些视图是可更新的。也就是说可以使用 UPDATE、DELETE 或 INSERT 等语句更新基本表的内容。对于可更新的视图视图中的行和基本表的行之间必须具有一对一的关系。 还有一些特定的其他结构这些结构会使得视图不可更新。更具体地讲如果视图包含以下结构中的任何一种它就是不可更新的 聚合函数 SUM()、MIN()、MAX()、COUNT() 等。DISTINCT 关键字。GROUP BY 子句。HAVING 子句。UNION 或 UNION ALL 运算符。位于选择列表中的子查询。FROM 子句中的不可更新视图或包含多个表。WHERE 子句中的子查询引用 FROM 子句中的表。ALGORITHM 选项为 TEMPTABLE使用临时表总会使视图成为不可更新的的时候。使用 UPDATE 语句更新视图语法如下 update 视图名 set 修改后的值 where 条件 ① 查看原视图 ② 修改id为11的name为哈哈哈 ③ 查看视图是否修改成功 十一、修改视图名称 修改视图的名称可以先将视图删除然后按照相同的定义语句进行视图的创建并命名为新的视图名称。 也就是视图名称不能直接修改只能先将原视图删除再创建一个不同名但内容相同的视图 十二、视图的删除 语法 drop view 视图名; ① 删除视图students_name ② 查看视图students_name发现不存在说明删除成功