首页 > 数据库技术 > 详细

MySQL常见约束

时间:2019-08-02 09:47:51      阅读:67      评论:0      收藏:0      [点我收藏+]

约束

约束关键字 含义
NOT NULL 数据列不允许包含NULL值
DEFAULT 默认值
PRIMARY KEY 主键,不可以为空
UNIQUE 唯一,保证该字段具有唯一性,可以为空
CHECK 检查约束
FOREIGN KEY 外键约束
AUTO_INCREMENT 自增长列

示例

CREATE TABLE major(
    id INT UNIQUE,#唯一
    majorName VARCHAR(20)
);
CREATE TABLE stuinfo(
    id INT,
    stuName VARCHAR(20),
    gender CHAR(1),
    seat INT,
    age INT,
    majorid INT,
    PRIMARY KEY (id,stuName),#主键
    UNIQUE(seat),#唯一
    CHECK(gender='男' OR gender='女'),#检查
    FOREIGN KEY(majorid) REFERENCES major(id)#外键约束
)

主键和唯一

  • 不同点
    • 一个表至多有一个主键,但可以有多个唯一
    • 主键不允许为空,唯一可以为空
  • 相同点
    • 都具有唯一性
    • 都支持组合键,但不推荐

外键

  • 用于限制两个表的关系,从表的字段值引用了主表的某字段值

  • 外键列和主表的被引用列要求类型一致,意义一样,名称无要求

  • 主表的被引用列要求是一个key(一般就是主键)

  • 插入数据,先插入主表;删除数据,先删除从表

    #可以通过以下两种方式来删除主表的记录
    #方式一:级联删除
    ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;
    
    #方式二:级联置空
    ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL;

创建表时添加约束

create table 表名(
    字段名 字段类型 not null,#非空
    字段名 字段类型 primary key,#主键
    字段名 字段类型 unique,#唯一
    字段名 字段类型 default 值,#默认
    constraint 约束名 foreign key(字段名) references 主表(被引用列)

)
类型 支持类型 可以起约束名
列级约束 除了外键 不可以
表级约束 除了非空和默认 可以,但对主键无效
  • 列级约束可以在一个字段上追加多个,中间用空格隔开,没有顺序要求

修改表时添加或删除约束

  • 非空

    添加非空
    alter table 表名 modify column 字段名 字段类型 not null;
    删除非空
    alter table 表名 modify column 字段名 字段类型 ;
  • 默认

    添加默认
    alter table 表名 modify column 字段名 字段类型 default 值;
    删除默认
    alter table 表名 modify column 字段名 字段类型 ;
  • 主键

    添加主键
    alter table 表名 add【 constraint 约束名】 primary key(字段名);
    删除主键
    alter table 表名 drop primary key;
  • 唯一

    添加唯一
    alter table 表名 add【 constraint 约束名】 unique(字段名);
    删除唯一
    alter table 表名 drop index 索引名;
  • 外键

    添加外键
    alter table 表名 add【 constraint 约束名】 foreign key(字段名) references 主表(被引用列);
    删除外键
    alter table 表名 drop foreign key 约束名;

自增长列(auto_increment_increment)

注意

  • 不用手动插入值,可以自动提供序列值,默认从1开始,步长为1
    auto_increment_increment
    • 如果要更改起始值:手动插入值
    • 如果要更改步长:更改系统变量
      set auto_increment_increment=值;
  • 一个表至多有一个自增长列
  • 自增长列只能支持数值型
  • 自增长列必须为一个key

操作

#创建表时设置自增长列
create table 表(
    字段名 字段类型 约束 auto_increment
)
#修改表时设置自增长列
alter table 表 modify column 字段名 字段类型 约束 auto_increment
#删除自增长列
alter table 表 modify column 字段名 字段类型 约束 

MySQL常见约束

原文:https://www.cnblogs.com/redo19990701/p/11286678.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!