跳轉到內容

Oracle 資料庫/SQL

來自華夏公益教科書

使用 SQL SELECT 語句檢索資料

[編輯 | 編輯原始碼]

列出 SQL SELECT 語句的功能

[編輯 | 編輯原始碼]

選擇、投影、連線

執行一個基本的 SELECT 語句

[編輯 | 編輯原始碼]
  • 選擇所有列
 
Select * from table_name;
  • 選擇特定列
 Select column1, column2 from tables_name;
  • 使用列標題預設值
  • 使用算術運算子
 Select 12 salary+100 from emp --sell value is 2.
 Result: 12 * cell's value + 100   --i.e. 12 * 2 + 100= 124
  • 瞭解運算子優先順序
  • 學習 DESCRIBE 命令來顯示錶結構
 Type- DESCRIBE table_name;  
 *NOTE: Your Oracle user and/or schema must have permissions/privaliages or be within the schema to describe the table.
  You can use the data_dictionary views to get the table info.

限制和排序資料

[編輯 | 編輯原始碼]

限制查詢檢索的行數

[編輯 | 編輯原始碼]
  1. 編寫包含 WHERE 子句的查詢以限制檢索的輸出
  2. 列出 WHERE 子句中使用的比較運算子和邏輯運算子
  3. 描述比較運算子和邏輯運算子的優先順序規則
  4. 在 WHERE 子句中使用字元字串文字

對查詢檢索的行進行排序

[編輯 | 編輯原始碼]
  1. 編寫包含 ORDER BY 子句的查詢以對 SELECT 語句的輸出進行排序
  2. 以降序和升序排序輸出

使用按位與替換在執行時限制和排序輸出

[編輯 | 編輯原始碼]

按位與運算子用於在執行時獲取輸入(例如:-&employeename),如果按位與使用兩次,即 &&,則它將獲取單個按位與運算子的輸入,並用於在執行時向查詢提供資料。

使用單行函式自定義輸出

[編輯 | 編輯原始碼]

描述 SQL 中可用的各種函式型別

[編輯 | 編輯原始碼]
  • 描述單行函式和多行函式之間的區別

在 SELECT 語句中使用字元、數字和日期函式

[編輯 | 編輯原始碼]
  • 使用 SELECT 和 WHERE 子句中的字元函式操縱字串
  • 使用 ROUND、TRUNC 和 MOD 函式操縱數字
  • 對日期資料執行算術運算
  • 使用日期函式操縱日期

使用轉換函式和條件表示式

[編輯 | 編輯原始碼]

描述 SQL 中可用的各種轉換函式型別

[編輯 | 編輯原始碼]

隱式資料型別轉換

當 Oracle 嘗試將不匹配函式定義的引數的值轉換為所需資料型別時,就會發生隱式轉換。

顯式資料型別轉換 顯式轉換髮生在呼叫 TO_CHAR 等函式以更改值的型別時。

使用 TO_CHAR、TO_NUMBER 和 TO_DATE 轉換函式

[編輯 | 編輯原始碼]
  • 巢狀多個函式
  • 對資料應用 NVL、NULLIF 和 COALESCE 函式

在 SELECT 語句中應用條件表示式

[編輯 | 編輯原始碼]
  • 在 SELECT 語句中使用條件 IF THEN ELSE 邏輯

使用組函式報告聚合資料

[編輯 | 編輯原始碼]

識別可用的組函式

[編輯 | 編輯原始碼]

描述組函式的使用

[編輯 | 編輯原始碼]

使用 GROUP BY 子句對資料進行分組

[編輯 | 編輯原始碼]

使用 HAVING 子句包含或排除分組行

[編輯 | 編輯原始碼]

從多個表中顯示資料

[編輯 | 編輯原始碼]

編寫 SELECT 語句以使用等值連線和非等值連線從多個表中訪問資料

[編輯 | 編輯原始碼]

使用自連線將表連線到自身

[編輯 | 編輯原始碼]

使用外部連線檢視通常不滿足連線條件的資料

[編輯 | 編輯原始碼]
  1. 使用自連線將表連線到自身

生成來自兩個或多個表的全部行的笛卡爾積

[編輯 | 編輯原始碼]

使用子查詢解決查詢問題

[編輯 | 編輯原始碼]

定義子查詢

[編輯 | 編輯原始碼]

描述子查詢可以解決的各種問題型別

[編輯 | 編輯原始碼]

列出子查詢的型別

[編輯 | 編輯原始碼]

編寫單行和多行子查詢

[編輯 | 編輯原始碼]

使用集合運算子

[編輯 | 編輯原始碼]

描述集合運算子

[編輯 | 編輯原始碼]

使用集合運算子將多個查詢合併成一個查詢

[編輯 | 編輯原始碼]

控制返回行的順序

[編輯 | 編輯原始碼]

