mysql篇Day4
20201224
知识点回顾:
1、连接查询:
(1) 内查询
(2) 外查询
2、三表查询
3、分页查询:limit
4、联合查询:union、union all
5、DML语言:
(1) Insert、delete、update
(2) truncate
6、DDL语言
(1) 数据库的定义(数据库与表)
(2) 数据库定义:
① 创建、删除、修改编码格式
(3) 表的定义:alter table
① 表的创建、修改、删除
② 默认表名定义:t_ 或 tbl_
作业分析与讲解:
1、------
知识点讲解:
1、表复制
(1) 复制表的结构
①
create table 新表 like 原表
(2) 复制表结构+数据
①
Create table 新表 select * from 原表
(3) 只复制部分数据
①
Create table 新表 select 列表 from 原表 where 筛选条件
(4) 只复制某些字段
①
Create table 新表 select 列表 from 原表 where 1=2
2、常见的数据类型
(1) 数值型
① 整型
② 小数
(2) 字符型
① 较短文本
- Char、varchar
② 较长文本
- text、blob
(3) 日期型
① Date
② Time
③ Year
④ Datetime
⑤ Timestamp
(4) 整型
① Tinyint =》1
② Smallint =》2
③ Mediumint =》3
④ Int、integer =》4
⑤ Bigint =》8
(5) 小数
① 分类
- 浮点型
a. float(M,D)
b. Double(M,D) - 定点型(精准:财务计算)
a. decimal(M,D)
b. 建议使用时,设置长度
备注:M:整数位数+小数位数,D:小数位数
(6) 字符型
① Char:定长
- 常用:状态码、性别 等
② Varchar
- 非定长的字符串
- 默认长度:255
③ 较长的文本
- text
- Blob(二进制)
④ 其他类型
- Enum:枚举
- Set:集合
(7) 日期类型
① Date:只保存日期
② Time:只保存时间
③ Year:只保存年份
④ Datetime:保存 日期+时间
⑤ Timestamp:保存 日期+时间
⑥ Datetime 与 timestamp 区别
3、约束
(1) 概念
① 一种限制,用于限制表中的数据,为了保证表中数据的准确和可靠性
(2) 约束的种类
① 默认:default
② 非空约束:NOT Null
③ 主键约束:PRIMARY KEY
④ 唯一约束:UNIQUE
⑤ 检查约束:CHECK(mysql不支持)
⑥ 外键约束:FOREIGN KEY
(3) 添加约束的分类
① 列级约束
- 六大约束语法都支持,但是外键约束没有效果
② 表级约束
- 除了 非空、默认,其他都支持
(4) 案例:(列级别约束)
注意:检查约束与外键约束,无效
(5) 案例:(表级别约束)
注意:检查约束 无效
(6) 案例:(表级别约束:自定义约束名称)
4、约束的修改
(1) 添加列级别约束
①
Alter table 表名 modify column 字段名 字段类型 新约束;
(2) 添加表级别约束
①
Alter table 表名 add 【constraint 约束名】 约束类型(字段名)【外键引用】
(3) 案例:
(4) 删除约束
(5) 主键约束 与 唯一约束对比
5、自增长:(经常与主键配合使用)
(1) 自增长:可以不用手动的插入值,系统提供默认的序列值
(2) 使用形式:
① auto_increment(mysql支持)
② sequence (序列:oracle支持)
(3) 案例:
(4) 是否可以设置自增长的步长???
① 默认的步长:1
②
set auto_increment_increment = 步长;
6、事务:transaction
(1) 什么是事务
① 一个完整的业务逻辑单元,不可再分
(2) 和事务相关的语句:insert、delete、update
① 为什么?
- 因为这三个语句都是和数据库中的数据有关,事务的存在主要是为了保证诗句的完整性、安全性
(3) 事务的特性:ACID
① A:原子性 - 事务是最小的工作单元,是不可再分
② C:一致性
- 事务必须保证多条DML语句同时成功或同时失败
③ I: 隔离性
- 事务与事务之间是相互独立,互不影响
④ D:持久性
- 持久性就是说最终数据必须持久化到硬盘文件中,事务才算成功结束
(4) Mysql中事务模式是:自动提交的
① 如何关闭自动提交?
start transaction
(5) 事务隔离级别
① 第一级别:读未提交(read uncommitted)
- 对方事务还没有提交,我们当前事务就可以读到对方未提交的数据
- 读未提交存在:脏读
② 第二级别:读已提交(read committed)
- 对方事务提交之后,我们才可以读取
- 解决了脏读现象
③ 第三级别:可重复读(repeatable read)
④ 第四级别:序列化读/串行化读
⑤ 注意:
- Mysql默认:可重复读
- Oracle默认:读已提交
(6) 如何查看隔离级别?
① select @@global.tx_isolation;
(7) 设置隔离级别
① set global transaction isolation level 隔离级别;
② 例如:
(8) 自己测试:隔离级别的改变