oracle數(shù)據(jù)庫ppt+中科院培訓(xùn)專用Les20_cn.ppt_第1頁
oracle數(shù)據(jù)庫ppt+中科院培訓(xùn)專用Les20_cn.ppt_第2頁
oracle數(shù)據(jù)庫ppt+中科院培訓(xùn)專用Les20_cn.ppt_第3頁
oracle數(shù)據(jù)庫ppt+中科院培訓(xùn)專用Les20_cn.ppt_第4頁
oracle數(shù)據(jù)庫ppt+中科院培訓(xùn)專用Les20_cn.ppt_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、,Oracle9i 對 DML 和 DDL 語句的擴展,目標(biāo),完成本課后, 您應(yīng)當(dāng)能夠執(zhí)行下列操作: 描述多表插入的特性 使用下面的多表插入類型 無條件 INSERT 樞軸式 INSERT 條件 ALL INSERT 條件 FIRST INSERT 創(chuàng)建和使用外部表 在創(chuàng)建主鍵約束時命名索引,INSERT 語句回顧,用 INSERT 語句添加新行到表中 用此語法一次只能插入一行,INSERT INTOtable (column , column.) VALUES(value , value.);,INSERT INTO departments(department_id, department

2、_name, manager_id, location_id) VALUES (70, Public Relations, 100, 1700); 1 row created.,UPDATE 語句回顧,用 UPDATE 語句修改存在的行 如果需要,一次可以修改多行 如果使用了 WHERE 字句,可以指定一行或多行被修改,UPDATEtable SETcolumn = value , column = value, . WHERE condition;,UPDATE employees SET department_id = 70 WHERE employee_id = 142; 1 row u

3、pdated.,多表 INSERT 語句概述,INSERT.SELECT 語句能夠作為單個的 DML 語句的一部分用于插入行到多表中 多表 INSERT 語句能夠被用在數(shù)據(jù)倉庫系統(tǒng)中從一個或多個操作源轉(zhuǎn)移數(shù)據(jù)到一組目的表中 下面的方法提供重要的性能改進(jìn): 單個 DML 與多 INSERT.SELECT 語句相對 單個 DML 與一個用 IF.THEN 語法做多插入的過程相對,Hidden Slide,多表 INSERT 語句的類型,Oracle9i 引入下面的多表插入語句的類型: 無條件 INSERT 條件 ALL INSERT 條件 FIRST INSERT 樞軸式 (Pivoting) I

4、NSERT,多表 INSERT 語句,INSERT ALL conditional_insert_clause insert_into_clause values_clause (subquery),ALL FIRST WHEN condition THEN insert_into_clause values_clause ELSE insert_into_clause values_clause,conditional_insert_clause,語法,Hidden Slide,INSERT ALL INTO sal_history VALUES(EMPID,HIREDATE,SAL) IN

5、TO mgr_history VALUES(EMPID,MGR,SAL) SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGR FROM employees WHERE employee_id 200; 8 rows created.,無條件 INSERT ALL,從 EMPLOYEES 中選擇 EMPLOYEE_ID 大于200的雇員的 EMPLOYEE_ID, HIRE_DATE, SALARY, 和 MANAGER_ID 值 用多表 INSERT 插入這些值到 SAL_HISTORY 和 MGR_

