mysql age字段类型,Mysql 基础 [3]之数据类型 常见约束 TCL语言

常见类型

数值型

整型:

小数:

浮点型

定点型

字符型:短文本 长文本

日期型:

Blob类型:较长的二进制数据

整型

a58847012dac

整型

如何不设置有符号和无符号默认有符号

UNSIGNED 这是无符号

如果数据超出范围,会报警告 而且插入临界值

如果不设置长度有默认的长度 对于整型,是由前面的类型决定的

ZEROFILL 零填充 比如 int(4) 对于插入数据 11 为,0011

长度代表了显示的最大宽度

小数

a58847012dac

小数

特点:

double(M,D)

M:整数位和小数位一共多少位数

D:保留的几位小数

超过范围,插入临界值

缺省情况:

如果是decimal 则M默认值是10,D默认是0

如果是float和double,默认值是插入的数值的长度精度

定点型插入数据精度高

选择的原则:越简单越好,能保存的数据范围越小越好

字符型

char是固定长度(默认为1) varchar 是可变长度 长度必须写

set保存集合

a58847012dac

char 和 varchar

a58847012dac

binary

a58847012dac

枚举类型

长文本 text blob (存储较大的二进制)

日期类型

a58847012dac

日期类型

datetime和timestamp的区别

a58847012dac

datetime和timestamp的区别

常见约束

含义:用来限制表中的数据,围殴了保证数据的一致性

分类:

1.NOT NULL 非空约束 用于保证该字段的值不能为空 比如姓名学号

2.DEFAULT 默认约束 用于保证该字段有默认值

3.PRIMARY KEY 主键 保证字节的值具有唯一性,而且非空

4.UNIQUE 唯一,用于保证该字段的为一直,可以为空

5.CHECK 检查约束 Mysql 不支持 年龄性别

6.FOREIGN KEY 外键约束 用于限制两个表的关系,用于保证此字段的值必须来自另一个表的一个列的值 从表添加外键约束 用于引用主表的某列的值

添加约束的时机

1.创建表的时候

2.需改表的时候

约束添加的分类

1.列级约束 : 六大约束都可以写 但是外键约束没有效果

2.表级约束 : 除了非空,默认,其他都支持

列级约束 : 六大约束都可以写 但是外键约束没有效果

CREATE TABLE stuinfo(

id INT PRIMARY KEY, #主键

stuName VARCHAR(20) NOT NULL, #非空

gender CHAR(1) CHECK(gender='男' OR gender='女') , # 检查

seat INT UNIQUE, #唯一

age INT DEFAULT 18 #默认

);

SHOW INDEX FROM stuinfo;

//查看表索引 主键 外键 唯一 以及自己创建的索引

a58847012dac

查看表索引

添加表级约束

语法: 在各个字段的下面

CONSISTENT 约束名 约束类型(字段名)

CREATE TABLE stuinfo2(

id INT,

username VARCHAR(20),

gender CHAR(1),

seat INT,

age INT,

majorid INT,

CONSISTENT pk PRIMARY KEY(id),#主键

CONSISTENT uq UNIQUE(seat), #唯一约束

CONSISTENT ck CHECK(gender = '男' OR gender = '女') ,#检查

CONSISTENT fk_stuinfo_major FOREIGN KEY(major) REFERENCES major(id) # 外键

)

主键和唯一的对比

1.都可以保证唯一性

2.主键不允许为空 唯一可以为空 但是唯一只能有一个为null

3.主键至多有一个 唯一可以有多个

4.是否允许组合 组合主键(但是不推荐) 组合唯一键

外键:

1.要求在从表设置外键关系

2.从表的外键列类型必须和主表的关联列相同,名称无要求

3.主表的关联列必须是一个key(一般是主键或者是唯一)

4.插入数据的时候,先插入主表,然后再删除从表

5.删除数据的时候,需要先删除从表,然后再删除主表

修改表的时候添加约束

CREATE TABLE stuinfo3(

id INT,

username VARCHAR(20),

gender CHAR(1),

seat INT,

age INT

);

#添加非空约束

ALTER TABLE stuinfo3 MODIFY COLUMN username VARCHAR(30) NOT null;

