约束

非空约束: 关键字是 NOT NULL
保证列中所有的数据不能有null值。
例如:id列在添加 马花疼 这条数据时就不能添加成功。
唯一约束:关键字是 UNIQUE
保证列中所有数据各不相同。
例如:id列中三条数据的值都是1,这样的数据在添加时是绝对不允许的。
主键约束: 关键字是 PRIMARY KEY
主键是一行数据的唯一标识,要求非空且唯一。一般我们都会给没张表添加一个主键列用来唯一标识数据。
例如:上图表中id就可以作为主键,来标识每条数据。那么这样就要求数据中id的值不能重复,不能为null值。
检查约束: 关键字是 CHECK
保证列中的值满足某一条件。
例如:我们可以给age列添加一个范围,最低年龄可以设置为1,最大年龄就可以设置为300,这样的数据才更合理些。
默认约束: 关键字是 DEFAULT
保存数据时,未指定值则采用默认值。
例如:我们在给english列添加该约束,指定默认值是0,这样在添加数据时没有指定具体值时就会采用默认给定的0。
外键约束: 关键字是 FOREIGN KEY
外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性。
外键约束现在可能还不太好理解,后面我们会重点进行讲解。
 

-- 员工表
create table emp(
id int PRIMARY KEY auto_increment, -- 员工id, 主键且自增长
ename VARCHAR(50) NOT NULL UNIQUE, -- 员工姓名,非空并且唯一
joindate DATE NOT NULL, -- 入职日期, 非空
salary double(7,2) NOT NULL, -- 工资,非空
bonus DOUBLE(7,2) DEFAULT 0 -- 奖金, 如果没有奖金默认为0
);

INSERT into emp(id,ename,joindate,salary,bonus) VALUES(1,'张三','1999-11-11',8800,5000);


-- 演示主键约束: 非空且唯一
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(null,'张三','1999-11-11',8800,5000);
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(1,'张三','1999-11-11',8800,5000);
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(2,'李四','1999-11-11',8800,5000);

-- 演示非空约束
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(3,null,'1999-11-11',8800,5000);

-- 演示唯一约束
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(3,'李四','1999-11-11',8800,5000);

-- 默认约束
INSERT into emp(id,ename,joindate,salary) VALUES(3,'王五','1999-11-11',8800);
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(4,'赵六','1999-11-11',8800,null);

-- 演示自动增长: auto_increment: 当列是数字类型并且唯一约束
INSERT into emp(ename,joindate,salary,bonus) VALUES('赵六','1999-11-11',8800,null);
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(null,'赵六2','1999-11-11',8800,null);
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(null,'赵六3','1999-11-11',8800,null);

SELECT * FROM emp;

**********

 

外键约束

-- 部门表
CREATE TABLE dept(
id int primary key auto_increment,
dep_name varchar(20),
addr varchar(20)
);
-- 员工表
CREATE TABLE emp(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int,

-- 添加外键 dep_id,关联 dept 表的id主键
CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)

);
-- 添加 2 个部门
insert into dept(dep_name,addr) values
('研发部','广州'),('销售部', '深圳');

-- 添加员工,dep_id 表示员工所在的部门
INSERT INTO emp (NAME, age, dep_id) VALUES
('张三', 20, 1),
('李四', 20, 1),
('王五', 20, 1),
('赵六', 20, 2),
('孙七', 22, 2),
('周八', 18, 2);

-- ------------------
select * from emp;


-- 删除外键
ALTER TABLE emp drop FOREIGN key fk_emp_dept

-- 建完表后 , 添加外键
ALTER TABLE emp add CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id);

posted on 2022-04-08 11:02  我要当程序源  阅读(154)  评论(0编辑  收藏  举报

导航