一、簡單查詢語句 ================ 1,、查詢所有列 select * from dept;--做練習可以,真正做開發(fā)不要這樣,。 2、查詢指定列 desc emp; select empno, ename, sal, job from emp; 3,、查詢日期列 select ename, to_char(hiredate, 'yyyy-mm-dd') from emp; 4,、取消重復行 select distinct deptno, job from emp; 5、使用算術表達式 select ename, sal, sal * 12 from emp 6,、使用列別名 select ename as NAME, sal * 12 as "ANNUALSALARY" from emp; 7,、處理NULL select ename, sal, comm, sal + comm from emp; select ename, sal, comm, sal + nvl(comm, 0) from emp; 8、連接字符串 select ename || '的崗位是' || job from emp; 9,、去掉結果中的重復行 select distinct job from emp; 二,、限制數(shù)據(jù) ============ 1、在where子句中使用數(shù)字值 select ename, sal from emp where sal > 2000; 2,、在where子句中使用字符值 select ename, sal from emp where job = 'MANAGER'; 3,、在where子句中使用日期值 select ename, sal, hiredate from emp where hiredate > '01-1月-82'; 4、在where子句中使用between...and操作符 select ename, sal, deptno from emp where sal between 2000 and 3000; 5,、在where子句中使用like操作符 %:表示0個或多個字符 _:表示單個字符 select ename, sal, deptno from emp where ename like 'S%'; select ename, sal, deptno from emp where ename like '__O'; select ename, sal, deptno from emp where ename like '%a_'; 6,、在where子句中使用in操作符 select ename, sal, deptno from emp where job in ('CLERK', 'MANAGER'); 7、在where子句中使用is null操作符 select ename, sal, deptno from emp where mgr is null; 8,、在where子句中使用and操作符 select ename, sal, deptno from emp where deptno = 20 and job = 'CLERK'; 9,、在where子句中使用not操作符 select ename, sal, deptno from emp where comm is not null; 10、顯示表中前幾行內容 select * from emp where rownum <= 3; 偽列 rownum rowid 三,、排序數(shù)據(jù) ============ 1,、升序排序 select ename, sal, deptno from emp order by sal; 2、降序排序 select ename, sal, deptno from emp order by sal desc; 3,、使用多列排序 select ename, sal, deptno from emp order by deptno asc, sal desc; 4,、使用非選擇列表進行排序 select ename, deptno from emp order by sal desc; 5、使用列別名排序 select ename, sal * 12 年收入, deptno from emp order by 年收入 desc; 6,、使用列位置排序 select deptno, ename, sal from emp order by 1; 四,、復雜查詢 ============ 1、數(shù)據(jù)分組 1)分組函數(shù) max和min select max(sal) 最高工資, min(sal) 最低工資 from emp; avg和sum select avg(sal) 平均工資, sum(sal) 總計工資 from emp; count select count(*) 雇員總數(shù) from emp; count(表達式) 顯示非null的總計行數(shù) 2)group by和having子句 使用group by進行單列分組 select deptno, avg(sal) from emp group by deptno; 使用group by進行多列分組 select deptno, job, avg(sal), max(sal) from emp group by deptno, job; 使用having子句限制分組顯示結果 select deptno, avg(sal) from emp group by deptno having avg(sal) < 2500; 使用order by子句改變分組排序結果 select deptno, avg(sal) from emp group by deptno order by avg(sal); 使用數(shù)據(jù)分組的注意事項 分組函數(shù)只能出現(xiàn)在選擇列表,、having子句和order by子句中,。 如果同時包含有group by、having以及order by子句,,則必須將子句放在最后 如果選擇列表包含有列,、表達式和分組函數(shù),則這些列和表達式必須出現(xiàn)在group by子句中,,否則會顯示錯誤信息,。 當限制分組顯示結果時,必須使用having子句,,而不能在where子句中使用分組函數(shù),,否則會顯示錯誤信息。 2,、連接查詢 連接查詢是指基于兩個或兩個以上表或視圖的查詢,。 當使用連接查詢時,必須在from子句后指定兩個或兩個以上的表當使用連接查詢時,,如果不同表之間的列名相同,,則必須在列名前加上表名作前綴,,否則會造成二義性。 當使用連接查詢時,,必須在where子句中指定有效的連接條件,,否則會導致生成笛卡爾集。 當進行連接查詢時,,使用表別名可以簡化連接查詢語句,。 相等連接 是指使用相等比較符指定連接條件的連接查詢,主要用于檢索主從表之間的相關數(shù)據(jù),。 select e.ename, e.sal, d.dname from emp e, dept d where e.deptno = d.deptno; select d.dname, e.ename, e.sal from emp e, dept d where d.deptno = e.deptno and d.deptno = 10; 不等連接 select a.ename, a.sal, b.grade from emp a, salgrade b where a.sal between b.losal and hisal; 自連接 是指在同一張表之間的連接查詢,,主要用于在自參照表上顯示上下級關系或層次關系 select worker.ename, manager.ename from emp manager, emp worker where manager.empno = worker.mgr; 內連接與外連接 內連接用于返回滿足連接條件的所有記錄。 select d.dname, e.ename from dept d, emp e where d.deptno = e.deptno and d.deptno = 10; 左外連接 使用左外連接時,,不僅會返回滿足條件的所有記錄,,而且還會返回不滿足連接條件的連接操作符左邊表 的其他行。 select d.dname, e.ename from dept d left join emp e on d.deptno = e.deptno and d.deptno = 10; 右外連接 使用右外連接時,,不僅會返回滿足條件的所有記錄,,而且還會返回不滿足連接條件的連接操作符右邊表的其他行。 select d.dname, e.ename from dept d right join emp e on d.deptno = e.deptno and d.deptno = 10; 完全外連接 使用右外連接時,,不僅會返回滿足條件的所有記錄,,而且還會返回不滿足連接條件的所有其他行。 select d.dname, e.ename from dept d right join emp e on d.deptno = e.deptno and d.deptno = 10; 外連接也可使用(+)操作符,。 使用(+)操作符進行外連接時,,應該將該操作符放在顯示較少行的一端。 (+)操作符只能出現(xiàn)在where子句中,,且不能與outer join語法同時使用 使用(+)操作符進行外連接時,,如果在where子句中包含多個條件,則必須在所有條件中都包含(+)操作符,。 (+)操作符只適用于列,,而不能用在表達式上。 (+)操作符不能與on和in一起使用,。 (+)操作符只能用于左或右外連接,,不能用于完全外連接。 |
|
來自: Sophia_Study > 《知識點總結》