时间:2021-07-01 10:21:17 帮助过:7人阅读
加上or replace 时如果已经存在相同的视图则替换原有视图
column_list 指定那些字段要出现在视图中
注意:由于视图是一张虚拟表,视图中的数据实际来源其他表,所以视图中的数据不会出现在硬盘上。
视图是一张虚拟表,所以使用正常的表没有任何区别
1.desc view_name; 查看数据结构
2.show create view view_name; 查看创建语句
alter view_name as select_statement
drop view view_name
#准备数据 create database db02 charset utf8; use db02 create table student( s_id int(3), name varchar(20), math float, chinese float ); insert into student values(1,‘tom‘,80,70),(2,‘jack‘,80,80),(3,‘rose‘,60,75); ? create table stu_info( s_id int(3), class varchar(50), addr varchar(100) ); insert into stu_info values(1,‘二班‘,‘安徽‘),(2,‘二班‘,‘湖南‘),(3,‘三班‘,‘黑龙江‘);
#创建视图包含 编号 学生的姓名 和班级
create view view_stu (学号,姓名,班级) as select student.s_id,student.name,stu_info.class from student join stu_info on student.s_id = stu_info.s_id;
查看创建的视图
select * from view_stu;
准备数据
create table salarys( id int primary key, name char(10), salary double, dept char(10) ); insert into salarys values (1,"刘强东",900000,"市场"), (2,"马云",800090,"市场"), (3,"李彦宏",989090,"财务"), (4,"马化腾",87879999,"财务");
创建市场部专用的工资视图
create view view_shichang as select * from salarys where dept = "市场";
查看视图
select * from view_shichang;
同时注意:对视图数据的insert update delete会同步到原表中,但是由于视图可能是部分字段,很多时候会失败。
修改原表中的数据,视图的数据会随之该表。这是建议修改数据的方式,不建议直接对视图中的数据进行修改。
mysql> select * from view_shichang;
+----+--------+--------+------+
| id | name | salary | dept |
+----+--------+--------+------+
| 1 | 刘强东 | 900000 | 市场 |
| 2 | 马云 | 800090 | 市场 |
+----+--------+--------+------+
update salarys set salary = 10000 where name = "刘强东";
mysql> select * from view_shichang;
+----+--------+--------+------+
| id | name | salary | dept |
+----+--------+--------+------+
| 1 | 刘强东 | 10000 | 市场 |
| 2 | 马云 | 800090 | 市场 |
+----+--------+--------+------+
总结:mysql可以分担程序中的部分逻辑,但这样一来后续的维护会变得更麻烦
如果需要改表结构,那意味着视图也需要相应的修改,没有直接在程序中修改sql来的方便
sql——视图
标签:table utf8 刘强东 一个 upd lte mysql dem values