1、唯一性约束unique
create table user(id int,username varchar(255) unique, password varchar(255));
create table user(id int,username varchar(255) unique, password varchar(255) unique);
create table user(id int,username varchar(255) , password varchar(255),unique(username,password));
2、主键约束
create table user(id int primary key,username varchar(255),password varchar(255));
create table user(id int ,username varchar(255),password varchar(255),primary key(id));
create table user(id int ,username varchar(255),password varchar(255),primary key(id,username));
主键的分类:
单一主键(推荐)
复合主键
自然主键(推荐)
业务主键
主键自增:
create table user(id int primary key auto_increment ,username varchar(255),password varchar(255));
3、外键
create table class (cno int, cname varchar(255),primary key(cno));
create table student (sno int, sname varchar(255),cno int, foreign key(cno) references class(cno),primary key(sno));
外键能否为null?
insert into student values(6,’zs6’,null);
可以。
外键引用字段时,该字段必须是主键吗?
不一定,但该字段必须具有唯一性。
/
三范式、DBA命令、视图、索引、事务、存储引擎
/
4、存储引擎
show engines \g; //查看支持的存储引擎
常见的存储引擎:
MyISAM、InnoDB、MEMORY
MyISAM是常用的引擎,但不是默认的引擎。
MyISAM不支持事务。
MyISAM采用三个文件组织一张表:
.frm(存储表格式)
.MYD(存储表中数据)
.MYI(存储表中索引)
优点:可被压缩,节省空间。可转化为只读表,提高检索效率。
缺点:不支持事务。
InnoDB是默认引擎。
优点:支持事务、行级锁。外键等,这种存储引擎最安全。
表结构存储在.frm文件中
表数据存储在表空间tablespace中,无法被压缩,无法转换成只读。
可以在MySQL服务器崩溃以后,提供数据恢复。
支持级联删除和级联更新。
MEMORY(曾叫名:HEPA)
缺点:不支持事务,数据易丢失。因为所有数据和索引都存在内存当中。
优点:查询速度最快。
5、事务(Transaction)
什么是事务?
事务是一个完整的业务的逻辑单元,不可再分。
//转账一万元
update act set balance = balance - 10000 where actno = ‘act001’;
update act set balance = balance + 10000 where actno = ‘act002’;
和事务相关的语句:DML语句(insert delete update)
事务有四大特性:(ACID)
A:原子性(事务是最小的工作单元,不可再分)
C:一致性
I:隔离性
D:持久性