300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > SQL语句多表查询:【多表连查】和【子查询】

SQL语句多表查询:【多表连查】和【子查询】

时间:2022-08-15 13:40:13

相关推荐

SQL语句多表查询:【多表连查】和【子查询】

SQL语句多表查询:【多表连查】和【子查询】

说明:insert、update、delete只针对【一张表】执行操作。

说明:select可以查询一张表、也可以查询多张表。

说明:多表查询分为:【多表连查】和【子查询】。

(一)多表连查:至少指定【m-1】个公共列条件

(1)错误写法:笛卡尔积

A表m条记录、B表n条记录、m*n条记录。SELECT * FROM com, emp;

(2)正确写法:

如果查询m张表、至少指定【m-1】个公共列条件、否则就会产生笛卡尔积。SELECT * FROM com, emp WHERE com.id = id;

(3)公共列:多个表中都有的字段

公司表com id 公司id

员工表emp comid 公司id

说明:通过A表查B表、通过B表查A表、必须通过公共列作为条件来查询的。

(4)多表查询中别名的运用

查询小张的公司名SELECT com.name FROM com, emp WHERE com.id = id AND emp.name = '小张';SELECT c.nameFROM com c, emp eWHERE c.id = id AND e.name = '小张';SELECT ageFROM com, empWHERE com.id = id;查询HP的员工名字SELECT emp.name FROM com, emp WHERE com.id = id AND com.name = 'HP';说明:表别名不是必须的、但是列的别名如果出现相同情况必须要有的。SELECT com.id cid, com.name cname, emp.id eid, emp.name ename, emp.ageFROM com, emp WHERE com.id = id;

(5)左连接(左外连接):LEFT JOIN … ON

理解:左表中不满足条件的数据也被查询出来。

理解:左表中数据全部查询出来

理解:以写在前面的表为准,比如 com LEFT JOIN emp,com表写在前面,则com表是左表

SELECT *FROM com LEFT JOIN emp ON com.id = id;SELECT *FROM com LEFT OUTER JOIN emp ON com.id = id;

(6)右连接(右外连接):RIGHT JOIN … ON

说明:右表记录全部显示

SELECT *FROM emp RIGHT JOIN com ON com.id = id;SELECT *FROM emp RIGHT OUTER JOIN com ON com.id = id;

(7)内连接(和(2)等价结果):INNER JOIN … ON

说明:只显示满足条件的记录。

SELECT *FROM com INNER JOIN emp ON com.id = id;

(二)子查询(select语句的嵌套)

说明一:先掌握多表连接的写法、再掌握子查询的写法。

说明二:多表连接用的多、子查询用的少(特定场合)。

说明三:这两种互补写法。

多表连接思想:一次查询多张表、把所有条件都添加到where中。

子查询思想:分步。

(1)SELECT子查询

举例:小张所在公司

SELECT (SELECT name FROM com WHERE id = comid) cnameFROM emp WHERE name = '小张';

(2)WHERE子查询

举例:小张所在公司

SELECT nameFROM comWHERE id in (SELECT comid FROM emp WHERE name in ('小张','小王'));

(3)FROM子查询

说明:select子查询和where子查询结果是:数据

说明:from子查询结果是:【表格和数据】

说明:from子查询主要用于【3表】以上的查询。

举例:A、B、C、D、E。

思路:from (from (from (A和B) t01, C) t02, D) t03, E

SELECT com.nameFROM (SELECT comid cid FROM emp WHERE name = '小张') t01, comWHERE t01.cid = com.id;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。