语法 :
*内连接
*做外链接
*右外链接 多表查询 : *语法和单表查询一样,只是from后多加了几个表,但表和表之间都是有关系的
*笛卡尔积 : (A集合,B集合的乘积)--取A集合和B集合所有的组合情况 *多表查询的用途 : 消除无用的数据(消除无用的笛卡尔积) *多表查询的分类 :
*内连接查询
*隐式内连接
*显式内连接
*外链接查询
*子查询 一,内连接 : *隐式内连接 :使用where条件来消除无用的数据 *例如 :
查询所有员工信息和对应的部门信息
select * from empt , dept where empt.'dept_id; - dept.'id'
*引号可写可不写
*如果后面还有条件,就在关联条件后用and连接
*查询员工表的名称 ,性别 和部门名称
select
t1.name,
t1.gender,
t2.name,
from
empt t1,
dept t2
where
t1.'dept_id = t2.'id' ; *显示内连接 : *语法 : select 字段列表 from 表名1 /inner/ join 表名2 on 条件
*inner :可以省略不写 *例如 : select * from emp join dept on emp . dept_id = dept.id
*如果还有其他普通条件,在关联条件后加where 条件 二,外链接
*左外链接:select * from emp lift [outer] join dept on emp . dept_id = dept.id
*左外链接查询的是左表所有数据以及其交集
*右外链接:select * from emp right [outer] join dept on emp . dept_id = dept.id
*右外链接查询的是右表所有数据以及交集 和内连接的区别 : 内连接取的是两个表中共有的数据<------>外链接以其中的一张表为主,代表其中一张表多出来的部分和与另外表交集的部分 三,子查询 :查询中嵌套查询,称嵌套的查询为子查询
例如 : 查询工资最高的员工信息 *1,查询最高的工资是多少
select max(salary) from emp;
*2,查询员工信息,并且等于最高的
select * from emp where emp.salary = 9000 ;
使用子查询 : 一条sql语句完成这个操作
*select * from emp where emp.salary = (select max(salary) from emp) ;