约束
一、约束的概述
1.为什么需要约束
数据完整性是指数据的精确性和可靠性。它是防止数据库 中存在不符合 语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。
①实体完整性:例如,同一个表中,不能存在两条完全相同无法区分的记录。
②域完整性:例如,年龄范围0-120,性别范围“男/女”
③引用完整性:例如,员工在部门,在部门表中要能找到这个部门
④用户自定义完整性:例如,用户名唯一,密码不能为空等,本部门经理的工资不得高于本部门职工的平均工资的5倍。
1.3约束的分类:
角度1:约束的字段的个数
单列约束 VS 多列约束
角度2:约束的作用范围
列级约束:将此约束声明在对应字段的后面
表级约束:在表中所有字段都声明完,在所有字段的后面声明的约束
角度3:约束的作用(功能)
① not null (非空约束)
②unique (唯一性约束)
③ primary key(主键约束)
④foreign KEY (外键约束)
⑤check (检查约束)
⑥default(默认值约束)
如何添加/删除约束?
CREATE TABLE 时添加约束
ALTER TABLE 时增加约束,删除约束
二、约束的分类
not null (非空约束)
特点:
#数据完整性和约束的分类
/*
什么叫约束?对表中字段的限制
约束的分类:
角度1:约束的字段的个数
单列约束 VS 多列约束
角度2:约束的作用范围
列级约束:将此约束声明在对应字段的后面
表级约束:在表中所有字段都声明完,在所有字段的后面声明的约束
角度3:约束的作用(功能)
① not null (非空约束)
②unique (唯一性约束)
③ primary key(主键约束)
④foreign KEY (外键约束)
⑤check (检查约束)
⑥default(默认值约束)
如何添加/删除约束?
CREATE TABLE 时添加约束
ALTER TABLE 时增加约束,删除约束
*/
#如何查看表中的约束
SELECT * FROM information_schema.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'employees';
CREATE DATABASE dbtest13;
USE dbtest13;
#not null (非空约束)
#在CREATE TABLE 时添加约束
CREATE TABLE test1(
id INT NOT NULL,
last_name VARCHAR(15) NOT NULL,
email VARCHAR(25),
salary DECIMAL(10,2)
);
DESC test1;
INSERT INTO test1(id,last_name,email,salary)
VALUES(1,'Tom','tom@126.com','3400');
#错误: Column 'last_name' cannot be null
INSERT INTO test1(id,last_name,email,salary)
VALUES(2,NULL,'tom@126.com','3400');
UPDATE test1
SET last_name = NULL
WHERE id = 1;
#在ALTER TABLE 时增加约束
DESC test1;
ALTER TABLE test1
MODIFY email VARCHAR(25) NOT NULL;
#Column 'last_name' cannot be null
UPDATE test1
SET last_name = NULL
WHERE id = 1;
SELECT * FROM test1;
#在ALTER TABLE 时删除约束
ALTER TABLE test1
MODIFY email VARCHAR(25) NULL;
unique (唯一性约束)
#在CREATE TABLE 时添加约束
CREATE TABLE test2(
id INT UNIQUE, #列级约束
last_name VARCHAR(15),
email VARCHAR(