Oracle 資料庫/SQL
外觀
選擇、投影、連線
- 選擇所有列
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.
- 編寫包含 WHERE 子句的查詢以限制檢索的輸出
- 列出 WHERE 子句中使用的比較運算子和邏輯運算子
- 描述比較運算子和邏輯運算子的優先順序規則
- 在 WHERE 子句中使用字元字串文字
- 編寫包含 ORDER BY 子句的查詢以對 SELECT 語句的輸出進行排序
- 以降序和升序排序輸出
按位與運算子用於在執行時獲取輸入(例如:-&employeename),如果按位與使用兩次,即 &&,則它將獲取單個按位與運算子的輸入,並用於在執行時向查詢提供資料。
- 描述單行函式和多行函式之間的區別
- 使用 SELECT 和 WHERE 子句中的字元函式操縱字串
- 使用 ROUND、TRUNC 和 MOD 函式操縱數字
- 對日期資料執行算術運算
- 使用日期函式操縱日期
隱式資料型別轉換
當 Oracle 嘗試將不匹配函式定義的引數的值轉換為所需資料型別時,就會發生隱式轉換。
顯式資料型別轉換 顯式轉換髮生在呼叫 TO_CHAR 等函式以更改值的型別時。
- 巢狀多個函式
- 對資料應用 NVL、NULLIF 和 COALESCE 函式
- 在 SELECT 語句中使用條件 IF THEN ELSE 邏輯
- 使用自連線將表連線到自身
| 一位華夏公益教科書使用者建議將本書或章節與Oracle 資料庫/表合併。 請在討論頁面上討論是否應該進行合併。 |
在資料庫中插入資料是在 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;
| 本節是一個存根。 您可以透過擴充套件它來幫助華夏公益教科書。 |
| 本節是一個存根。 您可以透過擴充套件它來幫助華夏公益教科書。 |
- 使用 COMMIT 和 ROLLBACK 語句儲存和放棄更改
- 解釋讀一致性
"Create table" 命令用於在資料庫中建立表。
語法
create table employee(empid number,empname varchar2(20),empdesignation(varchar2(20)));
以上查詢將建立一個名為 employee 的表,該表包含列 empid、empname、empdesignation,以及它們各自的資料型別。
| 本節是一個存根。 您可以透過擴充套件它來幫助華夏公益教科書。 |
SELECT * FROM TAB
層次查詢允許您遍歷自引用表並顯示層次結構。例如,員工表包含員工的經理 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 | 允許句點 (.) 匹配任何換行符 |