东软大三上学期实训笔记-mysql篇Day4

本文详细介绍了MySQL中的表复制、数据类型、约束、自增字段和事务管理。涵盖了从复制表结构到数据类型的全面知识,包括整型、字符型、日期型等。还讲解了各种约束的添加与修改,以及自增长字段在主键中的应用。最后讨论了事务的四大特性(ACID)及其在确保数据完整性和安全性中的作用。
摘要由CSDN通过智能技术生成


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) 字符型
① 较短文本

  1. Char、varchar

② 较长文本

  1. text、blob

(3) 日期型
① Date
② Time
③ Year
④ Datetime
⑤ Timestamp
(4) 整型
① Tinyint =》1
② Smallint =》2
③ Mediumint =》3
④ Int、integer =》4
⑤ Bigint =》8
(5) 小数
① 分类

  1. 浮点型
    a. float(M,D)
    b. Double(M,D)
  2. 定点型(精准:财务计算)
    a. decimal(M,D)
    b. 建议使用时,设置长度
    备注:M:整数位数+小数位数,D:小数位数

(6) 字符型
① Char:定长

  1. 常用:状态码、性别 等

② Varchar

  1. 非定长的字符串
  2. 默认长度:255
    varchar默认最小显示长度255,如果创建表的时候不设置小一点的值,内存占用量就会变多。

③ 较长的文本

  1. text
  2. Blob(二进制)

④ 其他类型

  1. Enum:枚举
  2. Set:集合(要放东西)

(7) 日期类型
① Date:只保存日期
② Time:只保存时间
③ Year:只保存年份
④ Datetime:保存 日期+时间
⑤ Timestamp:保存 日期+时间
在这里插入图片描述
⑥ Datetime 与 timestamp 区别
在这里插入图片描述
注意:mysql不存在布尔值,只有0,1作为语句执行成功与否的状态码。

3、约束

(1) 概念
① 一种限制,用于限制表中的数据,为了保证表中数据的准确和可靠性
(2) 约束的种类
① 默认:default
② 非空约束:NOT Null
③ 主键约束:PRIMARY KEY
④ 唯一约束:UNIQUE
检查约束:CHECK(mysql不支持)
⑥ 外键约束:FOREIGN KEY
(3) 添加约束的分类
① 列级约束

  1. 六大约束语法都支持,但是外键约束没有效果

② 表级约束

  1. 除了 非空、默认,其他都支持

(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
① 为什么?

  1. 因为这三个语句都是和数据库中的数据有关,事务的存在主要是为了保证诗句的完整性、安全性
    (3) 事务的特性:ACID
    ① A:原子性
  2. 事务是最小的工作单元,是不可再分

② C:一致性

  1. 事务必须保证多条DML语句同时成功或同时失败

③ I: 隔离性

  1. 事务与事务之间是相互独立,互不影响

④ D:持久性

  1. 持久性就是说最终数据必须持久化到硬盘文件中,事务才算成功结束

(4) Mysql中事务模式是:自动提交的
如何关闭自动提交?

start transaction

(5) 事务隔离级别
① 第一级别:读未提交(read uncommitted)

  1. 对方事务还没有提交,我们当前事务就可以读到对方未提交的数据
  2. 读未提交存在:脏读

② 第二级别:读已提交(read committed)

  1. 对方事务提交之后,我们才可以读取
  2. 解决了脏读现象

③ 第三级别:可重复读(repeatable read)
④ 第四级别:序列化读/串行化读
⑤ 注意:

  1. Mysql默认:可重复读
  2. Oracle默认:读已提交

(6) 如何查看隔离级别?
① select @@global.tx_isolation;
在这里插入图片描述
(7) 设置隔离级别
① set global transaction isolation level 隔离级别;
② 例如:
在这里插入图片描述
(8) 自己测试:隔离级别的改变

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fire king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值