MySQL的简单整理

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值