1.函数
1.1.字符串函数
1.2.数值函数
1.3.日期函数
1.4.流程函数
2.约束
3.多表查询
3.1、多表关系一般分为三种:一对一,一对多,多对多
3.1.1、一对多
实现方式:在多的一方建立外键,指向一的一方的主键。
例子:班级-学生关系 ;一个班级有多个学生,一个学生属于一个班级;在学生表建立外键,指向班级表
3.1.2、多对多
实现方式:建立中间表,中间表维护双方的关系
例子:学生-课程关系;一个学生可以选择多门课程,一门课程可以被多位学生选择。
3.1.3、一对一
实现方式:在任意一方加一个外键,关联另一方的主键,外键设置唯一约束
例子:学生-学生信息;一般设计上,一个学生对应一条学生信息
3.2、多表查询分类
3.2.1、连接查询
3.2.1.1、内连接:查询A,B表交集的数据
3.2.1.1.1、隐式内连接
select 字段列表 from 表1,表2 where 条件;
3.2.1.1.2、显式内连接
select 字段列表 from 表1 [inner] join 表2 on 连接条件;
3.2.1.2、外连接
3.2.1.2.1、左外连接
select 字段列表 from 表1 left join 表2 on 条件;
3.2.1.2.2、右外连接
select 字段列表 from 表1 right join 表2 on 条件;
3.2.1.3、自连接
select 字段列表 from 表1 别名a join 表1 别名b on 条件;
--自连接一定要指定别名,可以是左外连接,也可以是右外连接
3.2.2、联合查询
3.2.2、union ; union all把多次查询结果合并成一个新的结果集
select 字段列表 from 表1
union [all]
select 字段列表 from 表2
--union 查询结果去重;union all 查询结果不去重
--union 要求两部分的查询的结果字段类型必须保持一致并且列数也必须保持一致
3.2.3、子查询:SQL语句中嵌套select语句
select 列表字段 from 表名 where column1=(select column1 from 表名);
--查询的条件是另一个查询的结果
3.2.3.1、标量子查询:子查询结果是单个值
3.2.3.2、列子查询:子查询结果是一列(可以是多行),常用操作符:in /not in /any/some/all
3.2.3.3、行子查询:子查询结果是一行(可以是多列)
select 字段列表 from 表1 where (字段1,字段2,...)=(值1,值2,...)
3.2.3.4、表子查询:子查询返回的结果是多行多列,常用操作符in。
4.事务
4. 1、什么是事务?
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或者撤销操作请求,要么同时成功,要么同时失败。
事务的四大特性(ACID):原子性、一致性、持久性、隔离性
4.2.并发事务问题
4.3.事务的隔离级别
repeatable read 是MySQL默认的事务隔离级别;而oracle默认的事务隔离级别是read committed。
4.3.1、查看事务隔离级别
select @@TRANSACTION_ISOLATION;
4.3.2、设置事务隔离级别
set [session|global] transaction isolation level {read uncommitted|
read committed|repeatable read|serializable}