数据库约束

文章目录

    • 一、约束的概念
    • 二、约束的分类与使用
      • (一)自增约束--Auto_increment
        • 1、约束描述
        • 2、操作
        • 3、特点
        • 4、指定自增字段初始值
          • 方式1,创建表时指定
          • 方式2,创建表之后指定
      • (二)外键约束--Foreign Key
        • 1、约束描述
        • 2、操作
          • (1)添加外键约束的语法:
          • (2)删除外键约束:
        • 3、特点
      • (三)默认约束--Default
        • 1、约束描述
        • 2、操作
        • (1)、添加方式1:
        • (2)、添加方式2:
        • (3)、删除:
        • 3、特点
      • (四)检查约束--Check
        • 1、约束描述
        • 2、操作
          • (1)、添加检查约束的语法:
          • (2)、删除检查约束:
        • 3、特点
      • (五)主键约束--Primary Key
        • 1、约束描述
        • 2、操作
          • (1)、添加单列主键
            • 方式1
            • 方式2
            • 方式3:通过修改表结构添加主键
            • 方式4:添加单列主键
            • 方式5:添加多列联合主键
          • (2)、删除主键
            • 删除单列主键
            • 删除联合主键
        • 3、特点
      • (六)非空约束--Not Null
        • 1、约束描述
        • 2、操作
        • 2、
          • (1)添加非空约束
            • 方式1:
            • 方式2:
          • (2)删除非空约束
        • 3、特点
      • (七)唯一约束--Unique
        • 1、约束描述
        • 2、操作
          • (1)添加唯一约束
            • 方式1:创建表时指定
            • 方式2:
          • (2)删除唯一约束
        • 3、特点

一、约束的概念

1、约束是作用于表中列上的规则,用于限制加入表中的数据;

2、约束的存在保证了数据库中数据的正确性、有效性和完整性。

二、约束的分类与使用

(一)自增约束–Auto_increment

1、约束描述

在 MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键会自动以相同的步长进行增长。

2、操作

语法

字段名 数据类型 auto_increment
  • 直接创建不指定初始值
create table t_user1( 
  id int primary key auto_increment, 
  name varchar(20) 
);
3、特点

默认情况下,auto_increment的初始值是 1,每新增一条记录,字段值自动加 1。

一个表中只能有一个字段使用 auto_increment约束,且该字段必须有唯一索引,以避免序号重复(即为主键或主键的一部分)。