#添加默认约束

ALTER TABLE stuinfo3 MODIFY COLUMN age INT DEFAULT 18;

#添加主键

#列级约束

ALTER TABLE stuinfo3 MODIFY COLUMN id INT PRIMARY KEY;

#表级约束

ALTER TABLE stuinfo3 ADD PRIMARY KEY(id);

#添加唯一键

#列级约束

ALTER TABLE stuinfo3 MODIFY COLUMN seat INT UNIQUE;

#表级约束

ALTER TABLE stuinfo3 ADD UNIQUE(seat);

#添加外键

ALTER TABLE stuinfo3 ADD FOREIGN KEY(majorid) REFERENCES major(id);

ALTER TABLE stuinfo3 ADD CONSTRAINT fk_stuinfo3_major FOREIGN KEY(majorid) REFERENCES major(id);

添加列级约束

alter table 表名 modify column 字段名 字段类型 新约束

添加表级约束

alter table 表明 add [constraint 约束名] 约束类型 (字段名) [外键的引用]

修改表的时候删除约束

#删除非空约束

ALTER TABLE stuinfo3 MODIFY COLUMN username VARCHAR(20) NULL;

#删除默认约束

ALTER TABLE stuinfo3 MODIFY COLUMN age INT;

#删除主键

ALTER TABLE stuinfo3 DROP PRIMARY KEY;

#删除唯一键

ALTER TABLE stuinfo3 DROP INDEX seat;

#删除外键约束

ALTER TABLE stuinfo3 DROP FOREIGN KEY fk_stuinfo3_major;

标识列 又称为自增长列

创建表的时候设置标识列

CREATE TABLE stuinfo4(

id INT PRIMARY KEY AUTO_INCREMENT,

username VARCHAR(20),

gender CHAR(1),

seat INT,

age INT

);

特点:

1.标识别必须和key(主键,唯一键)搭配

2.一个表只有一个标识列

3.标识列的类型,只能是数值型

4.标识列可以通过 SET auto_incrment_increment = 3; 设置增加的大小

5.可以手动设置起始值

#修改表的时候设置标识列

ALTER TABLE stuinfo5 MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT;

#修改表的时候删除标识列

ALTER TABLE stuinfo5 MODIFY COLUMN id INT PRIMARY KEY;

TCL 事务控制语言

a58847012dac

事务

a58847012dac

概念

SHOW ENGINES; //查询引擎

事务的特点

a58847012dac

事务的AICD属性

事务的分类:

隐式事务,没有明显的开启和结束事务的标志

比如

insert、update、delete语句本身就是一个事务

显式事务,具有明显的开启和结束事务的标志

1、开启事务

取消自动提交事务的功能

2、编写事务的一组逻辑操作单元(多条sql语句)

insert

update

delete

3、提交事务或回滚事务

使用到的关键字

set autocommit=0;

start transaction;

commit;

rollback;

savepoint 断点

commit to 断点

rollback to 断点

SHOW VARIABLES LIKE '%autocommit%';//查询事务是否开启 或者查询其他的

数据库的隔离级别

事务并发问题如何发生?

当多个事务同时操作同一个数据库的相同数据时

事务的并发问题有哪些?

脏读:一个事务读取到了另外一个事务未提交的数据

不可重复读:同一个事务中,多次读取到的数据不一致

幻读:一个事务读取数据时,另外一个事务进行更新,导致第一个事务读取到了没有更新的数据

a58847012dac

并发问题和隔离级别

a58847012dac

数据库提供的四种事务隔离级别

如何避免事务的并发问题?

通过设置事务的隔离级别

1、READ UNCOMMITTED

2、READ COMMITTED 可以避免脏读

3、REPEATABLE READ 可以避免脏读、不可重复读和一部分幻读

4、SERIALIZABLE可以避免脏读、不可重复读和幻读

设置隔离级别:

set session|global transaction isolation level 隔离级别名;

查看隔离级别:

select @@tx_isolation;

事务中的一个关键词 savepoint 回滚点,设置 只能搭配 rollback 使用

语句1

savepoint a;

语句2

rollback to a;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值