DMsql

DMsql

⚫ SQL分类

DML:select、insert、update、delete
DDL: create、drop、alter、truncate
DCL:revoke、grant
TCL:commit、rollback、savepoint

Delete 和 truncate 的区别:
Delete:DML 语句、产生 redo 和 undo、可以回滚,速度相对慢,可以删除部分数据;
Truncate: DDL 语句,不产生 redo,不能回滚,速度更快,可以降低表的水位线。
⚫ 多表连接

select * from dmhr.employee natural join dmhr.department;

select * from dmhr.employee a join dmhr.department b
using(department_id);

select a.employee_id, a.employee_name, b.department_name from
dmhr.employee a join dmhr.department b on a.department_id =
b.department_id where a.department_id = 1001;

左关联:左表的数据都全部列出:

update dmhr.employee a set a.department_id = null where a.employee_id = 1001;

select a.employee_id, a.employee_name, a.department_id,
b.department_id, b.department_name from dmhr.employee a left join
dmhr.department b on a.department_id = b.department_id;

右关联:

select a.employee_id, a.employee_name, a.department_id, b.department_id, b.department_name from dmhr.employee a right join dmhr.department b on a.department_id = b.department_id;

全关联:

select a.employee_id, a.employee_name, a.department_id,
b.department_id, b.department_name from dmmhr employeea full outer
join dmhr departmentb on a.departement_id = b.department_id;

注意外关联时on条件和where条件的区别。

select a.employee_id, a.employee_name, a.department_id,
b.department_id, b.department_name from dmhr.employee a full outer
join dmhr.department b on a.department_id = b.department_id and
a.department_id is not null;

select a.employee_id, a.employee_name, a.department_id,
b.department_id, b.department_name from dmhr.employee a full outer
join dmhr.department b on a.department_id = b.department_id where
a.department_id is not null;

GROUP BY和HAVING的用法:

select b.department_name, sum(a.salary) from dmhr.employee
a,dmhr.department b where a.department_id = b.department_id group by
b.department_name having sum(a.salary)>100000;

select * from (select b.department_name, sum(a.salary) sum_salary
from dmhr.employee a,dmhr.department b where a.department_id =
b.department_id group by b.department_name) where sum_salary >100000;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值