- 参考书籍《MySql从入门到精通》
- 学习视频【韩顺平讲MySQL】零基础一周学会MySQL -sql mysql教程 mysql视频 mysql入门_哔哩哔哩_bilibili
- 萌新入门,如有错误恳请各位大佬指点,不甚感激
- 自我复制数据(蠕虫复制) 有时,为了对某个sql语句进行效率测试,我们需要海量数据时,可以使用此法为表创建海量数据。
创建表
- INSERT INTO my_table
- (id,`name`,sal,job,deptno)
- SELECT empno,ename,sal,job,deptno FROM emp
自我复制并统计
- INSERT INTO my_table
- SELECT * FROM my_table
- SELECT COUNT(*) FROM my_table
如果多次进行自我复制,统计的值也会翻倍
例:如何删掉一张表的重复记录
先创建一个table02表
有时在实际应用中,为了合并多个select语句的结果,可以使用集合操作符号 union,union all union.sql
该操作符用于取得两个结果集的并集。当使用该操作符时,不会取消重复行。
select ename,sal,job from emp where sal>2500 union
- SELECT ename,sal,job FROM emp WHERE sal>2500
- UNION ALL
- SELECT ename,sal,job FROM emp WHERE job='manager'
该操作符与union all 相似,但是会自动去掉结果集中重复行
- SELECT ename,sal,job FROM emp WHERE sal>2500
- UNION
- SELECT ename,sal,job FROM emp WHERE job='manager'
例:列出部门名称和这些部门的员工名称和工作。同时要求 显示出那些没有员工的部门
如果左侧的表完全显示我们就说是左外连接
如果右侧的表完全显示我们就说是右外连接
先创建2个表
使用左连接(显示所有人的成绩,如果没有成绩,也要显示该人的姓名和id号,成绩显示为空)
这是一般情况下
下面使用左外连接
-
- SELECT `name`,stu.`id`,grade
- FROM stu LEFT JOIN exam
- ON stu.id=exam.id;
select ... from 表1 left join 表2 on 条件
下面是使用右外连接
- SELECT `name`,stu.id,grade
- FROM stu RIGHT JOIN exam
- ON stu.id =exam.id;
例:列出部门名称和部门的员工信息,同时列出那些没有员工的部门名(使用左外连接实现)
- SELECT dname,ename,job
- FROM dept LEFT JOIN emp
- ON dept.deptno=emp.deptno;
以下是右外连接:
- SELECT dname,ename,job
- FROM emp RIGHT JOIN dept
- ON dept.deptno=emp.deptno;
以上为今天的视频笔记,如有侵权请联系我删除。
学习如逆水行舟,不进则退。和小吴一起加油吧