第一步:查询出MARTIN的工作和工资
SELECT job,sal FROM emp WHERE ename=‘MARTIN‘
第二步:查询出与MARTIN工作和工资相同的人
SELECT * FROM emp WHERE (job,sal) IN (${第一步})
结果:
SELECT * FROM emp WHERE (job,sal) IN (SELECT job,sal FROM emp WHERE ename=‘MARTIN‘)
5、有2个以上直接下属的员工信息
SELECT * FROM emp WHERE empno IN(
SELECT mgr FROM emp GROUP BY mgr HAVING COUNT(mgr)>=2);
子查询作为条件
子查询形式为单行多列
5、查询员工编号为7788的员工名称、员工工资、部门名称、部门地址
分析:(无需子查询)
查询列:员工名称、员工工资、部门名称、部门地址
查询表:emp和dept,分析得出,不需要外连接(外连接的特性:某一行(或某些行)记录上会出现一半有值,一半为NULL值)
条件:员工编号为7788
第一步:去除多表,只查一张表,这里去除部门表,只查员工表
SELECT ename, sal FROM emp e WHERE empno=7788
第二步:让第一步与dept做内连接查询,添加主外键条件去除无用笛卡尔积
SELECT e.ename, e.sal, d.dname, d.loc
FROM emp e, dept d
WHERE e.deptno=d.deptno AND empno=7788
第二步中的dept表表示所有行所有列的一张完整的表,这里可以把dept替换成所有行,但只有dname和loc列的表,这需要子查询 。
第三步:查询dept表中dname和loc两列,因为deptno会被作为条件,用来去除无用笛卡尔积,所以需要查询它 。
SELECT dname,loc,deptno FROM dept;
第四步:替换第二步中的dept
SELECT e.ename, e.sal, d.dname, d.loc
FROM emp e, (SELECT dname,loc,deptno FROM dept) d
WHERE e.deptno=d.deptno AND e.empno=7788
子查询作为表
子查询形式为多行多列
6、自连接:自己连接自己,起别名
求7369员工编号、姓名、经理编号和经理姓名
SELECT e1.empno , e1.ename,e2.mgr,e2.ename
FROM emp e1, emp e2
WHERE e1.mgr = e2.empno AND e1.empno = 7369;
练习:
求各个部门薪水最高的员工所有信息
select e.* from emp e,
--部门最高工资
(select max(sal) maxsal,deptno from emp
group by deptno) a
where e.deptno = a.deptno
and e.sal =a.maxsal
七、MySQL中的函数
八、MySQL数据库的备份与恢复
1 生成SQL脚本 导出数据
在控制台使用mysqldump命令可以用来生成指定数据库的脚本文本,但要注意,脚本文本中只包含数据库的内容,而不会存在创建数据库
的语句!所以在恢复数据时,还需要自已手动创建一个数据库之后再去恢复数据 。
mysqldump –u用户名 –p密码 数据库名>生成的脚本文件路径
现在可以在C盘下找到mydb1.sql文件了!
注意,mysqldump命令是在Windows控制台下执行,无需登录mysql!!!
2 执行SQL脚本 恢复数据
前提:必须先创建数据库名
执行SQL脚本需要登录mysql,然后进入指定数据库,才可以执行SQL脚本!!!
执行SQL脚本不只是用来恢复数据库,也可以在平时编写SQL脚本,然后使用执行SQL 脚本来操作数据库!大家都知道,在黑屏下编写SQL
语句时,就算发现了错误,可能也不能修改了 。所以我建议大家使用脚本文件来编写SQL代码,然后执行之!
SOURCE C:mydb1.sql
注意,在执行脚本时需要先行核查当前数据库中的表是否与脚本文件中的语句有冲突!例如在脚本文件中存在create table a的语句,
而当前数据库中已经存在了a表,那么就会出错!
还可以通过下面的方式来执行脚本文件:
mysql -uroot -p123 mydb1<c:mydb1.sql
mysql –u用户名 –p密码 数据库<要执行脚本文件路径
- 加仓和减仓的技巧
- MySQL教程4 MySQL8运算符 22.向JSON数据中插入新值 学习猿地
- Java架构-MongoDB基础入门到高级进阶-MongoDB与关系型数据库对比
- insert mysql数据库介绍:创建和读取(select)数据库的数据
- 学习猿地 PHP教程 20 PHP连接MySQL 4.修改数据操作
- C#如何动态创建MySql数据库和表
- mysql:数据库之外键的两个作用及总结
- MySQL云数据库创建、配置与使用教程
- 反转|“我眼中的你”展览排名公布,《会画少年的天空》能否上演反转?
- 揭秘|揭秘?丨月球基地、空间站……《流浪地球2》中的这些场景是他们打造