文章目錄
- 4.1 查詢指定欄位
- 4.2 查詢全部欄位
- 4.3 使用運算式
- 4.4 設定一個新標題
- 4.5 查詢中的注釋
本篇介紹如何使用SELECT陳述句查詢單個表中的資料,
4.1 查詢指定欄位
在 Oracle 中,使用SELECT陳述句查詢表中的資料,基本語法如下:
SELECT column1, column2, ...
FROM table_name;
其中,SELECT表示查詢,后面是需要回傳的欄位,多個欄位使用逗號分隔;FROM表示要從哪個表中進行查詢;分號表示 SQL 陳述句的結束,
📝
SELECT和FROM稱為 SQL 關鍵字,關鍵字不區分大小寫,建議大寫,便于閱讀;表名和欄位名等識別符號一般小寫,關于 SQL 編程風格,可以參考這篇文章,
例如,以下查詢回傳了員工表中的姓名和性別欄位:
SELECT emp_name, sex
FROM employee;
EMP_NAME|SEX |
--------|----|
劉備 |男 |
關羽 |男 |
張飛 |男 |
...
Oracle 中存盤的表名和欄位名都使用大寫字母表示,回傳的結果也使用大寫形式,
4.2 查詢全部欄位
如果想要查看員工的所有欄位資訊,可以使用以下查詢陳述句:
SELECT emp_id, emp_name, sex, dept_id, manager,
hire_date, job_id, salary, bonus, email
FROM employee;
EMP_ID|EMP_NAME|SEX |DEPT_ID|MANAGER|HIRE_DATE |JOB_ID|SALARY|BONUS|EMAIL |
------|--------|----|-------|-------|-------------------|------|------|-----|-------------------|
1|劉備 |男 | 1| |2000-01-01 00:00:00| 1| 30000|10000|liubei@shuguo.com |
2|關羽 |男 | 1| 1|2000-01-01 00:00:00| 2| 26000|10000|guanyu@shuguo.com |
3|張飛 |男 | 1| 1|2000-01-01 00:00:00| 2| 24000|10000|zhangfei@shuguo.com|
...
以上查詢在 SELECT 關鍵字之后列出了員工表中的全部欄位,
另一種快速回傳全部欄位的方法就是使用星號(*)表示:
SELECT *
FROM employee;
EMP_ID|EMP_NAME|SEX |DEPT_ID|MANAGER|HIRE_DATE |JOB_ID|SALARY|BONUS|EMAIL |
------|--------|----|-------|-------|-------------------|------|------|-----|-------------------|
1|劉備 |男 | 1| |2000-01-01 00:00:00| 1| 30000|10000|liubei@shuguo.com |
2|關羽 |男 | 1| 1|2000-01-01 00:00:00| 2| 26000|10000|guanyu@shuguo.com |
3|張飛 |男 | 1| 1|2000-01-01 00:00:00| 2| 24000|10000|zhangfei@shuguo.com|
...
Oracle 服務器在接收到星號時會自動替換為上面的全部欄位,
??星號可以便于快速撰寫一些臨時查詢,但是在實際專案中不要使用這種寫法,因為應用程式可能并不需要所有的欄位,避免回傳過多的無用資料;另外,當表結構發生變化時,星號回傳的資訊也會發生改變,
4.3 使用運算式
除了查詢表中的欄位之外,SELECT 查詢串列還支持基于欄位的算術運算、函式和運算式等,例如:
SELECT emp_name, salary * 12 + bonus
FROM employee;
EMP_NAME|SALARY*12+BONUS|
--------|---------------|
劉備 | 370000|
關羽 | 322000|
張飛 | 298000|
...
其中,salary * 12 + bonus 是一個運算式,計算了員工一年的總收入,
以下示例是 Oracle 中常見的一種查詢方式:
SELECT current_date, 1 + 1
FROM dual;
CURRENT_DATE |1+1|
-------------------|---|
2020-11-02 20:47:08| 2|
其中,dual 是 Oracle 為了快速查找資訊和進行計算提供的一個虛擬表,它只有一個欄位且只包含一行資料;current_date 是一個系統函式,回傳了當前的日期和時間,
4.4 設定一個新標題
Oracle 默認回傳的欄位標題有時候不方便理解,尤其是使用了運算式或者函式之后,為了提高查詢結果的可讀性,可以使用別名(alias)為欄位指定一個臨時的名稱,我們為上一節中的示例指定一些更好理解的標題:
SELECT emp_name AS "員工姓名", salary * 12 + bonus "全年收入"
FROM employee;
員工姓名|全年收入|
------|-------|
劉備 |370000 |
關羽 |322000 |
張飛 |298000 |
...
Oracle 中使用關鍵字AS指定欄位的別名,可以省略;別名一般通過雙引號進行參考,在 SQL 陳述句中使用別名不會修改資料庫中存盤的表名或者列名,別名只在當前陳述句中有效,
??除了欄位別名之外,Oracle 還支持為查詢陳述句中的表指定一個別名,我們將會在多表連接查詢中進行介紹,
4.5 查詢中的注釋
在 SQL 陳述句中可以像其他編程語言一樣使用注釋;注釋可以方便我們理解代碼的作用,但是不會被 Oracle 服務器執行,
Oracle 中的注釋分為單行注釋和多行注釋,單行注釋以兩個連字符(--)開始,直到這一行結束,例如:
-- Oracle 列別名的使用案例
SELECT emp_name AS "員工姓名", salary * 12 + bonus "全年收入"
FROM employee;
多行注釋使用 C 語言風格的注釋方法(/* … */),例如:
/* 備注:Oracle 列別名的使用案例
作者:TonyDong
日期:2020-11-02
*/
SELECT emp_name AS "員工姓名", salary * 12 + bonus AS "全年收入"
FROM employee;
多行注釋之間可以嵌套其他的單行注釋,但是不能嵌套其他的多行注釋,
CSDN認證博客專家
資料庫架構師
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/202489.html
標籤:AI
上一篇:MySQL 更新執行的程序
