mysql 约束

常见约束

含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性

分类:六大约束

  • NOT NULL:非空,用于保证该字段的值不能为空,比如姓名、学号
  • DEFAULT:默认,用于保证该字段有默认值
  • PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空
  • UNIQUE:唯一约束,保证该字段的值具有唯一性,可以为空
  • CHECK:检查约束【mysql中不支持】
  • FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主标的关联列的值
    • 在从表添加外键约束,用于引用主表中某列的值

添加约束的时机:

​ 1.创建表时

​ 2.修改表时

约束的添加分类:

​ 1.列级约束:六大约束语法上都支持,但是外键约束没有效果

​ 2.表级约束:除了非空、默认,其他的都支持

创建表时添加约束

1.添加列级约束

语法:

​ 直接在字段名和类型后面追加约束类型即可。只支持:默认、非空、主键、唯一

create database students;
use students;
create table stuinfo(
	id INT PRIMARY KEY, #主键
	stuName VARCHAR(10) NOT NULL, #非空
  gender CHAR(1) CHECK (gender='男' OR gender='女') #检查
  seat INT UNIQUE, #唯一
  age INT DEFAULT 18, #默认
  majorID INT references major(id) #外键
);

create table major(
	id INT PRIMARY KEY,
  majorName VARCHAR(20)
); 
	

2.添加表级约束

语法:在各个字段的最下面

【constraint 约束名】 约束类型(字段名)

create table stuinfo(
	id INT,
  stuname VARCHAR(20),
  gender CHAR(1),
  seat INT,
  age INT,
  majorid INT,
  
  CONSTRAINT pk PRIMARY KEY(id), #主键
  CONSTRAINT uq UNIQUE(seat), #唯一键
  CONSTRAINT ck CHECK(gender ='男' OR gender='女'), #检查
  CONSTRAINT fk_stuinfo_major 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,
  CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
)

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