MySQL-表的约束

MySQL-表的约束

一.约束概述

1.约束

  • MySQL中定义了维护数据库完整性的规则,而这些这些规则常称为表的约束

2.约束目的

  • 防止错误的数据被插入到数据表
  • 针对表中字段进行限制从而保证数据表中数据的正确性和唯一性

3.常见约束

约束条件 说明
primary key 主键唯一约束,用于唯一标识对应的记录
foreign key 外键约束
not null 非空约束
unique 唯一性约束
default 默认值约束,用于设置字段的默认值

二.主键约束

1.主键约束

  • 主键约束即primary key用于唯一的标识表中的每一行
  • 被标识为主键的数据在表中是唯一的且其值不能为空

2.基本语法

字段名 数据类型 primary key;

3.设置主键约束的方式

(1) 第一种方式

# 设置id为主键
CREATE TABLE student(
    id int primary key,
    name varchar(50)
);

(2) 第二种方式

# 先定义字段id,后设置该字段为主键
CREATE TABLE student(
    id int,
    name varchar(50),
    primary key(id)
);
  • 第二种方式适合用于联合主键
# 将classid和studentid定义为联合主键
CREATE TABLE student(
    classid int,
    studentid int,
    name varchar(50),
    primary key(classid,studentid)
);
  • 注意:不要把联合主键理解成两个主键;它们是以两个字段联合的形式作为主键,也就是说这两者共同决定了数据的唯一性。

(3) 第三种方式

# 先创建了表,然后利用ALTER语句设置id字段为主键.
CREATE TABLE student(
    id int,
    name varchar(50)
);
ALTER TABLE student  ADD  PRIMARY  KEY (id);

三.非空约束

1.非空约束

  • 非空约束即 NOT NULL指的是字段的值不能为空

2.基本语法

字段名 数据类型 NOT NULL;

3.示例

#设定name字段为NOT NULL,所以在插入数据时必须为该字段设值
CREATE TABLE student(
    id int PRIMARY KEY,
    name varchar(50) NOT NULL,
    gender varchar(10)
);

四.唯一性约束

1.唯一性约束

  • 唯一性约束即UNIQUE用于保证数据表中字段的唯一性,即表中字段的值不能重复出现

2.基本语法

字段名 数据类型 UNIQUE;

3.示例

# 利用unique关键字为字段name添加唯一约束
CREATE TABLE student(
    id int primary key,
    name varchar(50) unique
);

五.AUTO_INCREMENT约束

1.AUTO_INCREMENT约束

  • 需求:希望某个字段的值自动生成并且是唯一的,也就是说:想为表中插人的新记录自动生成唯一的ID。
  • AUTOJNCREMENT约束的字段可以是任何整数类型。
  • 默认情况下,该字段的值是从1开始自增的。
  • 在执行插入语句时候不必为AUTO_ INCREMENT约束的字段赋值,它会自动增加;

2.基本语法

字段名 数据类型 AUTO_ INCREMENT;

3.示例

# 将主键id设置为auto_increment,那么该字段的值会自动地增长。
CREATE TABLE student(
    id int primary key auto_increment,
    name varchar(50)
);

六.默认值约束

1.默认值约束

  • 默认值约束即DEFAULT用于给数据表中的字段指定默认值,即当在表中插入一条新记录时若未给该字段赋值,那么,数据库系统会自动为这个字段插人默认值;

2.基本语法

字段名 数据类型 DEFAULT 默认值;

3.示例

# 为gender字段设值了默认值
CREATE TABLE student(
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL UNIQUE,
    gender VARCHAR(10) DEFAULT '女'
);

七.外键约束

1.外键约束

  • 外键约束即FOREIGN KEY常用于多张表之间的约束

2.基本语法

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

3.外键名常用命名方式

  • fk_从表名_从表外键字段

4.外键

(1)外键

  • 外键是指引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约 束。
  • 外键用于建立和加强两个表数据之间的连接。

(2)示例

  • student表
CREATE TABLE student(
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    gender VARCHAR(10) DEFAULT '男'
);
  • score表
CREATE TABLE score(
    scoreid INT PRIMARY KEY,
    studentid INT , 
    scoreresult INT
);
  • 分析:score表中的studentid学生编号表示成绩是属于哪个学生,该值必须是student表中id列里的值。这种情况下:学生表student被称为主表,分数表score被称为从表。所以,我们可利用外键FOREIGN KEY将score中的studentid与student表中id建立起联系。

  • 设置外键

# student表
CREATE TABLE student(
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    gender VARCHAR(10) DEFAULT '男'
);
# score表
CREATE TABLE score(
    scoreid INT PRIMARY KEY,
    studentid INT , 
    scoreresult INT,
    CONSTRAINT fk_score_studentid FOREIGN KEY (studentid) REFERENCES student(id)
);
# 或者使用 ALTER TABLE 设置主键
ALTER TABLE score ADD CONSTRAINT fk_score_studentid FOREIGN KEY(studentid) REFERENCES student(id);

5.删除外键约束

(1)基本语法

alter table 从表名 drop foreign key 外键名;

(2)示例

alter table score drop foreign key fk_score_studentid;

(3)查看

show create table score;

6.数据一致性

  • 建立外键是为了保证数据的完整和统一性。但是,如果主表中的数据被删除或修改从表中对应的数据该怎么办呢?很明显,从表中对应的数据也应该被删除,否则数据库中会存在很多无意义的垃圾数据。

你可能感兴趣的:(数据库,mysql,数据库)