select a.StudentID,a.sname,email,c.subJectName,a.class,b.mark
from TStudent a join TScore b on a.StudentID=b.StudentID
join TSubject c on b.subJectID=c.subJectID where a.class='JAVA';
create view netview
as
select a.StudentID,a.sname,email,c.subJectName,a.class,b.mark
from TStudent a join TScore b on a.StudentID=b.StudentID
join TSubject c on b.subJectID=c.subJectID where a.class='NET';
授权java用户访问 schoolDB.javaview视图
grant select on schoolDB.javaview to 'java'@'%'>
授权net用户访问 schoolDB.netview视图
grant select on schoolDB.netview to 'net'@'%'>
使用SQL Manager客户端连接数据库时,java、net用户分别可以访问javaview视图和netview视图。
B、隐藏数据复杂性。视图可以隐藏一些数据,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等。视图就像一个视口,从视口中只能看到过滤后的某些数据列。
B、通过视图删除表中记录
视图的基表只能有一张表,如果有多张表,将不知道从哪一张表删除。
delete from studentview where studentid='01001';
C、通过视图修改表中记录
只能修改视图中有的列。
update studentview set sname='孙悟空' where studentid='00001';
4、查看视图的信息
查看视图的信息
describe viewname;
desc scoreview;
查看所有的表和视图
show tables;
查看视图的信息
show fields from scoreview;
5、修改视图
CREATE OR REPLACE VIEW viewname AS SELECT [...] FROM [...];
alter view studentview
as select studentID as 学号, sname as 姓名, sex as 性别 from TStudent;