常见数据类型\常见约束的介绍\标识列\事务介绍

常见数据类型

数值型:

一、整型:

分类:

tinyintsmallintmediumintint/integerbigint
12348

在这里插入图片描述

特点:
1、如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字
2、如果插入的数值超出了整型的范围,会out of range 异常,并且插入临界值
3、如果不设置长度,会有默认的长度

二、小数型

分类:
1、浮点型:float(M,D)节省空间
double(M,D)
2、定点型:dec/decimal(M,D)
在这里插入图片描述

特点:
i、M:整数部位+小数部位,D:小数部位,如果超出范围,则插入临界值
ii、M和D都可以省略,如果是decimal,则M默认为10,D默认为0,如果是float和double,则会根据插入的数值精度来决定精度
iii、定点型的精确度较高,如果要求插入数值的精确度较高,如货币运算则考虑使用
原则:
所选择类型越简单越好,能保存数值的类型越小越好

三、字符型

较短的文本:

特点写法M的意思特定空间转移效率
charchar(M)最大的字符数,可省,默认为1固定长度的字符比较耗费
varcharvarchar(M)最大字符数,不可省可变长度的字符比较节省

在这里插入图片描述

其他:
binary和var binary用于保存较短的二进制
enum用于保存效率,set用于保存集合
较长文本:text、blob(较大的二进制)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、日期型:

分类:
date——只保存日期
time——只保存时间
year——只保存年
datetime——保存日期+时间
timestamp——保存日期+时间
在这里插入图片描述

datetime PK timestamp

字节范围时区等的影响
datetime81000-9999不受
timestamp41970-2038

在这里插入图片描述

常见约束的介绍

含义:
一种限制,用于限制表中的数据,为了保证表中的数据的准确性、一致性和可靠性
分类:
六大约束:
1、not null:非空,用于保证该字段的值不能为空,比如:姓名、学号
2、default:默认,用于保证该字段有默认值,比如:性别等
3、primary key:主键,用于保证字段的值具有唯一性,并且非空,比如:学号,员工编号等
4、unique:唯一,用于保存该字段的值具有唯一性,可以为空,如:座位号
5、check:检查约束(mysql中不支持),如:年龄,性别等
6、foreing key:外键用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。
  在从表添加外键约束用于引用主表某列的值。
添加约束的时机:i、创建表时,ii、修改表时
约束的添加分类:i、列级约束:六大约束语法上都支持,但外键约束没有效果
        ii、表级约束:除了非空、默认、其他都支持
show index from 表名——查看表的所有索引,包括主键、外键、唯一

一、创建表时添加约束

1、添加列级约束:语法:直接在字段名和类型后面追加约束类型即可
只支持:默认、唯一、非空、主键
2、添加表级约束:语法:在各字段的最下面【constraint 约束名】约束类型(字段名)

主键和唯一的大对比

保证唯一性是否允许为空一个表中可以有多少个是否允许组合
主键×只能有一个√,但不推荐
唯一可有多个√,但不推荐

外键:
1、要求在从表设置外键关系
2、从表的外键列的类型和主表的关联列的类型要求一致1或兼容,名称无要求
3、主表的关联列必须是一个key(一般是主键或唯一)
4、插入数据时,先插入主表,再插入从表;删除数据时,先删除从表,再删除主表。

二、修改表时添加约束

1、添加列级约束:alter table 表名 modify column 字段名 字段类型 新约束;
2、添加表级约束:alter table 表名 add 【constraint 约束名】约束类型(字段名)【外键约束】

三、修改表时删除约束

1、alter table 表名 modify column 字段名 字段类型;
2、alter table 表名 drop 约束【约束名】;
在这里插入图片描述
在这里插入图片描述

标识列

含义:
标识列又称自增长列,可以不用手动的插入值,系统提供默认的序列值
语法:
直接在约束后面加上auto_increment
特点:
1、标识列必须与一个key搭配
2、一个表中之多一个自增长列
3、标识列的类型只能是数值型
4、标识列可以通过set auto_increment_increment=步长,设置步长,也可以通过手动插入值设置起始值。

一、修改表时设置标识列

语法:alter table 表名 modify column 字段名 字段类型 约束 auto_increment;

二、修改表时删除标识列

语法:alter table 表名 modify column字段名 字段类型 约束;

事务介绍

TCL语言(事务控制语言)

事务:
一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行
回滚:
取消前面所有的执行,回到最初的状态
事务(ACID)的特性:
1、原子性:一个事务不可在分割,要么执行,要么不执行
2、一致性:一个事务执行会使数据从一个一致状态切换到另外一个一致状态
3、隔离性:一个事务的执行不受其他事务的干扰
4、持久性:一个事务一旦提交,则会永久的改变数据库的数据
在这里插入图片描述
MySQL中的存储引擎:
表类型=存储引擎(engine)
查询语句:show engines;
在这里插入图片描述
事务的创建
1、隐式事务:事务没有明显的开启和结束的标记,比如:insert、update、delete语句
2、显式事务:事务具有明显的开启和结束标记,
前提:必须先设置自动提交功能为禁用

关闭自动提交功能语句:set autocommit=0;

完整事务执行语句:

开启事务:set autocommit=0;
start transaction;(可省)
编写事务的sql语句(select、insert、update、delete):语句1,语句2,·······
设置保存点(节点名):savepoint(只搭配rollback to使用)
结束事务:commit;(提交事务)/ rollback;(回滚事务)
在这里插入图片描述

多个事务同时运行出现的并发问题:
脏读、不可重复读、幻读。
在这里插入图片描述

事务的隔离级别:
在这里插入图片描述
查询隔离级别语句:select @@tx_isolation;
设置隔离级别:set session transaction isolation level 级别名;
在这里插入图片描述
在这里插入图片描述

修改字符集语句:set names 字符集;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值