6、HISTORY 表中,條件 INSERT ALL,從 EMPLOYEES 表中選擇 EMPLOYEE_ID 大于200的那些雇員的 EMPLOYEE_ID, HIRE_DATE, SALARY 和 MANAGER_ID 值 如果 SALARY 大于 $10,000,用一個條件多表 INSERT語句插入這些值到 SAL_HISTORY 表中 如果 MANAGER_ID 大于 200,用一個多表 INSERT 語句插入這些值到 MGR_HISTORY 表中,條件 INSERT ALL,INSERT ALL WHEN SAL 10000 THEN INTO sal_history VALUES(EM

7、PID,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; 4 rows created.,條件 FIRST INSERT,從 EMPLOYEES 表中選擇 DEPARTMENT_ID, SUM(SALARY) 和 MAX(HIRE_DATE) 如果 SUM(SALARY) 大于 $25,

8、000 則用一個條件 FIRST 多表 INSERT 插入這些值到 SPECIAL_SAL 表中 如果第一個 WHEN 子句的值為 true,則該行的后面的 WHEN 子句被跳過 對于那些不滿足第一個 WHEN 條件的行,用一個條件多表 INSERT 基于 HIRE_DATE 列的值插入 HIREDATE_HISTORY_00, 或 HIREDATE_HISTORY_99, 或 HIREDATE_HISTORY 表。,條件 FIRST INSERT,INSERT FIRST WHEN SAL 25000 THEN INTO special_sal VALUES(DEPTID, SAL) WHE

9、N 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

10、 BY department_id; 8 rows created.,樞軸式 (Pivoting) INSERT,支持從非關(guān)系數(shù)據(jù)庫表中接受一組銷售記錄, SALES_SOURCE_DATA 的格式如下: EMPLOYEE_ID, WEEK_ID, SALES_MON, SALES_TUE, SALES_WED, SALES_THUR, SALES_FRI 你可能想要以一種典型的相關(guān)格式存儲這些記錄到 SALES_INFO 表中: EMPLOYEE_ID, WEEK, SALES 使用 pivoting INSERT,從非關(guān)系數(shù)據(jù)庫表轉(zhuǎn)換銷售記錄集到關(guān)系格式,樞軸式 (Pivoting) IN

11、SERT,INSERT ALL INTO sales_info VALUES (employee_id,week_id,sales_MON) INTO sales_info VALUES (employee_id,week_id,sales_TUE) INTO sales_info VALUES (employee_id,week_id,sales_WED) INTO sales_info VALUES (employee_id,week_id,sales_THUR) INTO sales_info VALUES (employee_id,week_id, sales_FRI) SELECT

12、EMPLOYEE_ID, week_id, sales_MON, sales_TUE, sales_WED, sales_THUR,sales_FRI FROM sales_source_data; 5 rows created.,Hidden Slide,外部表,外部表是只讀表,在外部表中數(shù)據(jù)被存儲在數(shù)據(jù)庫外面的文件中 用 CREATE TABLE 語句創(chuàng)建外部表的元數(shù)據(jù) 借助外部表的幫助,Oracle 數(shù)據(jù)能夠被作為文件存儲或卸載 數(shù)據(jù)能夠用 SQL 查詢,但你不能用 DML 并且不能創(chuàng)建索引,創(chuàng)建外部表,與 CREATE TABLE 語法一起用 external_table_clause

13、 創(chuàng)建一個外部表 指定 ORGANIZATION 作為 EXTERNAL 來指出表是位于數(shù)據(jù)庫之外的 external_table_clause 由訪問驅(qū)動 TYPE, external_data_properties 和 REJECT LIMIT 組成 external_data_properties 由下面的部分組成: 默認(rèn)目錄 訪問參數(shù) 位置,創(chuàng)建外部表的例子,創(chuàng)建一個 DIRECTORY 對象,它指出外部數(shù)據(jù)源所在的文件系統(tǒng)目錄,CREATE DIRECTORY emp_dir AS /flat_files ;,創(chuàng)建外部表的例子,CREATE TABLE oldemp ( empno

14、NUMBER, empname CHAR(20), birthdate DATE) ORGANIZATION EXTERNAL (TYPE ORACLE_LOADER DEFAULT DIRECTORY emp_dir ACCESS PARAMETERS (RECORDS DELIMITED BY NEWLINE BADFILE bad_emp LOGFILE log_emp FIELDS TERMINATED BY , (empno CHAR, empname CHAR, birthdate CHAR date_format date mask dd-mon-yyyy) LOCATION (

15、emp1.txt) PARALLEL 5 REJECT LIMIT 200; Table created.,Hidden Slide,查詢外部表,SELECT * FROM oldemp,emp1.txt,用 CREATE TABLE 語句創(chuàng)建索引,CREATE TABLE NEW_EMP (employee_id NUMBER(6) PRIMARY KEY USING INDEX (CREATE INDEX emp_id_idx ON NEW_EMP(employee_id), first_name VARCHAR2(20),last_name VARCHAR2(25); Table created.,SELECT INDEX_NAME, TABLE_NAME FROM USER_INDEXESWHERE TABLE_NAME = NEW_EMP;,小結(jié),在本課中, 您

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論