操作資料

[編輯 | 編輯原始碼]

描述每個資料操作語言 (DML) 語句

[編輯 | 編輯原始碼]

將行插入表中

[編輯 | 編輯原始碼]

在資料庫中插入資料是在 Oracle 中透過“insert”命令完成的。

語法

INSERT INTO [table name][column1,column2,.....] values(value1,value2,....);

示例

insert into employee values(1,'Rahul','Manager');

透過上述查詢,員工表將透過 empid:-1、empname:-'Rahul' 和 empdesignation:-'Manager' 進行填充。

從表中刪除行

[編輯 | 編輯原始碼]
DELETE client1 WHERE ID = 2;

更新表中的行

[編輯 | 編輯原始碼]

要更新表中的行,請寫入

update [table name] set [column name] = [your value];

它將使用給定值在選定欄位中更新表中存在的所有行。

我們還可以將查詢新增到此命令以使其真正有用,例如,

update [table name] set [column name] = [value] where [column name]>=[value];

您可以根據需要在 where 子句之後新增您的查詢。

示例

UPDATE client1 SET address = 'the middle of nowhere' WHERE id = 1;

使用集合運算子將多個查詢合併成一個查詢

[編輯 | 編輯原始碼]

控制返回行的順序

[編輯 | 編輯原始碼]

定義子查詢

[編輯 | 編輯原始碼]

描述子查詢可以解決的各種問題型別

[編輯 | 編輯原始碼]

列出子查詢的型別

[編輯 | 編輯原始碼]

編寫單行和多行子查詢

[編輯 | 編輯原始碼]

控制事務

[編輯 | 編輯原始碼]
  1. 使用 COMMIT 和 ROLLBACK 語句儲存和放棄更改
  2. 解釋讀一致性

使用 DDL 語句建立和管理表

[編輯 | 編輯原始碼]

對主要資料庫物件進行分類

[編輯 | 編輯原始碼]

查看錶結構

[編輯 | 編輯原始碼]

列出可用於列的資料型別

[編輯 | 編輯原始碼]

建立一個簡單的表

[編輯 | 編輯原始碼]

"Create table" 命令用於在資料庫中建立表。

語法

create table employee(empid number,empname varchar2(20),empdesignation(varchar2(20)));

以上查詢將建立一個名為 employee 的表,該表包含列 empidempnameempdesignation,以及它們各自的資料型別。

描述架構物件的工作原理

[編輯 | 編輯原始碼]

建立其他架構物件

[編輯 | 編輯原始碼]

建立簡單和複雜的檢視

[編輯 | 編輯原始碼]

從檢視中檢索資料

[編輯 | 編輯原始碼]

建立、維護和使用序列

[編輯 | 編輯原始碼]

建立和維護索引

[編輯 | 編輯原始碼]

建立私有和公共同義詞

[編輯 | 編輯原始碼]

控制使用者訪問

[編輯 | 編輯原始碼]

區分系統許可權和物件許可權

[編輯 | 編輯原始碼]

授予表上的許可權

[編輯 | 編輯原始碼]

檢視資料字典中的許可權

[編輯 | 編輯原始碼]

授予角色

[編輯 | 編輯原始碼]

區分許可權和角色

[編輯 | 編輯原始碼]

使用資料字典檢視管理物件

[編輯 | 編輯原始碼]

解釋資料字典

[編輯 | 編輯原始碼]

查詢表資訊

[編輯 | 編輯原始碼]

報告列資訊

[編輯 | 編輯原始碼]

檢視約束資訊

[編輯 | 編輯原始碼]

查詢檢視資訊

[編輯 | 編輯原始碼]

驗證序列資訊

[編輯 | 編輯原始碼]

瞭解同義詞

[編輯 | 編輯原始碼]

添加註釋

[編輯 | 編輯原始碼]

操作大型資料集

[編輯 | 編輯原始碼]

使用子查詢操作資料

[編輯 | 編輯原始碼]

描述多表插入的功能

[編輯 | 編輯原始碼]

使用不同型別的多表插入

[編輯 | 編輯原始碼]

合併表中的行

[編輯 | 編輯原始碼]

跟蹤一段時間內資料的變化

[編輯 | 編輯原始碼]

管理不同時區的資料

[編輯 | 編輯原始碼]

使用類似於 DATE 的資料型別,它們儲存小數秒並跟蹤時區

[編輯 | 編輯原始碼]

使用儲存兩個日期時間值之間差的資料型別

[編輯 | 編輯原始碼]

練習使用多個日期時間函式來全球化應用程式

[編輯 | 編輯原始碼]

使用子查詢檢索資料

[編輯 | 編輯原始碼]

編寫多列子查詢

[編輯 | 編輯原始碼]

在 SQL 中使用標量子查詢

[編輯 | 編輯原始碼]

