SQL是3个表的查询,会给出表以及3个表之间的约束关系
Student表
No编号 Name 姓名Birthday 生日bj 班级jg 籍贯adds地址 number电话
Course表
Kcbh课程编号 kcmc课程名称
Source 表
Cjguid (主键)No 编号kcbh 课程编号cj成绩
(1)查询学生籍贯为‘湖北’生日为1995-10-3的所有信息
(2)查询学生姓名为‘王华’的各课程的平均分,最高分,最低分,总分。
(3)没有太看题,大致是要求查询4,5列以上的信息,其中3个表各包含一些信息
谢谢,之前学过一点,但是都忘的差不多了。还有点不明白的是,where 1=1是什么意思?
追答1=1 是一条永远成立的逻辑表达式,这里没有任何实际的条件过滤用途;
仅仅是为了方便编辑和阅读的格式模板而已。
你可以在任何需要进行多组条件筛选时地方,
一上来就先放一个"where 1=1",
然后再在后续每行添加相关的"and ...";
这样就可以很方便地增加或减少筛选条件。
哦,懂了。
avg(kcbh) as 平均分, 是不是成绩cj啊,写成了课程编号kcbh?
exists (select 1 from Student.where 1=1 and Student.No = Source.No Name = '王华')
这个是判断姓名为王华的同学是否存在? select 1 from Student.where 1=1 这前面的1 是什么意思?
you are right.
"exists (select 1 from ...)"
这种格式是老前辈们传承下来的,用来判断子查询的逻辑是否满足条件。由于不需要具体的字段,就简简单单地返回一个"1"表明后续条件的成立状态(据说这种模式对SQL服务器的负担最小)
看来是高手啊,之前学的都忘了。非常感谢!私信吧,以后有问题直接向你请教好了。O(∩_∩)O
追答OK
谢谢回答。
where no = (select top 1 no from student where name='王华')
这个部分看不懂,SQL 好久都没用到了。