MySQL的简单整理

MySQL的简单整理

1.数据库语言
  • DDL:数据定义语言,用来定义数据库对象
  • DML:数据操作语言,用来对数据库中表的记录进行更新
  • DQL:数据查询语言,用来查询数据库中表的记录
  • DCL:数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户
2.简单的增删改
  • 增:insert into 表名 values()
  • 删:delete from 表名 where 条件
  • 改:update 表名 set 数据 where 条件
3.查询
  • 基础查询:select * from 表名
  • 条件查询:select * from 表名 where 条件
  • 模糊查询:select * from 表名 where 条件 like ‘通配符’
  • 去重查询:select distinct 字段 from 表名
  • 排序查询:select * from 表名 order by 列名 asc(默认) desc
4.聚合函数
  • count():统计指定列不为null的记录行数;
  • max() :计算指定列的最大值,如果是字符串类型,那么使用字符串排序运算;
  • min() :计算指定列的最小值,如果是字符串类型,那么使用字符串排序运算;
  • sum() :计算指定列的数值和,如果列类型不是数值类型,那么计算结果为 0;
  • AVG() :计算指定列的平均值,如果列类型不是数值类型,那么计算结果为 0;
5.分组查询

注:凡和聚合函数同时出现的列名,一定要写在 groupby 之后
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,插入记录时,不需要再指定该记录的主键值,Mysql将自动增长;Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。
  • 空字符处理:MySQL中字段定义为非空字段后,也可以有空的内容,而oracle中非空字段不可以出现空内容。
  • 分页:MySQL中用limit分页,oracle中用rownum
  • 单引号的处理:MySQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
  • 临时表的区别:在MySQL中,临时表是仅对当前用户会话可见的数据库对象,并且一旦会话结束,这些表将自动删除。Oracle中临时表的定义与MySQL略有不同,因为临时表一旦创建就会存在,直到它们被显式删除,并且对具有适当权限的所有会话都可见。但是,临时表中的数据仅对将数据插入表中的用户会话可见,并且数据可能在事务或用户会话期间持续存在。
  • 本质区别:Oracle数据库是一个对象关系数据库管理系统,MySQL是一个开源的关系数据库管理系统
  • 安全性:MySQL没有Oracle安全性高
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值