*文章仅供参考,欢迎阅者提出意见!

目录

主键约束

主键自增

外键约束

非空约束

默认值约束

唯一值约束


正文:

主键约束

“主键(PRIMARY KEY)”的完整称呼是“主键约束”,是一个列或者列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键(由多列组成的主键称为复合主键),通过它可以强制表的实体完整性。主键不可为NULL,也不可重复。

在 CREATE TABLE 语句中,主键是通过 PRIMARY KEY 关键字来指定的;

//在定义字段的时候设置主键
CREATE TABLE tb_emp3 (
    id INT(11) PRIMARY KEY,
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT
);

//在定义完所有列之后,再来指定主键约束
CREATE TABLE tb_emp4 (
    id INT(11),
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT,
    PRIMARY KEY(id)
);

//设置复合主键
CREATE TABLE tb_emp5 (
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT,
    PRIMARY KEY(id,deptId)
);

//在修改表的时候重新定义主键
ALTER TABLE tb_emp2 ADD PRIMARY KEY(id);

主键自增

在数据类型后面追加 AUTO_INCREMENT,一个表只能有一个属性进行自增,一般是整数类型(INT、BIGINT、TINYINT)自增。

主键默认值从1开始,只有主键才能设置自增!

CREATE TABLE dept (
  id INT(11) PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  address VARCHAR(255) DEFAULT '苏州'
);

外键约束

外键约束(FOREIGN KEY)用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。

外键是从表中的一列,同时也对应着主表中的主键。何为主从关系?比如说学生表和班级表,班级表中有class_id,学生表中也有class_id,那么班级表是主表,学生表是从表,class_id是学生表的外键,也是班级表的主键。

外键可以为空。

//创建部门表
CREATE TABLE dept (
    id INT(11) PRIMARY KEY,
    name VARCHAR(255) NOT NULL
) ;
 
//插入数据
INSERT INTO dept(id,name) VALUES(4,'开发部');
 
//创建employee表,设置外键约束
CREATE TABLE employee (
   id INT(11) PRIMARY KEY,
   name VARCHAR(255) NOT NULL,
   age INT(11),
   deptId INT(11),
   //外键语法:constraint foreignKeyName foreign key(属性) references 主表(主键)
   CONSTRAINT fk_emp_dept FOREIGN KEY(deptId) REFERENCES dept(id)
);
 
//这里必须要指定部门表的某条记录的主键ID
INSERT INTO employee(id,name,age,deptId) VALUES(1,'大宇',22,4);

非空约束

顾名思义,该列数据均不能为空格。 建表的时候,直接在后面使用NOT NULL即可定义该列为非空列。

默认值约束

默认值约束(Default Constraint)用来指定某列的默认值。如果插入一条新的记录时没有为这个字段赋值,那么系统会自动为这个字段赋值为默认值。创建表时可以使用 DEFAULT 关键字设置默认值约束。

CREATE TABLE tb_dept3 (
    id INT(11) PRIMARY KEY,
    name VARCHAR(22),
    location VARCHAR(50) DEFAULT 'Beijing'
);

唯一值约束

唯一约束(Unique Key)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。在定义完列之后直接使用 UNIQUE 关键字指定唯一约束。

UNIQUE 和 PRIMARY KEY 的区别:一个表可以有多个字段声明为 UNIQUE,但只能有一个 PRIMARY KEY 声明;声明为 PRIMAY KEY 的列不允许有空值,但是声明为 UNIQUE 的字段允许空值的存在。