入坑数据库MySQL(3)-约束

1,098 阅读4分钟

约束

约束——用于实现数据完整性,数据完整性理解为:数据的有效性(正确性)。

数据库完整性概述:

(1)实体完整性(行与行) 主键约束、外键约束
(2)域(字段)完整性(各个字段数值) 非空约束、默认值约束、检查
(3)参照完整性(表与表) 外键约束
(4)用户(自定义)完整性

约束的类型:

(1)主键约束
(2)外键约束
(3)非空约束
(4)唯一约束
(5)默认值约束
(6)检查约束

1)主键约束(PRIMARY KEY)

用来唯一标识表中的一个列,一个表中主键约束最多只能有一个,不同的行上,主键值不能相等。
在创建表时设置联合主键约束。联合主键,即多个列联合作为主键。这是,主键列的值不能同时都相等。

修改表时添加主键约束

语法格式:

ALTER TABLE  表名
ADD CONSTRAINT  约束名  PRIMARY KEY(列名);

表名:要添加约束的表
约束名:由用户指定,用于标识约束
列名:要添加主键约束的列

修改表时删除主键约束

语法格式:

ALTER TABLE  表名
DROP PRIMARY KEY;

注意:由于主键约束在一个表中只能有一个,因此不需要指定主键名就可以删除。

2)外键约束( FOREIGN KEY )

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

添加外键

语法格式:

ALTER TABLE  表名
ADD CONSTRAINT  约束名  
FOREIGN KEY (外键字段名)  REFERENCES 外键表名(列名);

删除外键

语法格式:

    ALTER TABLE  表名
    DROP FOREIGN KEY 外键名;

EG:

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

含义:

  • 在student表的gid列上建立一个外键约束,该约束是参照grade表的id字段。
  • 对表添加数据时有什么影响?对于被参照的表grade:添加数据时无任何影响。
  • 对于外键表student上的外键列gid:该列上的数据只能选择被参照表grade上被参照列id中的数据。
  • 简单的说:student表上gid列中的数据,只能是grade表上id列中已有的数据。即,student表的gid外键依赖于grade表的id。

3)非空约束(NOT NULL)

用来限定数据表中的列必须输入值。

修改表时添加非空约束

语法格式:

ALTER TABLE  表名
MODIFY   列名 该列数据类型 NOT NULL ;

4)唯一约束(UNIQUE)

用来唯一标识表中列的,不同的行上,唯一键的值也不能相等与主键约束不同的是,在一张数据表中可以有多个唯一约束。

修改表时添加唯一约束

语法格式:

ALTER TABLE  表名
ADD CONSTRAINT  约束名  UNIQUE(列名);

删除唯一约束

语法格式:

DROP INDEX  约束名  ON 表名

5)默认值约束(DEFAULT)

用来当不给表的列输入值时,自动为该列指定一个值。

修改表时添加默认值约束

语法格式:

ALTER TABLE  表名
ALTER   列名  SET DEFAULT 默认值 ;

删除默认值约束

语法格式:

ALTER TABLE  表名
ALTER   列名  DROP DEFAULT ;

小结

1、 表创建后,再添加约束

  • 主键约束
ALTER TABLE  表名
ADD CONSTRAINT  约束名  PRIMARY KEY(列名);
  • 唯一约束
ALTER TABLE  表名
ADD CONSTRAINT  约束名  UNIQUE(列名);
  • 非空约束
ALTER TABLE  表名
MODIFY   列名 该列数据类型 NOT NULL ;
  • 默认约束
ALTER TABLE  表名
ALTER   列名  SET DEFAULT 默认值 ;
  • 外键约束
ALTER TABLE  表名
ADD CONSTRAINT  约束名  
FOREIGN KEY (外键字段名)  REFERENCES 外键表名(列名);

注意:约束名称可以使用SHOW CREATE TABLE 表名;来查询。

2、删除约束

  • 主键约束
ALTER TABLE  表名
DROP PRIMARY KEY;
  • 唯一约束
DROP INDEX  约束名  ON 表名
  • 非空约束
ALTER TABLE  表名
MODIFY   列名 该列数据类型 ;
  • 默认约束
ALTER TABLE  表名
ALTER   列名  DROP DEFAULT ;
  • 外键约束
ALTER TABLE  表名
DROP FOREIGN KEY 外键名;