SQL执行语句例子

 

--子查询
--子查询是一条查询语句,其嵌套在其他sql语句中。
--作用是为外层的sql语句提供数据
--查询和张三相同部门的员工信息?
SELECT * FROM EMP WHERE DEPTNO=(
SELECT DEPTNO FROM EMP WHERE NAME='zhangsan');
--子查询除了常用于DQL之外,也可以用于DDL与DML中
------------------------------
DROP TABLE  EMP_DEPT
--若查询中查询的内容是函数或表达式
--那么该字段必须给予别名
--DML中使用子查询
CREATE TABLE EMP_DEPT2
AS
SELECT   E.NAME ENAME,D.DNAME DNAME,E.JOB   EJOB,E.SALARY*12  YSAL,E.SALARY 
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.ID
--删除和’lisi'相同部门的员工信息?
DELETE FROM EMP WHERE DEPTNO=(
SELECT DEPTNO FROM EMP WHERE NAME='lisi')
--把’wangba'所在部门所有员工工资提高10%
UPDATE  EMP SET SALARY=SALARY*1.1  WHERE DEPTNO=(
SELECT DEPTNO FROM EMP WHERE NAME='wangba')
----------------------------------------------
SELECT *FROM EMP
--子查询根据查询的结果集不同,通常分为:
--单行单例:常用于where中(配合=,>,<等等)
--多行单列:常用于where中(配合in、ANY、ALL)
--多行多列:常用在from中当做表看待
--查看比clerk和IT工资都高的员工的信息
SELECT *FROM EMP WHERE SALARY> ALL(
SELECT SALARY FROM EMP WHERE JOB='IT' OR JOB='clerk');
--查看和clerk相同的其他职位的员工信息
SELECT NAME,JOB,DEPTNO FROM  EMP WHERE DEPTNO IN(
SELECT  DEPTNO FROM EMP WHERE JOB='clerk')

---------------------------
SELECT NAME,JOB,DEPTNO FROM  EMP WHERE DEPTNO IN(
SELECT  DEPTNO FROM EMP WHERE JOB='clerk')AND  JOB <>'clerk';
-----EXISTS 存在关键字
--用在where中,其后要跟一个子查询,作用是若子查询
--至少可以查出一条记录,那么exists表达式返回true
--  如果,NO EXISTS 查不到数据就返回true
--查看员工的部门
SELECT D.DNAME,D.DLOCAL
 FROM DEPT D
WHERE EXISTS(
SELECT *FROM EMP E
WHERE E.DEPTNO=D.ID
)
---没有下属的员工
SELECT E.NAME FROM EMP E  WHERE NOT EXISTS(
SELECT *FROM EMP M
WHERE M.MGR=E.ID
)
--查询列出最低薪水高于部门3的最低薪水的部门信息
SELECT MIN(SALARY),DEPTNO
FROM EMP
GROUP BY DEPTNO
HAVING MIN(SALARY)>(
SELECT MIN(SALARY) FROM EMP WHERE DEPTNO=3);

--查看高于自己所在部门平均工资的员工信息
SELECT E.*,D.*
FROM EMP E,DEPT D
WHERE E.DEPTNO=D.ID

SELECT E.NAME,E.DEPTNO,E.SALARY
FROM  EMP E,(
SELECT  AVG (SALARY) AVG_SAL,DEPTNO
FROM EMP
GROUP BY  DEPTNO) T
WHERE E.DEPTNO =T.DEPTNO
AND E.SALARY>T.AVG_SAL

 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值