mysql约束_7.MySQL表的约束

1.默认约束(DEFAULT )

为数据表中的字段指定默认值。保证事物的属性一定会有一个值。

BLOB、TEXT数据类型不支持默认约束。

CREATE DATABASE mahaiwuji;USE mahaiwuji;CREATE TABLE student1 (   id INT,  sname VARCHAR(30),    sex VARCHAR(1) DEFAULT '男') ENGINE = INNODB DEFAULT CHARSET = utf8;INSERT INTO student1 VALUES (1,'张三','男');INSERT INTO student1 VALUES (2,'李四','女');INSERT INTO student1(id,sname) VALUES (3,'王五');
dedab73fc1b7165cb50946d7573ef46f.png

2.非空约束(NOT NULL)

字段的值不能为NULL。

CREATE TABLE student2 (    id INT,    sname VARCHAR(30) NOT NULL,   sex VARCHAR(1)) ENGINE = INNODB DEFAULT CHARSET = utf8;INSERT INTO student2 VALUES (1,'张三','男');INSERT INTO student2 VALUES (2,'李四',NULL);-- error,因为姓名指定了不能为空INSERT INTO student2(id,sex) VALUES (3,'女');
7c287a3e0f8dc66791a3d721bc7fec1c.png

3.唯一约束(UNIQUE)

保证数据表中字段的唯一性,即表中字段的值不能重复出现。

CREATE TABLE student3 (    id INT,    sname VARCHAR(30) UNIQUE,    sex VARCHAR(1)) ENGINE = INNODB DEFAULT CHARSET = utf8;INSERT INTO student3 VALUES (1,'张三','男');INSERT INTO student3 VALUES (2,'李四','女');-- error,因为姓名指定不能重复INSERT INTO student3 VALUES (3,'李四','男');
7bcbdc096b675b7ac0c289968cfcf414.png

4.主键约束(PRIMARY KEY)

主键的作用:唯一标识表中的记录。

主键约束相当于唯一约束和非空约束的组合,要求被约束字段不允许重复,也不允许出现NULL值,每个表最多只允许含有一个主键。

列级约束

字段名 数据类型 PRIMARY KEY

CREATE TABLE student4 (    id INT PRIMARY KEY,    sname VARCHAR(30),    sex VARCHAR(1)) ENGINE = INNODB DEFAULT CHARSET = utf8;INSERT INTO student4 VALUES (1,'张三','男');INSERT INTO student4 VALUES (2,'李四','女');-- error,因为id是主键,不能重复INSERT INTO student4 VALUES (1,'王五','男');
dd9fe2a6af07ad0ac2f22a35e7462b17.png

表级约束

PRIMARY KEY (字段名1, 字段名2, …)

CREATE TABLE student5 (    id INT,  sname VARCHAR(30),    sex VARCHAR(1),    PRIMARY KEY (id,sname)) ENGINE = INNODB DEFAULT CHARSET = utf8;INSERT INTO student5 VALUES (1,'张三','男');INSERT INTO student5 VALUES (1,'李四','女');-- error,因为id和sanme是联合主键,不能重复INSERT INTO student5 VALUES (1,'张三','男');
c95732e048a8eb559260b8f634c31cad.png

5.外键约束(FOREIGN KEY)

外键指的是在一个表中引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束,从而保证数据的一致性和完整性。

被引用的表称为主表

引用外键的表称为从表

先创建一个班级表

CREATE TABLE grade (    gid INT,  gname VARCHAR(30),   PRIMARY KEY (gid)) ENGINE = INNODB DEFAULT CHARSET = utf8;INSERT INTO grade VALUES (1,'1班');INSERT INTO grade VALUES (2,'2班');
b4472976f6fc9f93b57765e54c83a158.png

再创建一个学生表

CREATE TABLE student (    sid INT,    sname VARCHAR(30),    sex VARCHAR(1),    gid INT,   PRIMARY KEY (sid)) ENGINE = INNODB DEFAULT CHARSET = utf8;
bbbdb0a76c51daf074fe591e11b279eb.png

为学生表添加外键约束

ALTER TABLE 从表表名 ADD CONSTRAINT 外键名 FOREIGN KEY 从表字段名 REFERENCES 主表表名(主表主键字段名);

ALTER TABLE student ADD CONSTRAINT FK_ID FOREIGN KEY (gid) REFERENCES grade(gid);

给学生表加数据

INSERT INTO student VALUES (1,'张三','男',1);INSERT INTO student VALUES (2,'李四','男',2);-- error,因为grade里没有gid为3的,所以添加失败INSERT INTO student VALUES (3,'王五','男',3);
dcbc9291fb7fefb8dad9b44168cad235.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值