SQL (结构化 Structured 查询 Query 语言 Language)
分类
DDL(数据定义语言) 表的定义、用户的定义... create drop alter
DML(数据操控语言) 对数据的增加、修改、删除、查询 insert update delete select
DCL(数据控制语言) grant(授权) revoke(回收)
DML
insert into 表 (列...) values (值...);
insert into 表 (列...) values (值...), (值...)...
insert into 表1 (列...) select 列... from 表2
update 表 set 列=新值, ...
update 表 set 列=新值, ... where 条件
delete from 表;
delete from 表 where 条件
select 列... from 表
inner|left join 表 on 连接条件
where 条件
group by 列... having 条件
order by 列 asc|desc
limit n, m
子查询 (sub query)
求最高工资的员工信息
select max(sal),e.* from emp e; -- 会报错
select max(sal) from emp e;
-- 最大值 一行记录 , 但名字有两个
情况1:把子查询当做一个值
分解问题:
select max(sal) from emp; --> 第一步:5000 把它看做一个值
select * from emp where sal = 5000; --> 第二步:写主查询语句
select * from emp where sal = (select max(sal) from emp); --> 第三步:替换
情况2:把子查询当做一张表
每个部门的最高工资的员工
第一步:按部门分组
(select max(sal) msal, deptno from emp group by deptno) a
// 生成了临时表 a, 其中有两列: msal, deptno