SELECT * FROM TAB

解決相關子查詢的問題

[編輯 | 編輯原始碼]

使用相關子查詢更新和刪除行

[編輯 | 編輯原始碼]

使用 EXISTS 和 NOT EXISTS 運算子

[編輯 | 編輯原始碼]

使用 WITH 子句

[編輯 | 編輯原始碼]

編寫多列子查詢

[編輯 | 編輯原始碼]

在 SQL 中使用標量子查詢

[編輯 | 編輯原始碼]

解決相關子查詢的問題

[編輯 | 編輯原始碼]

使用相關子查詢更新和刪除行

[編輯 | 編輯原始碼]

使用 EXISTS 和 NOT EXISTS 運算子

[編輯 | 編輯原始碼]

使用 WITH 子句

[編輯 | 編輯原始碼]

層次查詢

[編輯 | 編輯原始碼]

層次查詢允許您遍歷自引用表並顯示層次結構。例如,員工表包含員工的經理 ID。

列出所有員工的整個層次結構

SELECT LPAD(' ', 4*(level-1))||last_name "Last Name", salary, department_id
FROM hr.employees
CONNECT BY PRIOR employee_id = manager_id
      START WITH manager_id is null
ORDER SIBLINGS BY last_name;

列出所有“Kochhar”經理下屬的員工

SELECT LPAD(' ', 4*(level-1))||last_name "Last Name", 
       salary, 
       department_id,
       CONNECT_BY_ISLEAF
FROM hr.employees
  CONNECT BY PRIOR employee_id = manager_id
        START WITH last_name = 'Kochhar'
 ORDER SIBLINGS BY last_name;

列出所有“Lorentz”彙報的經理

SELECT LPAD(' ', 4*(level-1))||last_name "Last Name", salary, department_id,
       SYS_CONNECT_BY_PATH(last_name, '/') "Path", CONNECT_BY_ISLEAF
FROM hr.employees
        CONNECT BY employee_id = PRIOR manager_id
        START WITH last_name = 'Lorentz'
 ORDER SIBLINGS BY last_name;
  • 偽列 LEVEL -> 根 = 1,下一級 = 2,3,4,5...等等
  • SYS_CONNECT_BY_PATH(col, '/') 顯示完整路徑,第二個引數是分隔符 (9i)
  • CONNECT_BY_ROOT(col) 返回當前層次結構中根節點的值 (10g)
  • 偽列 CONNECT_BY_ISLEAF 如果返回值位於層次結構的最後一個節點(即葉子節點)上,則返回 1 (10g)
  • order SIBLINGS 透過重新排序輸出的順序並保留層次關係 (10g)
  • connect by NOCYCLE 之前子節點 = 父節點
    • NOCYCLE 表示當子節點引用回根節點時,停止遍歷層次結構。 (10g)
    • 偽列 CONNECT_BY_ISCYCLE 如果當前行引用父節點,則評估為“1”。 (10g)


正則表示式支援

[編輯 | 編輯原始碼]

列出使用正則表示式的優勢

[編輯 | 編輯原始碼]

使用正則表示式搜尋、匹配和替換字串

[編輯 | 編輯原始碼]
正則表示式
類別 表示式 描述
錨定字元 ^ 行首
-$ 行尾
量詞字元 * 匹配 0 次或多次
+ 匹配 1 次或多次
? 匹配 0 次或 1 次
{m} 精確匹配 m 次
{m,} 至少匹配 m 次
{m, n} 至少匹配 m 次,但最多不超過 n 次
\n 使前一個表示式重複 n 次
備選和分組 分隔備選項,通常與分組運算子 () 一起使用
( ) 將子表示式分組為一個單元,用於備選項、量詞或反向引用(參見“反向引用”部分)
[char] 表示一個字元列表;字元列表中的大多數元字元被理解為字面量,但字元類、^ 和 - 元字元除外
POSIX 字元 [:alnum:] 字母數字字元
[:alpha:] 字母字元
[:blank:] 空格字元
[:cntrl:] 控制字元(不可列印)
[:digit:] 數字
[:graph:] 任何 [:punct:], [:upper:], [:lower:] 和 [:digit:] 字元
[:lower:] 小寫字母字元
[:print:] 可列印字元
[:punct:] 標點符號字元
[:space:] 空格字元(不可列印),如回車符、換行符、垂直製表符和換頁符
[:upper:] 大寫字母字元
[:xdigit:] 十六進位制字元
等價類 = = 嵌入方括號中的等價類,匹配一個基本字母及其所有重音版本。例如,等價類 '[=a=]' 匹配 ä 和 â。
匹配選項 c 區分大小寫匹配
i 不區分大小寫匹配
m 將源字串視為多行,啟用錨定字元
n 允許句點 (.) 匹配任何換行符
華夏公益教科書