SQL通用语法
- DDL(数据定义语言):create,alter,drop,truncate
- DML(数据操作语言):update,delete,insert
- DQL(数据查询语言):select,where。。。
- DCL(数据控制语言)(了解):grant,revoke
- 注释:-- 单行注释,/* */ 多行注释
MySql语法
重点:查询语句
select [distinct]
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序(asc/desc)
limit
分页限定(开始索引,每页数)
约束
- 主键约束:primary key
- 非空约束:null
- 唯一约束:unique
- 外键约束:foreign key
数据库设计的范式
第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
三大范式
- 第一范式:表的每一列都是不可分割的原子项
- 第二范式:在1NF的基础上,非码属性必须完全依赖于码。
码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码。主属性即码属性中的所有属性。
- 在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)
多表查询
- 内连接查询(类似取交集)
- 外连接查询
左外连接(查询的是左表所有数据以及其交集部分):select 字段列表 from 表1 left [outer] join 表2 on 条件;
右外连接(查询的是右表所有数据以及其交集部分):select 字段列表 from 表1 right [outer] join 表2 on 条件; - 子查询(查询中嵌套查询,称嵌套查询为子查询)
子查询为单行单列:作为条件
子查询为多行单列:作为条件
子查询为多行多列:可以作为一张新的表
事务
如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
- 事务操作
- 开启事务: start transaction;
- 回滚:rollback;
- 提交:commit;
- 事务四大特性
- 原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。
- 持久性:当事务提交或回滚后,数据库会持久化的保存数据。
- 隔离性:多个事务之间。相互独立。
- 一致性:事务操作前后,数据总量不变。(简单说就是事务提交后就代表事务中的所有操作都已执行成功。)
- 事务的隔离级别