编程学习记录13:Oracle数据库,表的查询
表達查詢是數據庫中最常用的操作,最基本的語句為 SELECT <列名、值、函數> FROM <表名>
當在 SELECT 后使用 * 即表示所查詢表中的所有列,如SELECT * FROM emp 就會查出emp表中的所有數據
如果不想要輸出所有列,需要在 SELECT 后面加上想要獲得的列名,如 SELECT ename, eno FROM emp 就會查出emp表中所有數據的ename值和eno值
如果不想輸出所行,需要在表名后加上 WHERE <條件>? ,如 SELECT * FROM emp WHERE eno < 50 就會輸出eno小于50的所有數據
?
有時候我們可能需要同時查詢多個表中的數據,這時候就需要用到表的連接
表的連接可以分為以下幾種:
1、笛卡爾積:沒有連接條件,是多個表中數據所有可能組合的集合
SELECT * FROM emp e, dept d
2、內連接:通過標間相同的字段來進行連接,如可以通過部門編號把員工信息與部門信息連接起來
SELECT * FROM emp e, dept d WHERE e.deptno = d.deptno
3、外連接:也是通過相同的字段來連接,但會輸出不滿足連接條件的數據,如查看考試成績信息但有些人沒有參加考試
SELECT * FROM emp e LEFT JOIN(左外鏈接,右外連接為RIGHT JOIN) dept d ON e.deptno = d.deptno
4、自連接:本表與本表進行連接
SELECT * FROM emp e1, emp e2 WHERE e1.deptno = e2.deptno
5、自然連接:不同表中相同列名的數據進行等值連接
?
有些時候我們可能要用到其他表中的一些值作為條件,就需要用到子查詢
SELECT * FROM emp WHERE e.deptno = (SELECT deptno FROM dept WHERE dname='財務部')
就可以查到所有財務部的員工信息類
?
當我們需要統計一些數據時,如總分、平均分、成績,就需要用到 聚合函數 和 GROUP BY
SELECT deptno, avg(sal) FROM emp GROUP BY deptno
可以查詢到每個部門的平均工資
當需要在條件中使用聚合函數時,需要用到 HAVING 而不是 WHERE
SELECT deptno FROM emp GROUP BY deptno HAVING avg(sal) > 3000
可以查詢到評價工資大于3000的部門編號
?
當我們需要進行分頁查詢時,就需要對數據進行排列和截取
ORDER BY <列名> [ASC | DESC] 可以根據列進行升序(ASC 默認)和降序(DESC)排序,如果GROUP BY 后有多個列名,那會從左到右依次排序,如 ORDER BY score DESC, id 就會先根據score降序,如果 score 有相同數值再根據 id 在score相同的情況下升序
如果要進行分頁截取,那么就得先獲得列的列數,可以用 ROWNUM 來獲得
SELECT ROWNUM, ename FROM emp
轉載于:https://www.cnblogs.com/HMTT-RIN/p/11250770.html
總結
以上是生活随笔為你收集整理的编程学习记录13:Oracle数据库,表的查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记:首次进行JUnit+Ant构建
- 下一篇: linux cmake编译源码,linu