SQL回炉之一:单表操作、函数总结


一:单表查询

--模糊查询A,A之前只有一个字母,后边有0或n个字母
SELECT * FROM emp WHERE ename LIKE '_A%';
--DISTINCT两项,去除这两项全都重复的项目
SELECT DISTINCT deptno,sal FROM emp;
--靠一项(deptno)排序后,结果靠另一项(sal)再排一次
SELECT * FROM emp ORDER BY deptno ASC,sal DESC;


二:函数总结

1.字符串
--1.lower(args),upper(args)
SELECT lower(ename) FROM emp;
--忽略大小写
SELECT ename FROM emp WHERE lower(ename) like '_a%';
--2.substr(),从第1个开始截取,一共截取3个字符
SELECT substr(ename,1,3) FROM emp;
--3.chr(),ascii(''),ASCII码数值和字符转换
SELECT chr(65) FROM dual;
SELECT ascii('A') FROM dual;


2.数值:
--1.round()四舍五入
SELECT round(1.2345) FROM dual;
--2.截取位数,小数点后几位
SELECT round(1.234567,4) FROM dual;
--3.to_char(,)数字或日期转成某种格式
--数字显示格式
SELECT to_char(sal,'$99,999.999') FROM emp;


3.日期转换:
--1.to_char(),HH24是二十四时制,HH十二小时时制)
SELECT to_char(hiredate,'YYYY-MM-DD HH24:MI:SS') FROM emp;
--2.to_date()
SELECT * FROM emp WHERE hiredate > to_date('1970-01-01','YYYY-MM-DD');


4.空值:
--nvl(),某一项是空值,就显示成0
SELECT ename,nvl(comm,0) FROM emp;


5.运算:
SELECT max(sal) FROM emp;
SELECT min(sal) FROM emp;
SELECT sum(sal) FROM emp;
SELECT round(avg(sal),3) FROM emp;
--求非空项目个数
SELECT count(*) FROM emp;
SELECT count(comm) FROM emp;
SELECT count(DISTINCT deptno) FROM emp;


三:分组查询

--按XXX分组
SELECT avg(sal) FROM emp GROUP BY deptno;
--HAVING过滤分组后的数据(WHERE过滤单条)
SELECT deptno,avg(sal) 
FROM emp 
GROUP BY deptno 
HAVING avg(sal)>2000
ORDER BY deptno ASC;

--按deptno分组的avg(sal)语句select中只能出现这两项
SELECT deptno,avg(sal)
FROM emp
WHERE sal>1200
GROUP BY deptno 
HAVING avg(sal)>1500
ORDER BY deptno DESC;

--GROUP BY分组必须返回唯一值,有些东西必须用子查询
SELECT * 
FROM emp ,(SELECT max(sal) max_sal FROM emp GROUP BY deptno)max
WHERE sal = max_sal;



四:关键字执行顺序

SELECT FROM->WHERE->GROUP BY->HAVING->ORDER BY









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值