SQL_DML语句基础知识(一)

1.去除重复的行:

SELECT DISTINCT ename FROM emp;

2.连接表达式

SELECT ename||'的部门号是'||deptno FROM emp;

3.处理NULL

SELECT NVL(ename,'noname') FROM emp; --如果某行ename为空则显示noname,不为空则显示ename的值.

4.日期类型显示格式

如果表arwen中列birthday为date类型

SELECT TO_CHAR(birthday,'YYYY-MM-DD') FROM arwen

5.WHERE 子句中的BETWEEN ..AND

相当于大于等于且小于等于

6.LIKE模糊查询.%表示0到多个字符_表示单个字符

7.转义字符:

如果表中有%,_这样的符号需要用到转义字符\

假如表arwen中的ename是a%name.查找

SELECT * FROM arwen WHERE ename LIKE 'a\%name';

也可以这样写SELECT * FROM arwen WHERE ename LIKE 'as%name' ESCAPE 's'; --s可以替换成其他任何字符

8.多列排序:

排序中NULL被当作最大值处理

SELECT ename,deptno,sal FROM emp

ORDER BY ename ASC,sal DESC; --ASC表示升序,默认都是按升序.DESC降序.此处表示先用名字排序.名字相同再用sal排序.

特殊情况:如果用UNION连接两个表,排序时不能指定列.只能用数字

SEELCT deptno,dname FROM dept

UNION

SELECT empno,ename FROM emp

ORDER BY 1; --表示参照第一列来排序,如果写成2就是用第二列

9.分组函数

SELECT AVG(empno),SUM(empno),MAX(empno),MIN(empno),COUNT(empno) FROM emp;

--其中的分组函数分别表示平均值,总和,最大值,最小值,总行数

分组函数中NULL被忽略掉不在计算范围之类.所以如果empno为空则计算的不是整个表的总行数.而COUNT(*)总是表的总行数.

10.GROUP BY用法

上面的分组函数是应用于整个表,假如我们只计划表中某个部门的平均值等等.

SELECT deptno,AVG(sal) FROM emp

GROUP BY deptno;

如果想在大组中再分成小组计算.例如每个部门分组,再每个职位分组.

SELECT deptno,job,AVG(sal) avg_sal,FROM emp

GROUP BY ROLLUP(deptno,job);

DEPTNO JOB AGV_SAL

-------------------------------------------------------------------

10 CLERK 4500

10MANAGER8500

10 6500

20CLERK5000

20 MANAGER 9000

20 7000

6750

其中6500是部门10的平均工资,7000是部门20的平均工资.6750是两个部门的平均工资.

注意如果查询语句去年ROLLUP则加颜色的数字就不会出现.

SELECT deptno,job,AVG(sal) avg_sal,FROM emp

GROUP BY CUBE(deptno,job);

DEPTNO JOB AGV_SAL

-------------------------------------------------------------------

10 CLERK 4500

10 MANAGER 8500

10 6500

20 CLERK 5000

20 MANAGER 9000

20 7000

6750

CLERK 4750

MANAGER 8750

如果只显示平均工资大于5000的职位:

SELECT deptno, job,AVG(sal) avg_sal FROM emp

GROUP BY deptno,job

HAVING AVG(sal) >5000;

注意:如果HAVING改成WHERE会出错.WHERE子句中不能有分组函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值