子查询

1. 笛卡尔连接  如果一个表m行  一个表n行  笛卡尔积为n*m行   应尽量避免笛卡儿连接,即应该在from子句中有n个表时,在where子句中至少要有n-1

 

2. 自身连接   from table a,table b    table是同一个表,但是有两个不同的别名

 

3. 内连接   只有当连接中的列的值满足连接条件时才会返回相应的行的连接。前面的都是内连接。

 

select e.first_name,d.department_name
from employees e,departments d
where e.department_id=d.department_id
and e.employee_id=177;

 

select e.first_name,d.department_name
from employees e inner join departments d
on e.department_id=d.department_id
and e.employee_id=177;

 

 4. 单行子查询   子查询返回单行记录  可以使用单行运算符   =  < > ...

select * 
from employees
where salary = (
select max(salary)
from employees
)

 

 5. 子查询返回多行记录,使用多行运算符   in  not in   exists  all  any

select * 
from employees
where salary >= all (
select salary
from employees
where department_id=20
)

 

 4. 多列子查询

select * 
from employees
where (salary,job_id)= (
select salary,job_id
from employees
where employee_id=198
)

  

 

 5. 在DDL  DML中使用子查询   

create table
emp(emp_id,f_name,hire_date,sal,dept_id)
as
select employee_id,first_name,hire_date,salary,department_id
from employees 
where department_id in (90,110)
order by department_id,employee_id

 

 

 

insert into emp
select employee_id,first_name,hire_date,salary,department_id
from employees 
where department_id = 20

 

delete from emp
where sal> (select avg(max_salary) from jobs)

  

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值