约束(constraint):在创建表饿过程中,给表加上一些约束,保证数据有效,从而保证数据的有效性和完整性。
常见的约束
非空约束:not null
唯一约束:unique
主键约束:primary key
外键约束:foreign key
检查约束:check(mysql不支持,react支持)
1.非空约束
非空约束not null的字段不能为NULL
not null 只有列级约束
2.唯一性约束
唯一性约束unique的字段不能重复,但是可以为null
多个字段联合起来添加某一约束时需要用到表级约束
CREATE TABLE IF NOT EXISTS `study3` (
`id` INT(10),
`name` VARCHAR(255),
`email` VARCHAR(255),
UNIQUE(`name`,`email`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
not null 和unique能同时约束某一字段
3.主键约束(primary key)
主键约束:约束
主键字段:被主键约束的字段
主键值:主键字段上的每一个值都是主键值
主键值是每一行的唯一标识值,没有主键时表无效。
主键不能是NULL 也不能重复(noy null+unique).
一张表中的主键只有一个:
varchar不建议用来作为主键
4.文件约束
文件约束(foreign key)
外键字段:该字段上添加一个外键约束
外键值:外键字段中的每一个值
删表/删除数据/插入数据:先子后父
存储引擎
指一个表存储/组织数据的方式
表后增加
ENGINE=INNODB DEFAULT CHARSET=utf8
指定存储引擎和编码方式mysql默认INNODB
表空间是逻辑名称,等于数据加索引
innodb最大的优势是支持事务!
事务
事务即完整的业务逻辑,最小的作业单元,批量的DML语句同时成功或同时失败
与DML语句有关(insert,delete,update)
关闭自动提交机制:
start transaction
提交:commit
回滚:rollback
事务四大特性:原子性,一致性,隔离性,持久性
隔离性
四大隔离级别(由低到高)
读未提交:read uncommitted,dirty read
读已提交:read committed,不可重复读取数据,真实
可重复读:repeatable read,重复读取到的数据没有发生改变,幻读
序列化:serializable,事务排队,不能并发(线程同步)