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` = 男;