mysql> select ename, sal, emp.deptno from emp, dept
> where emp.deptno=dept.deptno;
+--------+---------+--------+
| ename | sal | deptno |
+--------+---------+--------+
| SMITH | 800.00 | 20 |
| ALLEN | 1600.00 | 30 |
| WARD | 1250.00 | 30 |
| JONES | 2975.00 | 20 |
| MARTIN | 1250.00 | 30 |
| BLAKE | 2850.00 | 30 |
| CLARK | 2450.00 | 10 |
| SCOTT | 3000.00 | 20 |
| KING | 5000.00 | 10 |
| TURNER | 1500.00 | 30 |
| ADAMS | 1100.00 | 20 |
| JAMES | 950.00 | 30 |
| FORD | 3000.00 | 20 |
| MILLER | 1300.00 | 10 |
+--------+---------+--------+
14 rows in set (0.01 sec)
显示部门号为10的部门,员工名和工资
sql复制代码
mysql> select dname,ename,sal from emp,dept
> where emp.deptno=dept.deptno and emp.deptno=10;
+------------+--------+---------+
| dname | ename | sal |
+------------+--------+---------+
| ACCOUNTING | CLARK | 2450.00 |
| ACCOUNTING | KING | 5000.00 |
| ACCOUNTING | MILLER | 1300.00 |
+------------+--------+---------+
3 rows in set (0.00 sec)
显示各个员工的姓名、工资、工资级别
sql复制代码
mysql> select ename, sal, grade from emp, salgrade
> where emp.sal between losal and hisal;
+--------+---------+-------+
| ename | sal | grade |
+--------+---------+-------+
| SMITH | 800.00 | 1 |
| ALLEN | 1600.00 | 3 |
| WARD | 1250.00 | 2 |
| JONES | 2975.00 | 4 |
| MARTIN | 1250.00 | 2 |
| BLAKE | 2850.00 | 4 |
| CLARK | 2450.00 | 4 |
| SCOTT | 3000.00 | 4 |
| KING | 5000.00 | 5 |
| TURNER | 1500.00 | 3 |
| ADAMS | 1100.00 | 1 |
| JAMES | 950.00 | 1 |
| FORD | 3000.00 | 4 |
| MILLER | 1300.00 | 2 |
+--------+---------+-------+
14 rows in set (0.06 sec)
自连接
自连接是指在同一张表中连接查询
显示员工FORD的上级领导的编号和姓名(mgr是员工领导的编号-empno)
使用子查询:
sql复制代码
mysql> select ename,empno from emp
> where (select mgr from emp where ename='FORD')=empno;
+-------+--------+
| ename | empno |
+-------+--------+
| JONES | 007566 |
+-------+--------+
1 row in set (0.00 sec)
使用多表查询(自查询):
sql复制代码
mysql> select leader.ename, leader.empno from emp leader,emp worker
> where leader.empno=worker.mgr and worker.ename='FORD';
+-------+--------+
| ename | empno |
+-------+--------+
| JONES | 007566 |
+-------+--------+
1 row in set (0.02 sec)
mysql> select ename, job, deptno from emp
> where job in (select job from emp where deptno=10)
> and deptno<>10;
+-------+---------+--------+
| ename | job | deptno |
+-------+---------+--------+
| SMITH | CLERK | 20 |
| JONES | MANAGER | 20 |
| BLAKE | MANAGER | 30 |
| ADAMS | CLERK | 20 |
| JAMES | CLERK | 30 |
+-------+---------+--------+
5 rows in set (0.00 sec)
all关键字:显示工资比部门30的所有员工的工资高的员工的姓名、工资、部门号
sql复制代码
mysql> select ename, sal, deptno from emp
> where sal > all (select sal from emp where deptno=30);
+-------+---------+--------+
| ename | sal | deptno |
+-------+---------+--------+
| JONES | 2975.00 | 20 |
| SCOTT | 3000.00 | 20 |
| KING | 5000.00 | 10 |
| FORD | 3000.00 | 20 |
+-------+---------+--------+
4 rows in set (0.01 sec)
any关键字:显示工资比部门30的任意员工的工资高的员工的姓名、工资、部门号(包含自己部门的员工)
sql复制代码
mysql> select ename, sal, deptno from emp
> where sal > any(select sal from emp where deptno=30);
+--------+---------+--------+
| ename | sal | deptno |
+--------+---------+--------+
| ALLEN | 1600.00 | 30 |
| WARD | 1250.00 | 30 |
| JONES | 2975.00 | 20 |
| MARTIN | 1250.00 | 30 |
| BLAKE | 2850.00 | 30 |
| CLARK | 2450.00 | 10 |
| SCOTT | 3000.00 | 20 |
| KING | 5000.00 | 10 |
| TURNER | 1500.00 | 30 |
| ADAMS | 1100.00 | 20 |
| FORD | 3000.00 | 20 |
| MILLER | 1300.00 | 10 |
+--------+---------+--------+
12 rows in set (0.01 sec)