select 字段 from 表名 GROUP BY 要分组的字段
- having 与 where 的区别:
1.having 是在分组后对数据进行过滤. where 是在分组前对数据进行过滤
2.having 后面可以使用聚合函数(统计函数) where 后面不可以使用聚合函数
注:WHERE 是对分组前记录的条件,如果某行记录没有满足 WHERE 子句的条件,那么这 行记录不会参加分组;而 HAVING 是对分组后数据的约束。
[](()6.分页limit
select * from 表名 limit 起始行,行数
-
查询语句书写顺序:select–from-where-group by-having-order by-limit
-
查询语句执行顺序:from-where-group by-having-select-order by-limit
[](()7.多表查询
(一)合并结果集:
-
UNION:去除重复记录,例如:SELECT * FROM t1 UNION SELECT * FROM t2;
-
UNIONALL:不去除重复记录,例如:SELECT * FROMt1 UNIONALL SELECT * FROM t2。
-
注:要求被合并的两个结果:列数、列类型必须相同。
(二)内连接
-
内连接的特点:查询结果必须满足条件。
-
例:SELECT* FROM emp e INNER JOIN dept d ON e.deptno=d.deptno;
(三)外连接
- 外连接的特点:查询出的结果存在不满足条件的可能。
a:左查询
-
左连接是先查询出左表(即以左表为主),然后查询右表,右表中满足条件的显示出来, 不满足条件的显示 NULL。
-
例:SELECT * FROM emp e LEFT OUTER JOIN dept d ON e.deptno=d.deptno;
b:右查询
-
右连接就是先把右表中所有记录都查询出来,然后左表满足条件的显示,不满足显示 NULL。
-
例:SELECT * FROM emp e RIGHT OUTER JOIN deptd ON e.deptno=d.deptno;
(四)子查询
-
子查询就是嵌套查询,即 SELECT 中包含 SELECT,如果一条语句中存在两个,或两 个以上 SELECT,那么就是子查询语句
-
all any关键字:
例:
查询条件:
工资高于 30 部门所有人工资,其中 30 部门所有人工资是子查询。高于所有 需要使用 all 关键字。
第一步:查询 30 部门所有人工资 SELECT sal FROM emp WHERE deptno=30;
第二步:查询高于 30 部门所有人工资的员工信息 SELECT * FRO M emp WHERE sal>ALL(${第一步})
结果: SELECT * FROM emp WHERE sal>ALL(SELECT sal FROM emp WHERE deptno=30)
[](()8.MySQL和Oracle的区别
-
Oracle 中有表空间概念 ,MySQL没有,MySQL就只有一个存防表的地方
-
主键:Mysql一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 时,不需要再指定该记录的主键值,Mysql将自动增长;Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。
-
空字符处理:MySQL中字段定义为非空字段后,也可以有空的内容,而oracle中非空字段不可以出现空内容。
-
分页:MySQL中用limit分页,oracle中用rownum