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:持久性