auto_increment约束的字段必须具备 NOT NULL 属性。
auto_increment约束的字段只能是整数类型(TINYINT、SMALLINT、INT、BIGINT 等。
auto_increment约束字段的最大值受该字段的数据类型约束,如果达到上限,auto_increment就会失效。

4、指定自增字段初始值

如果第一条记录设置了该字段的初始值,那么新增加的记录就从这个初始值开始自增。例如,如果表中插入的第一条记录的 id 值设置为 5,那么再插入记录时,id 值就会从 5 开始往上增加

方式1,创建表时指定
create table t_user ( 
  id int primary key auto_increment, 
  name varchar(20)
)auto_increment=100;
方式2,创建表之后指定
create table t_user3 ( 
  id int primary key auto_increment, 
  name varchar(20)
);
alter table t_user2 auto_increment=100;

注意:
delete和truncate在删除后自增列的变化
delete数据之后自动增长从断点开始
truncate数据之后自动增长从默认起始值开始

(二)外键约束–Foreign Key

1、约束描述

外键用来让两个表的数据之间建立连接,保证数据的一致性和完整性

2、操作

语法

(1)添加外键约束的语法:
ALTER TABLE 从表 ADD CONSTRAINT 外键名 FOREIGN KEY(外键列名) REFERENCES 主表(主键列名)
(2)删除外键约束:
ALTER TABLE 从表 DROP FOREIGN KEY 外键名
3、特点

(三)默认约束–Default

1、约束描述

保存数据时未指定值,采用默认值

2、操作

语法

(1)、添加方式1:
 <字段名> <数据类型> default 默认值
create table t_user10 ( 
  id int , 
  name varchar(20) , 
  address varchar(20) default ‘北京’ -- 指定默认约束 
);
(2)、添加方式2:
alter table 表名 modify 列名 类型 default 默认值; 
alter table t_user11 modify <字段名> <数据类型> default 默认值;
(3)、删除:
alter table <表名> modify column <字段名> <类型> default null; 

添加默认约束-方式2

create table t_user11 ( 
  id int , 
  name varchar(20) , 
  address varchar(20)  
);
alter table t_user11 modify address varchar(20) default  ‘北京’;

删除默认约束

alter table <表名> modify column <字段名> <类型> default null; 

alter table t_user11 modify column address varchar(20) default null;
3、特点

(四)检查约束–Check

1、约束描述

保证列中的值满足某一条件

Tips:MySQL不支持检查约束。

2、操作

语法

(1)、添加检查约束的语法:
ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK (条件表达式)

条件表达式的结果必须为TRUE,否则不允许插入或更新。

例如限定年龄必须大于0小于150:

ALTER TABLE 用户 ADD CONSTRAINT ck_age CHECK (age > 0 and age < 150)
(2)、删除检查约束:
ALTER TABLE 表名 DROP CONSTRAINT 约束名
3、特点

与默认值、唯一约束相比,检查约束可以使用更复杂的条件逻辑。

(五)主键约束–Primary Key

1、约束描述

主键是一行数据的唯一标识,要求非空且唯一。

2、操作
(1)、添加单列主键
方式1

在 create table 语句中,通过 PRIMARY KEY 关键字来指定主键。
–在定义字段的同时指定主键,语法格式如下:

create table 表名(
   ...
   <字段名> <数据类型> primary key 
   ...
)

例如:

create table emp1(
    eid int primay key,
    name VARCHAR(20),
    deptId int,
    salary double
);
方式2

在定义字段之后再指定主键,语法格式如下:

create table 表名(
   ...
   [constraint <约束名>] primary key [字段名]
);

例如:

 create table emp2(
	eid INT,
	name VARCHAR(20),
	deptId INT,
	salary double,
	constraint  pk1 primary key(id)
 );
方式3:通过修改表结构添加主键
create table 表名(
   ...
);
alter table <表名> add primary key(字段列表);
方式4:添加单列主键
create table emp4(
  eid int, 
  name varchar(20), 
  deptId int, 
  salary double, 
);
alter table emp4 add primary key(eid);
方式5:添加多列联合主键

所谓的联合主键,就是这个主键是由一张表中多个字段组成的。
注意:

当主键是由多个字段组成时,不能直接在字段名后面声明主键约束。
一张表只能有一个主键,联合主键也是一个主键

create table 表名(
   ...
   primary key (字段1,字段2,…,字段n)
);
create table emp3( 
  name varchar(20), 
  deptId int, 
  salary double, 
  primary key(name,deptId) 
);
(2)、删除主键
alter table <数据表名> drop primary key;
删除单列主键
alter table emp1 drop primary key;
删除联合主键

alter table emp5 drop primary key;

3、特点

(六)非空约束–Not Null

1、约束描述

保证列中所有数据不能为Null值。

2、操作

语法

2、
(1)添加非空约束
方式1:
<字段名> <数据类型> not null
create table t_user7 ( 
  id int , 
  name varchar(20)  not null, -- 指定非空约束 
  address varchar(20) not null-- 指定非空约束 
); 
方式2:
alter table 表名 add constraint 约束名 unique();
create table t_user7 ( 
  id int , 
  name varchar(20) , -- 指定非空约束 
  address varchar(20) -- 指定非空约束 
); 
alter table t_user7 modify name varchar(20) not null; 
alter table t_user7 modify address varchar(20) not null;
(2)删除非空约束
	- alter table t_user7 modify name varchar(20) not null; 

	- alter table t_user7 modify address varchar(20) not null;
3、特点

(七)唯一约束–Unique

1、约束描述

保证列中所有数据各不相同。

2、操作

语法

(1)添加唯一约束
方式1:创建表时指定
<字段名> <数据类型> unique
create table t_user8 ( 
 id int , 
 name varchar(20) , 
 phone_number varchar(20) unique -- 指定唯一约束 
);
方式2:
alter table 表名 add constraint 约束名 unique();
create table t_user9 ( 
  id int , 
  name varchar(20) , 
  phone_number varchar(20) -- 指定唯一约束 
); 
alter table t_user9 add constraint unique_ph unique(phone_number);
(2)删除唯一约束
alter table <表名> drop index <唯一约束名>;
alter table t_user9 drop index unique_ph;
3、特点

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