共計 2908 個字符,預計需要花費 8 分鐘才能閱讀完成。
這篇文章給大家分享的是有關數據庫中如何操作大數據集的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。
一、子查詢插入數據
1、語法
INSERT INTO table [column (, column) ] subquery;
2、說明:
您可以使用 INSERT 語句向一個表中添加行,其中的值來自于查詢結果集。
插入子句的列列表中列及其數據類型的數量必須與子查詢中的值和數據類型相匹配。
3、例句:
INSERT INTO EMPL3
SELECT *
FROM employees;
二、WITH CHECK OPTION
1、語法:
insert into (select clause WITH CHECK OPTION) values (…)
2、說明:
insert 進 subquery 里的這張表里
如果不滿足 subquery 里的 where 條件的話,就不允許插入。
如果插入的列有不在 subquery 作為檢查的 where 條件里,那么也會不允許插入。
如果不加 WITH CHECK OPTION 則在插入時不會檢查。
這里注意,subquery 其實是不會實際執行的。
3、例句
INSERT INTO
(SELECT EMPLOYEE_ID, LAST_NAME, EMAIL, HIRE_DATE, JOB_ID, SALARY
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 50 WITH CHECK OPTION)
VALUES
(99998,
Smith ,
JSMITH ,
TO_DATE(1999-06-07 , yyyy-mm-dd),
ST_CLERK ,
5000);
三、INSERT ALL
1、語法:
a) 無條件
INSERT [ALL] [conditional_insert_clause]
[insert_into_clause values_clause] (subquery)
b) 有條件
INSERT [ALL]
[WHEN condition THEN] [insert_into_clause values_clause]
[ELSE] [insert_into_clause values_clause]
2、說明
a) 如果沒有 when 條件,則會對所有表進行插入操作
b) 如果有 when 條件,則對每一個 when 條件都進行檢查,如果滿足條件就執行插入操作。
3、例句:
– 無條件
INSERT ALL
INTO SAL_HISTORY
VALUES (EMPID, HIREDATE, SAL)
INTO MGR_HISTORY
VALUES (EMPID, MGR, SAL)
SELECT EMPLOYEE_ID EMPID, HIRE_DATE HIREDATE, SALARY SAL, MANAGER_ID MGR
FROM EMPLOYEES
WHERE EMPLOYEE_ID 200;
– 有條件
INSERT ALL
WHEN SAL 10000
THEN INTO SAL_HISTORY
VALUES (EMPID, HIREDATE, SAL)
WHEN MGR 200
THEN INTO MGR_HISTORY
VALUES (EMPID, MGR, SAL)
SELECT EMPLOYEE_ID EMPID, HIRE_DATE HIREDATE, SALARY SAL, MANAGER_ID MGR
FROM EMPLOYEES
WHERE EMPLOYEE_ID 200;
四、INSERT FIRST
1、語法:
INSERT [FIRST]
[WHEN condition THEN] [insert_into_clause values_clause]
[ELSE] [insert_into_clause values_clause]
2、說明:
對于每一行數據,只插入到第一個 when 條件成立的表,不繼續檢查其他條件。
3、例句:
INSERT FIRST
WHEN SAL 25000
THEN INTO SPECIAL_SAL
VALUES (DEPTID, SAL)
WHEN HIREDATE LIKE (%00%)
THEN INTO HIREDATE_HISTORY_00
VALUES (DEPTID, HIREDATE)
WHEN HIREDATE LIKE (%99%)
THEN INTO HIREDATE_HISTORY_99
VALUES (DEPTID, HIREDATE)
ELSE INTO HIREDATE_HISTORY
VALUES (DEPTID, HIREDATE)
SELECT DEPARTMENT_ID DEPTID, SUM(SALARY) SAL, MAX(HIRE_DATE) HIREDATE
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID;
五、MERGE
1、語法:
MERGE INTO table_name table_alias
USING (table|view|sub_query) alias
ON (join condition)
WHEN MATCHED THEN
UPDATE SET
col1 = col_val1,
col2 = col2_val
WHEN NOT MATCHED THEN
INSERT (column_list)
VALUES (column_values);
2、說明:
Merge 用來從一個表中選擇一些數據更新或者插入到另一個表中。而最終是用更新還是用插入的方式取決于該語句中的條件。
3、例句:
MERGE INTO empl3 c
USING employees e
ON (c.employee_id = e.employee_id)
WHEN MATCHED
THEN UPDATE SET
c.first_name = e.first_name,
c.last_name = e.last_name,
…
c.department_id = e.department_id
WHEN NOT MATCHED
THEN INSERT VALUES
(e.employee_id, e.first_name, e.last_name,
e.email, e.phone_number, e.hire_date, e.job_id,
e.salary, e.commission_pct, e.manager_id,
e.department_id);
六、Flashback Version Query
1、語法:
VERSIONS BETWEEN TIMESTAMP [lower bound] AND [upper bound]
VERSIONS BETWEEN SCN [lower bound] AND [upper bound]
2、說明:
通過 versions between 能夠查看指定時間段內 undo 表空間中記錄的不同版本
3、例句:
SELECT SALARY
FROM EMPLOYEES3 VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE
WHERE EMPLOYEE_ID = 107;
感謝各位的閱讀!關于“數據庫中如何操作大數據集”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!