数据库入门之约束

约束:

对表中数据进行一些限制,从而保证数据的正确性。

-- 删除表
DROP TABLE emp;
-- 员工表
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,-- 非空
bouns DOUBLE(7,2)DEFAULT 0 -- 奖金,默认为0
);
-- 查询表
SELECT * FROM emp;


-- 演示非空约束 
INSERT into emp(id,ename,joindate,salary,bouns) VALUES(1,'小马','1999-12-19',NULL,10);
-- 演示唯一约束,不能和主键的id序列向重复
INSERT into emp(id,ename,joindate,salary,bouns) VALUES(1,'小马','1999-12-19',3000,10);
-- 演示默认约束
INSERT into emp(id,ename,joindate,salary) VALUES(1,'小马','1999-12-19',3000);
-- 演示自动增长:auto_increment:当列是数字类型并且唯一约束
-- ??这里为什么跑不起来
INSERT into emp(ename,joindate,salary,bouns) VALUES('小马','1999-12-19',3000,10);
INSERT into emp(id,ename,joindate,salary,bouns) VALUES(NULL,'小马','1999-12-19',3000,10);

 外建约束

外键约束用来建立物理关系的约束。

举个例子,先创建部门表,再创建员工表。(员工属于某一个部门)

如果我们直接删除某一个部门,其中的员工却还在,这样就会出现错误。

所以我们要建立外建约束来建立物理关系进行正确约束。

 

-- 部门表
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),
('王五',19,1),
('赵六',21,2),
('孙七',23,2),
('周八',24,2);

-- 删除外键
alter TABLE emp drop FOREIGN KEY fk_emp_dept;
-- 创建完表,添加外键
alter TABLE emp add CONSTRAINT fk_emp_dept FOREIGN KEY (dep_id) REFERENCES dept(id) ;

SELECT * FROM dept;
SELECT * FROM emp;

show tables;
drop TABLE dept;
DROP TABLE emp;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>