MySQL创建表视图及多表视图

MySQL视图(View)是一种虚拟的表,同真实的表一样,拥有相同的行和列 ,但视图并不实际存在于数据库中,而是在你使用的时候去动态的查询表,view的行和列都是基于你使用view的时候动态的去查询表的数据而生成视图 数据库只存view的定义并没有存放view的数据 在你使用视图(view)时,数据库会从真实表内取出view所对应的数据 也就是说view是的数据是完全依赖于真实表的数据,当真实表的数据发送修改,删除,使用视图(view)查询到的虚拟表也将会是被修改删除后的数据 基于单表创建视图

#创建学生表
create table Student(Sid varchar(6), Sname varchar(10), Sage datetime, Ssex varchar(10));
#插入数据
insert into Student values(01 , 赵雷 , 1990-01-01 , 男);
insert into Student values(02 , 钱电 , 1990-12-21 , 男);
insert into Student values(03 , 孙风 , 1990-05-20 , 男);
#基于单表创建视图
create view  <视图名> as <select语句>
create view view_stuent_info as select `st`.s_id`, `st`.`s_name` from student ;

基于多表创建视图

#创建成绩表
create table SC(Sid varchar(10), Cid varchar(10), score decimal(18,1));
insert into SC values(01 , 01 , 80);
insert into SC values(01 , 02 , 90);
insert into SC values(01 , 03 , 99);
insert into SC values(02 , 01 , 70);
insert into SC values(02 , 02 , 60);
insert into SC values(02 , 03 , 80);
insert into SC values(03 , 01 , 80);
insert into SC values(03 , 02 , 80);
insert into SC values(03 , 03 , 80);
#基于多表创建视图
create view <视图名> as 查询语句 表1 表2
create view view_student_score as select `st`.`s_id`,`sc`.`s_score` 
from student st left join score sc 
on `st`.`s_id` = `sc`.`s_id`
where `st`.`s_sex` = 男;
经验分享 程序员 微信小程序 职场和发展