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)

 

posted @ 2022-12-14 23:54  ZitWang  阅读(130)  评论(0)    收藏  举报