MySQL(二)操作表的约束

介绍

所谓完整性是指数据的准确性和一致性,而完整性检查就是指检查数据的准确性和一致性。MySQL数据库管理系统提供了一致机制来检查数据库表中的数据是否满足规定的条件,以保证数据库中数据的准确性和一致性,这种机制就是约束。

完整性约束
完整性约束关键字 含义
NOT NULL 约束字段的值不能为空
DEFAULT 设置字段的默认值
UNIQUE KEY(UK) 设置字段的值是唯一
PRIMARY KEY(PK) 约束字段为表的主键,可以作为该表记录的唯一标识
AUTO_INCREMENT 约束字段的值为自动增加
FOREIGN KEY(FK) 约束字段为表的外键

一、设置非空约束(NOT NULL,NK)

当数据库表中的某个字段上的内容不希望设置为NULL时,则可以使用NK约束进行设置。

1、设置非空约束

MariaDB [(none)]> CREATE DATABASE company;
MariaDB [(none)]> USE company;

#创建表
MariaDB [company]> CREATE TABLE t_dept(deptno INT(20) NOT NULL,dname VARCHAR(20),loc VARCHAR(40));
Query OK, 0 rows affected (0.02 sec)

2、查看

二、设置字段的默认值(DEFAULT)

当为数据库表中插入一条新记录时,如果没有为某个字段赋值,那么数据库系统会自动为这个字段插入默认值。

1、设置默认值

MariaDB [company]> CREATE TABLE t_dept(deptno INT NOT NULL,dname VARCHAR(20) DEFAULT 'cjgong',loc VARCHAR(40));

2、查看

三、设置唯一约束(UNIQUE,UK)

当数据库表中的某个字段上的内容不允许重复时,则可以使用UK约束进行设置。

1、设置唯一约束

MariaDB [company]> CREATE TABLE t_dept(deptno INT,dname VARCHAR(20) UNIQUE,loc VARCHAR(40));

2、查看

四、设置主键约束(PRIMARY KEY,PK)

当想用数据库表中的某个字段来唯一标识所有记录是,则可以使用PK约束进行设置

1、单字段主键

MariaDB [company]> CREATE TABLE t_dept(deptno INT PRIMARY KEY,dname VARCHAR(20),loc VARCHAR(40));

表t_dept中字段deptno已经被设置为PK约束,同时可以发现主键约束相当于非空约束加上唯一约束。

2、多字段主键

MariaDB [company]> CREATE TABLE t_dept(deptno INT,dname VARCHAR(20),loc VARCHAR(40),CONSTRAINT pk_name_deptno PRIMARY KEY(deptno,dname));

五、设置字段值自动增加(AUTO_INCREMENT)

auto_increment是MySQL唯一扩展的完整性约束,当为数据库表中插入新记录时,字段上的值会自动生成唯一的ID。在具体设置auto_increment约束时,一个数据库表中只能有一个字段使用该约束,该字段的数据类型必须是整数类型。

1、由于设置auto_increment约束后的字段会生成唯一的ID,所以该字段也经常会设置为PK主键。

MariaDB [company]> CREATE TABLE t_dept(deptno INT PRIMARY KEY AUTO_INCREMENT,dname VARCHAR(20),loc VARCHAR(40));

2、查看

六、设置外键约束(FOREIGN KEY,FK)

设置外键约束的两个表之间具有父子关系,即字表中某个字段的取值范围由父表决定。例如,表示一种部门和雇员关系,即每个部门有多个雇员。首先应该有两个表:部门表和雇员表,然后雇员表中有一个表示部门编号的字段deptno,其依赖于部门表的主键,这样字段deptno就是雇员表的外键,通过该字段部门表和雇员表建立了关系

1、设置FK约束的字段必须依赖于数据库中已经存在的父表的主键,同时外键可以为NULL

MariaDB [company]> CREATE TABLE t_dept(deptno INT PRIMARY KEY,dname VARCHAR(20),loc VARCHAR(40));

MariaDB [company]> CREATE TABLE t_employee(
    -> empno INT PRIMARY KEY,
    -> ename VARCHAR(20),
    -> job VARCHAR(40),
    -> MGR INT,
    -> Hiredate DATE,
    -> sal DOUBLE(10,2),
    -> comm DOUBLE(10,2),
    -> deptno INT,
    -> CONSTRAINT fk_deptno FOREIGN KEY(deptno) REFERENCES t_dept(deptno));

2、查看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章