Mysql数据库(5)-自我复制,约束,外连接
一.表的自我复制
1.使用场景与引入:表的自我复制也叫蠕虫复制,当我们对某个 sql 语句进行效率测试需要海量数据时,可以使用此法给表创建海量数据
2.自我复制步骤
2.1 先把 a表的记录复制到 b表
INSERT INTO 表b (id, `name`, sal, job,deptno)
SELECT empno, ename, sal, job, deptno FROM 表a;
2.2 自我复制
INSERT INTO 表b
二.查询合并
1.union all:取结果的并集,all全都要,重复的也要
select语句1 union all select语句2
2.union:取结果的并集,重复的不要
select语句1 union select语句2
三.Mysql表外连接
1.需求:多表查询时,我们根据关联条件可以将匹配上的数据查出来,没有匹配上的则不会显示,如果我们想让独独出现在一个表中的数据(没有匹配的数据)也显示就用到了外连接。其中左边的表显示为左外连接,右边的表完全显示称为右外连接。
2.解释:【笛卡尔集是表a的每一行*表b的每一行,多表查询匹配是排除错误情况,比如说乘出来的一行不能有两个一样的列名其数值却不一样。外连接时是数值在a中有的b中没有,此时不能乘出一行,称为没有匹配】
3.基本使用
SELECT `name`, stu.id, grade
FROM stu LEFT JOIN exam
ON stu.id = exam.id;
SELECT `name`, stu.id, grade
FROM exam RIGHT JOIN stu
ON stu.id = exam.id;
四.Mysql约束
1.主键
主键的指定方式: 直接在字段名后指定:字段名 primakry key;
在表定义最后写 primary key(列名);
补充:主键自增长:id INT PRIMARY KEY AUTO_INCREMENT
2.非空
列名 列类型 not null;
3.唯一
列名 列类型 unique;
4.外键
4.1foreign key:用于定义主表与从表之间的关系,外键约束在从表上,指向主表的某个字段(主键或unique)
4.2 基本使用:FOREIGN KEY (从表列名) REFERENCES 主表名(主表列名)
4.3注意事项:表的引擎为innodb才支持外键与事务(关于事务之后总结);一旦建立主外键关系,主表数据就不能随意删除了,从表的数据添加也受到主表数据的制约(从表数据必须在主表上存在才行,或者从表数据为null。)
5.check约束
列名 列类型 check(check条件)
sex VARCHAR(6) CHECK (sex IN('man','woman')),
sal DOUBLE CHECK ( sal > 1000 AND sal < 2000)

浙公网安备 33010602011771号