- 查询哪些课是选修课?
select Course_name from course where Course_no in (select distinct Cpno from course where cpno!='null');
8、自然连接:
select * from course as ca join course as cb on ca.cpno=cb.Course_no;
9、查询没有选修课课程的学生的学号和姓名(相关子查询,外层查询给内层查询提供数据,如果根据外层查询提供的数据能够查到结果,则内层查询返回真,否则返回假。外层查询的值根据内层查询结果为真或者假来决定留下哪些记录)
SELECT Stu_no,Stu_name from student where not EXISTS (SELECT * from score where student.Stu_no=score.Stu_no);
- 视图
1、基础知识:
1)定义:视图是通过定义查询语句select建立的虚拟表,在视图中查询的表成为基表;
2)但是在数据库中不会为视图存储数据;
3)视图是个虚拟表,并不表示任何物理数据,只是用来查看数据的窗口;
4)当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变;
5)定义视图的筛选可以来自数据库的一个或多个表,或者其他视图。分布式查询也可用于定义使用多个异类源数据的视图
6)在授权许可的情况下,通过视图来插入、更改和删除数据【一般不用,因为视图是用来查看的,而非用来更改数据】。即:可以通过视图对原表数据进行增、改、删操作,但是有一定的限制
7)可以从基表和其他视图中查看视图;可以再列表里看见视图的名字;
2、创建视图;
create view view_score as select student.Stu_no,Stu_name,course.Course_no,Course_name,score from student join score on student.Stu_no=score.Stu_no join course on course.Course_no=score.Course_no;
select * from view_score