-
select e.empno,e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno;
查看全部 -
select?t1.cid,?concat(t1.sname) from(select?k.ci_id?cid,s.stu_name?sname ????from?pm_ci?k,pm_stu?s ????where?instr(k.stu_id,s.stu_id)<>0)?t1 group?by?t1.cid;
查看全部 -
提示
需要進行兩個表的連接查詢,為兩個表都取別名
使用instr(a,b)函數,該函數的含義為:如果字符串b在字符串a里面,則返回的是b在a中的位置,即返回值大于0
需要用到分組查詢
使用wm_concat(cols)函數對學生姓名用逗號拼接。
查看全部 -
SQL> select count(*) Total,
? 2? ? ? ? ?sum(decode(to_char(hiredate,'YYYY'),'1980',1,0)) "1980",
? 3? ? ? ? ?sum(decode(to_char(hiredate,'YYYY'),'1981',1,0)) "1981",
? 4? ? ? ? ?sum(decode(to_char(hiredate,'YYYY'),'1982',1,0)) "1982",
? 5? ? ? ? ?sum(decode(to_char(hiredate,'YYYY'),'1987',1,0)) "1987"
? 6? from emp;
? ? ?TOTAL? ? ? ?1980? ? ? ?1981? ? ? ?1982? ? ? ?1987
---------- ---------- ---------- ---------- ----------
? ? ? ? 14? ? ? ? ? 1? ? ? ? ?10? ? ? ? ? 1? ? ? ? ? 2
查看全部 -
執行計劃對比
樣式:
explain plan for
select ...
from...
where...
select * from table(dbms_xplan.display);【查看】
查看全部 -
SQL> select r,empno,ename,sal
? 2? from (select rownum r,empno,ename,sal
? 3? ? ? ?from (select rownum,empno,ename,sal from emp order by sal desc) e1
? 4? ? ? ?where rownum<=8) e2
? 5? where r>=5;
? ? ? ? ?R? ? ? EMPNO ENAME? ? ? ? ? ? ?SAL
---------- ---------- ---------- ----------
? ? ? ? ?5? ? ? ?7698 BLAKE? ? ? ? ? ? 2850
? ? ? ? ?6? ? ? ?7782 CLARK? ? ? ? ? ? 2450
? ? ? ? ?7? ? ? ?7499 ALLEN? ? ? ? ? ? 1600
? ? ? ? ?8? ? ? ?7844 TURNER? ? ? ? ? ?1500
SQL> select rownum,r,empno,ename,sal
? 2? from (select rownum r,empno,ename,sal
? 3? ? ? ?from (select rownum,empno,ename,sal from emp order by sal desc) e1
? 4? ? ? ?where rownum<=8) e2
? 5? where r>=5;
? ? ROWNUM? ? ? ? ? R? ? ? EMPNO ENAME? ? ? ? ? ? ?SAL
---------- ---------- ---------- ---------- ----------
? ? ? ? ?1? ? ? ? ? 5? ? ? ?7698 BLAKE? ? ? ? ? ? 2850
? ? ? ? ?2? ? ? ? ? 6? ? ? ?7782 CLARK? ? ? ? ? ? 2450
? ? ? ? ?3? ? ? ? ? 7? ? ? ?7499 ALLEN? ? ? ? ? ? 1600
? ? ? ? ?4? ? ? ? ? 8? ? ? ?7844 TURNER? ? ? ? ? ?1500
SQL> select rownum,r,empno,ename,sal
? 2? from (select rownum r,empno,ename,sal
? 3? ? ? ?from (select rownum,empno,ename,sal from emp order by sal desc) e1
? 4? ? ? ?where rownum<=8) e2
? 5? where rownum>=5;
未選定行
查看全部 -
行號只能使用<,<=, 而不能使用>, >=。跟Oracle數據庫的行號生成機制有關系,取了第一行才能取第二行,取了第二行才能取第三行
查看全部 -
ttitle?col 15 '我的報表' col 35 sql.pno
*ttitle col 15表示空15列展示報表名稱
*“我的報表”是報表名稱
* sql.pno表示報表頁碼
col deptno heading 部門號
col job heading 職位
col sum(sal) heading 工資總額
break on deptno skip 1
*把以上設置放在.sql的文件下
在終端用get語句讀取
@+路徑執行腳本
執行select ?deptno, job, sum(sal) from emp group by rollup(deptno,job);
查看全部 -
select deptno, job, sum(sal) from emp group by?deptno, job(紅色)
select?deptno, sum(sal) from emp group by?deptno(藍色)
select ?sum(sal) from emp (紫色)
===(等價于)
select ?deptno, job, sum(sal) from emp group by rollup(deptno,job);
上面語句適用于做報表,下面是頁面調整相關語句:
break on deptno?skip 2(相同的部門號只顯示一次,不同的部門號跳過2行)
set pagesize 30(設置頁面大小,每頁展示30條)
查看全部 -
a not in (10, 20, null ) => a!=10 and a!=20 and a!=null--這是不可能的,null不能用等不等于來衡量
查看全部 -
select max(avg(sal)) from emp group by deptno;
*先在部門表里分組查出個部門的平均工資,然后嵌套max函數,得到各部門平均工資的最大值
查看全部 -
1.select deptno,avg(sal)平均工資 from emp group by deptno?
order?by ? 平均工資
*平均工資是avg(sal)的別名,order by語句可以直接使用別名,默認按升序排序
2.select?deptno,avg(sal)平均工資 from emp group by?deptno?
order?by ? 2
*select語句第二列是平均工資,所以order by語句后面直接寫2也是跟第一條語句執行結果一樣,是按照平均工資排序的。
3.使用a 命令給上一語句后面加一個降序排序,那需要在a命令后面寫2個空格才能成功(2個以上)
a ?desc
查看全部 -
行號永遠按默認順序生成
行號只能使用<, <=, 不能使用>,>=
查看全部 -
select *
from emp
where deptno=(select deptno
? ? ? ? ? ? ? from dept
? ? ? ? ? ? ? where dname='SALES');
等價于:
select e.*
from emp e,dept d
where e.deptno=d.deptno and d.dname='SALES';
查看全部 -
重點:from后面的子查詢
示例1:查詢員工信息:員工號,姓名,月薪
示例2:查詢員工信息:員工號,姓名,月薪,年薪
即在已知條件基礎上增加更多可選擇條件
查看全部
舉報