MySQL基础_7.约束
约束是一种限制,用于限制表中的数据,保证表中数据的准确和可靠性;添加约束的时机:1.创表时;2.修改表时
约束的分类
| 语法 | 作用 | 详述 | 
|---|---|---|
| not null | 非空 | 用于保证该字段的值不能为空 | 
| default | 默认 | 用于保证该字段有默认值 | 
| primary key | 主键 | 用于保证该字段的值具有唯一性 并且非空 | 
| unique | 唯一 | 用于保证该字段的值具有唯一性 可以为空 | 
| check | 检查约束 | mysql不支持 | 
| foreign key | 外键 | 两表关系,用于保证该字段的值必须来自于主表的关联列的值(在从表添加外键约束, 用于引用主表中某列的值) | 
| 方式 | 效果 | 
|---|---|
| 列级约束 | 6大约束语法都支持 但外键约束没有效果 | 
| 表级约束 | 除了非空 默认 其他都支持 | 
| ---- | ---- | 
| 单列约束 | .... | 
| 多列约束 | .... | 
查看表中约束
select * from information_schema.table_constraints where table_name = 'BBS_article2tag';
¤ 查看的是所有的表已经添加的约束
约束的使用
create table 表名(
      字段名 字段类型 列级约束(check和外键不支持),
      字段名 字段类型 列级约束(check和外键不支持),
      表级约束)
添加表约束语法
- 用法:constraint 约束名 约束类型(字段名)            # 约束名可以不起
  create table test2(
      id int unique,
      last_name varchar(15),
      email varchar(25),
      salary decimal(10,2),
      constraint uk_test2_email unique(email);
  );
CREATE TABLE stuinfo(
    id INT,
    stuname VARCHAR(20),
    gender CHAR(1),
    seat INT,
    age INT,
    majorid INT,
    PRIMARY KEY(id),
    UNIQUE(seat),
    FOREIGN KEY(majorid) REFERENCES major(id)
);
- 通用写法
create table if not exists stuinfo(
    id int primary key,
    stuname varchar(20) not null,
    sex char(1),
    age int default 18,
    seat int unique,
    majorid int,
    foreign key(majorid) references major(id)
);
非空和默认
CREATE TABLE test1(
    id INT,
    last_name VARCHAR(15) NOT NULL,
    email VARCHAR(25),
    salary DECIMAL(10,2)
);
DESC test1;
INSERT INTO test1(id,last_name,email,salary) VALUES(1,'tom','tom@126.com',3399);
ALTER TABLE test1 MODIFY salary VARCHAR(25) NOT NULL;
主键和唯一
| primary key主键 | 唯一性,不为空 | 最多有一个,可以组合 | 
| unique 唯一 | 唯一性,可为空 | 可以有多个,可以组合 | 
组合主键
create table if not exists stuinfo(
    id int unique,
    stuname varchar(20) not null,
    sex char(1),
    age int default 18,
    primary key(id, stuname),
    foreign key(majorid) references major(id)
);
create table test2(
    id int unique,
    last_name varchar(15),
    email varchar(25) unique,
    salary decimal(10,2)
)
外键约束
要求在从表设置外键关系;从表的外键列的类型和主表的对应列的类型要求一致或者兼容;主表的关联列必须是一个key(主键或者唯一键);插入数据时 先插入主表 再插入从表;删除数据时 先删除从表 再删除主表
auto_increment
自增长约束,一个表最多只能有一个,必须是主键;如果自增列指定了0或null,会在当前最大值基础上自增,如果指定了具体值,直接赋值为具体值。
 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号