暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle数据库基础语句(二)

超人网页作坊 2020-03-13
327

oracle数据库基础语句(二)

oracle基础语句第二节

1.--分组函数,查询条件中的字段要么出现在分组函数中,要么出现子啊group by中

SELECT empno,ename,

MAX(sal) "最高工资",AVG(sal) "平均工资",MIN(sal) "最低工资"

FROM emp GROUP BY empno,ename;

2.--count(*)是不忽略null数据的总数

--count(具体字段会忽略null数据)

SELECT COUNT(*),COUNT(comm) FROM emp;



3.--日期型数据处理,sysdate为当前时间

UPDATE emp SET hiredate = to_date('1598-02-12','yyyy-mm-dd') WHERE empno=7369;

SELECT ename,hiredate FROM emp WHERE to_char(hiredate,'yyyy') BETWEEN '1998' AND '2020';


4.--给当前时间加一个月

SELECT add_months(SYSDATE,1) FROM dual;


5.--表连接(左外,右外,全外(我不怎么用))

--eg:左外链接,以左表为主,右表匹配不上的就为null,右连接则反之.


SELECT e.*,d.* FROM emp e LEFT JOIN dept d ON e.deptno=d.deptno;

SELECT e.*,d.* FROM emp e RIGHT JOIN dept d ON e.deptno=d.deptno;


6./*内连接(等值连接,非等值连接,自连接)效率低下,若不加等值条件则出现笛卡尔积,

加了等值条件,内部运行也是走了两个表的数据乘积,只是显示正确,效率低*/


--自连接与等值连接合并用

SELECT e.empno,e.ename,e.job "员工工作",e2.empno AS "老板编号" ,e2.ename "上级领导" 

FROM emp e INNER JOIN emp e2 ON e.mgr = e2.empno;

7.--非等值链接

SELECT d.dname "部门名称",e.ename,e.sal FROM dept d INNER JOIN emp e 

ON e.sal BETWEEN 2000 AND 3500 AND e.deptno = d.deptno;


8.--分页查询(rownum做等于条件,只能等于1,查询第一条数据)


SELECT ROWNUM ,ename FROM emp WHERE ROWNUM=1;

/*rownum查询薪资排名第2-5条的数据,rownum只能做<=不能用来>=,

但是通过子查询把rownum当成一个字段起个别名就可以使用正常的字段排序了

*/

SELECT * FROM (SELECT ROWNUM r,sal FROM emp WHERE ROWNUM <=5) WHERE r>=2;


9.--将多表查询结果合并成一张表(字段数量,类型都要相等)

--union去除重复的,all直接合并

SELECT ename,empno FROM emp

UNION ALL

SELECT dname,deptno FROM dept


10.--去重关键字,只能出现在select紧后边,后方所有字段,联合去重

SELECT DISTINCT ename, deptno FROM emp;




oracle数据库已完结
更多精彩推荐,请关注我们




文章转载自超人网页作坊,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论