SQL笔记第二期
SQL数据库约束知识点以及代码总结
前言
本期涉及SQL约束的知识点方便用来复习或参考
约束
一、约束的概念和分类
CREATE TABLE emp(
id INT PRIMARY KEY auto_increment,-- 员工id,主键且 自增长---auto_increment
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) VALUES(3,'王五','1999-11-11',8800);
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(4,'赵六','1999-11-11',8800,NULL);-- 不给值的时候才能默认,给null值就是null
三、非空约束:
-- 演示非空约束
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,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);
六、约束名称、描述、关键字:
七、外键约束:
-- 部门表
CREATE TABLE dept(
id INT PRIMARY KEY auto_increment,-- 添加主键约束,且自增长
dep_name VARCHAR(20),
addr VARCHAR(20)
);
-- 员工表
CREATE table emp2(
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)
);
-- 添加两个部门
INSERT INTO dept(dep_name,addr) VALUES('研发部','广州'),('销售部','深圳');
-- 添加员工,dep_id表示员工所在的部门
INSERT INTO emp2(NAME,age,dep_id)VALUES('张三',20,1),('李四',20,1),('王五',20,1),('赵六',20,2),('孙七',22,2),('周八',18,2);
-- -----------------
SELECT *FROM emp2;
DROP TABLE dept;
-- 删除外键
ALTER TABLE emp2 DROP FOREIGN KEY fk_emp_dept;
-- 建完表后,添加外键
ALTER TABLE emp2 ADD CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id);
查看外键是否成功建立物理连接:
-- 删除外键
ALTER TABLE emp2 DROP FOREIGN KEY fk_emp_dept;
外键删除后,主表与从表的物理连解除:
建完表后,成功添加外键:
-- 建完表后,添加外键
ALTER TABLE emp2 ADD CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id);
在建完表之后也能成功添加外键并建立物理连接:
总结和致谢
以上就是今天要讲的内容,本文仅仅简单介绍了sql中约束的语法以及注意事项,而sql还有很多需要学习的知识,本文对初学者还是有一定帮助的,主要是这个程度我自己用感觉是够了,有兴趣的可以自己去b站观看视频,学习数据库设计部分,SQL到此为止,有时间我会再写一份使用JDBC的文章,帮助小白避开一些问题,感谢您的观看。