数据库的查询
内连接
内连接有两种,一个是显示,一个是隐式
隐式内连接
格式:select * from A a ,B b where a.bid = b.bid;
显示内连接:
格式:select * from A a INNER JOIN B b ON a.fkey = b.fkey;
外连接
左外连接
以左表为基准,右表一一匹配,如果匹配上的就正常显示,匹配不上的,右表设置为null。左边数据依然显示
格式:select * from A a LEFT JOIN B b ON a.fkey = b.fkey;
关联条件写在on 关键字后面(主表中的外键 = 外键中的主键)
右外连接
以右表为基准,左表一一匹配,如果匹配上的就正常显示,匹配不上的,左表设置为null。右边数据依然显示
格式:select * from A a RIGHT JOIN B b ON a.fkey = b.fkey;
子查询
子查询也称为嵌套查询,在不同的位置,有着不同的功能以及效果
1.where 关键字
如果一个子查询出现在where条件的后面,那么该子查询就可以作为查询条件的一部分,通常该子查询只是查询出一列数据集合;
比如有三张表:
student表:
subject表:
result 表:
例子:
查询课程为(高等 数学-2)且分数不小于80分的学生的学号和姓名
代码的实现:
select s.StudentNo,s.StudentName from student s where s.StudentNo in(
select r.StudentNo from result r where r.SubjectNo = (select sub.SubjectNo from subject
sub where sub.subjectName = “高等数学-2”)
and r.StudentResult>80
)
2.from关键字
如果在from后面出现了子查询,那么我们可以把该子查询查询出来的结果集比作一张表,从这张表中查询