使用SQLServer的存在,不存在
学生列表:创建表学生(
ID号(8)主键,
名称VARCHAR2(10),系数(8)
)类表:创建表select_course
(
ID号(8)主键,
student_id号码(8)外键(course_id)参考课程(ID),
course_id号码(8)外键(student_id)参考学生(ID)
课程:创建表课程
(
ID号(8)不为空,
c_name VARCHAR2(20),
c_no VARCHAR2(10)
学生表的数据:
我的名字deptment_id
------------------------------------
1回声1000
2春2000
3史密斯1000
4升2000course表数据:
我c_name c_no
--------------------------------------
1数据库的数据
2数学month1
3的英语english1select_course表数据:
我student_id course_id
这个
一百一十一
二百一十二
三百一十三
四百二十一
五百二十二
6321。选择查询所有学生ID、名称:(就是这个学生没有课,他没有选择。)分析:如果没有选择一个教训,然后(1)选择*从select_course SC sc.student_id = ts.id和sc.course_id =入境空,这表明(2)有不存在选择*从课程查询结果的记录(1查询),查询结果是当然没有回来,在这个时候选择*从t_student TS不存在后,判断结果是错误的,不执行查询。SQL >选择*从t_student TS不存在
(从不存在的C课程中选择*)
(SELECT * FROM select_course SC sc.student_id = ts.id和sc.course_id =入境));名称deptment_id
------------------------------------
1回声10002。查询没有选择所有的学生,不是所有的学生。(有这样一个学生,他没有选择至少一类),分析:只要没有选一门,即选择*从select_course SC student_id = t_student.id和course_id。
一个= course.id是空的,不存在空是真的。在这个时候,选择*从课程的查询结果(ID在子查询是course.id),因此,选择将要执行的SQL查询。>选择ID,名字从t_student存在(SELECT * FROM课程,课程,t_student)。
-------------------------
2春
3史米斯
4 liter3。查询一个未被选择的类。(没有这样的学生,他选择了至少一门课程)。分析:如果他选择了从过程中选择*,结果集不是空的。没有结果的存在是虚假的;选择ID,名字从t_student不执行查询。SQL >选择ID,名字从t_student哪里不存在(SELECT *,存在)。
-------------------------
4 liter4。至少调查一门课程的学生。
SQL >选择ID,名字从t_student存在(SELECT * FROM课程,课程,t_student)。
-------------------------
1回声
2春
3史米斯