做网站端口内容无法替换,做微信公众号网站,广州网站制作十年乐云seo,中国建设网网站主打一个实用 一. 连接查询 交叉连接 交叉连接返回两个表的笛卡尔积#xff0c;即每个表的每一行与另一个表的每一行组合 语法: SELECT *FROM table1 CROSS JOIN table2;内连接 查询两张表都存在的数据#xff0c;即排除两张表的未匹配部分 语法: SELECT 字段名 FROM 左表 IN… 主打一个实用 一. 连接查询 交叉连接 交叉连接返回两个表的笛卡尔积即每个表的每一行与另一个表的每一行组合 语法: SELECT *FROM table1 CROSS JOIN table2;内连接 查询两张表都存在的数据即排除两张表的未匹配部分 语法: SELECT 字段名 FROM 左表 INNER JOIN 右表 ON 条件外连接 a. 左外连接 保留左表部分包括其未匹配部分可以通过加上右表对应字段等于空的条件排除交集部分 语法 SELECT 字段名 FROM 左表 LEFT OUTER JOIN 右表 ON 条件b. 右外连接 保留右表部分包括其未匹配部分可以通过加上左表对应字段等于空的条件排除交集部分 语法 SELECT 字段名 FROM 左表 RIGHT OUTER JOIN 右表 ON 条件自连接 自连接算是外连接的一种特殊情况这里单独提出来,所用语法与交叉连接相似 自连接是指连接同一个表的两个不同实例用于在同一个表中比较不同行之间的数据,例如我需要查询表中工资为平均值的员工姓名由于在where里面不能使用聚合函数所以无法通过单表实现但可以借助自连接实现 SELECT columns
FROM table1 AS alias1
JOIN table1 AS alias2 ON alias1.column alias2.column;全外连接 保留两表所有行在mysql里面需要用UNION实现UNION会取并集并去除所以可以直接将左连接与右连接并起来 语法:
SELECT columns
FROM table1
LEFT JOIN table2 ON table1.column table2.column
UNION
SELECT columns
FROM table1
RIGHT JOIN table2 ON table1.column table2.column二. 子查询
单行子查询 使用单行运算符的子查询 ! 举例
select * from emp where salary(select salary from emp where name眨眼睛)多行子查询 同理“in、any、all” 举例
# 查询工资高于5000的员工使用in
SELECT dept.name FROM dept WHERE dept.id IN (SELECT dept_id FROM emp WHERE salary 5000)# 查询工资在眨眼睛以上的所有员工使用any
select name,salary from emp where salary any(select salary from emp where name眨眼睛)# 查询工资比眨眼睛高的所有员工使用all
select name,salary from emp where salary all(select salary from emp where name眨眼睛)多列子查询
# 查询部门在纽约并且入职时间在xxx时间以后的员工信息
SELECT emp.id AS emp_id,emp.name AS emp_name,emp.salary AS emp_salary,dept.id AS dept_id,dept.name AS dept_name
FROM employees emp,(SELECT * FROM departments WHERE location New York) AS dept
WHERE emp.department_id dept.idAND emp.join_date 2011-01-01;