连接查询
连接查询是将两个或多个的表按某个条件连接起来,从中选取需要的数据,连接查询是同时查询两个或两个以上的表的使用的。当不同的表中存在相同意义的字段时,可以通过该字段来连接这几个表。
1.内连接查询
内连接查询是一种最常用的连接查询。内查询可以查询两个或两个以上的表。举例说明两个表的连接查询。当该字段的值相等时,就查询出该记录。
举个栗子~
SELECT num,name,employee.d_id,sex,d_name,function
FROM employee ,department
WHERE employee.d_id=department.d_id;
2.外连接查询
基本语法:
SELECT 属性名列表
FROM 表名1 LEFT | RIGHT JOIN 表名2
ON 表名1.属性1=表名2.属性2;
- 左连接查询
进行左连接查询时,可以查出表1的表中所有记录,而表2所指的表中,只能查询出匹配的记录
- 右连接查询
进行右连接查询时,可以查出表2的表中所有记录,而表1所指的表中,只能查询出匹配的记录
3.复合·条件查询
在连接查询时,也可以增加其他的限制条件,使查询结果更加准确。
子查询
子查询是将一个查询语句嵌套在另外一个查询语句中,内层查询语句的查询结果,可以为外层查询语句提供查询条件。
举个栗子~IN
SELECT * FROM employee
WHERE d_id IN
(SELECT d_id FROM department);
还 举个栗子~比较运算符
SELECT id ,name, score FROM computer_stu
WHERE score>=
(SELECT score FROM scholarship
WHERE level=1);
还 举个栗子~EXISTS(表示存在,使用EXISTS关键字时,内层查询语句不反悔查询的记录,而是返回一个真假值)
SELECT * FROM employee
WHERE EXISTS
( SELECT d_name FROM department
WHERE d_id =1003);
还 举个栗子~ANY(表示满足其中任一条件)
如查询获得任意一个奖学金的最低分,即只要获得奖学金都满足条件
SELECT * FROM computer_stu
WHERE score >=ANY
( SELECT score FROM scholarship);
最后一个栗子~ALL(表示满足所有条件)
如查询获得最高奖学金的记录
SELECT * FROM computer_stu
WHERE score >=ALL
( SELECT score FROM scholarship);