Mysql的约束

Mysql常见约束

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

2.分类: 六大约束
   ①NOT NULL : 非空,用于保证该字段的值不能为空
      比如:姓名、学号等

   ②DEFAULT:默认约束,用于保证该字段有默认值
      比如:性别

   ③PRIMARY KEY:主键约束,用于保证该字段的值具有唯一性,并且非空
      比如:学号、员工编号

   ④UNIQUE:唯一约束,用于保证该字段的值具有唯一性,但是可以为空
      比如:座位号

   ⑤CHECK:检查约束【MySQL中不支持复制】
      比如:年龄,性别

   ⑥FOREIGH KEY:外键约束,用于限制两个表之间的关系,用于保证该字段的值必须来自于主表的关联列的值
      在从表添加外键约束,用于引用主表中某列的值

      比如:学生表的专业编号,员工表的部门编号,员工表的工种编号

CREATE TABLE 表名{
   字段名 字段类型 约束
}

3.添加约束的时机
  (1)创建表时
  (2)修改表时

4.约束的添加分类:
  (1)列级约束
      六大约束语法上都支持,但外键约束没有效果

  (2)表级约束
      六大约束中除了非空和默认,其他的都支持

创建表时添加约束

添加列级约束

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

2.添加列级约束
USE students;

CREATE TABLE stuinfo(
   id INT PRIMARY KEY, #主键
   stuName VERCHAR(20)  NOT NULL, #非空
   gender CHAR(1) CHECK(gender=‘男’ OR gender=‘女’), #检查
   seat INT UNNIQUE, #唯一
   age INT DEFAULT 18, #默认约束
   majorId INT FOREIGN KEY REFERENCES major(id) #外键
);

CREATE TABLE major(
   id  INT PRIMARY KEY,
   majorName VARCHAR(20)
)

添加表级约束

1.添加表级约束语法:
在各个字段的最下面
【CONSTRAINT 约束名】 约束类型(字段名)
注意:【】中的内容可以省略

2.添加表级约束代码实例
CREATE TABLE stuinfo(
   id INT,
   stuName VERCHAR(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) REFERENCE major(id) #外键
);

SHOW INDEX FROM stuinfo;

通用的写法
CREATE TABLE IF 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)
);

主键和唯一的区别

保证唯一性是否允许为空一个表中可以有多少个是否允许两个列组合成唯一键
主键×至多有1个允许,但不推荐
唯一可以有多个允许,但不推荐
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值