《Les20_chinese(Oracle公司内部数据库培训资料)6783.pptx》由会员分享,可在线阅读,更多相关《Les20_chinese(Oracle公司内部数据库培训资料)6783.pptx(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、20Copyright Oracle Corporation,2001.All rights reserved.Oracle9i 对对 DML 和和 DDL 语句的扩展语句的扩展 20-2Copyright Oracle Corporation,2001.All rights reserved.目标目标通过本章学习,您将可以通过本章学习,您将可以:描述多表插入的特点描述多表插入的特点使用不同类型的多表插入使用不同类型的多表插入无条件的无条件的INSERT旋转旋转 INSERT有条件的有条件的 ALL INSERT有条件的有条件的 FIRST INSERT创建和使用外部表创建和使用外部表创建主键
2、约束的同时创建索引创建主键约束的同时创建索引20-3Copyright Oracle Corporation,2001.All rights reserved.INSERT 语句语句使用使用 INSERT 语句向表中插入新的数据语句向表中插入新的数据使用上面的语句每次只能向表中插入一行数据使用上面的语句每次只能向表中插入一行数据INSERT INTOtable(column,column.)VALUES(value,value.);INSERT INTO departments(department_id,department_name,manager_id,location_id)VALUE
3、S (70,Public Relations,100,1700);1 row created.20-4Copyright Oracle Corporation,2001.All rights reserved.UPDATE 语句语句使用使用UPDATE 语句更新表中的数据语句更新表中的数据使用上面的语句每次可更新表中的一行或多行数据使用上面的语句每次可更新表中的一行或多行数据 使用使用 WHERE 子句指定更新的条件子句指定更新的条件UPDATEtableSETcolumn=value,column=value,.WHERE condition;UPDATE employeesSET depa
4、rtment_id=70WHERE employee_id=142;1 row updated.1 row updated.20-5Copyright Oracle Corporation,2001.All rights reserved.多表多表 INSERT 语句语句INSERT.SELECT 是使用一个是使用一个DML 语句向多个表中语句向多个表中插入数据的一部分插入数据的一部分多表多表INSERT 语句可作为数据仓库应用中向目标数据库语句可作为数据仓库应用中向目标数据库传送数据的一种方法传送数据的一种方法它具有更高的效率它具有更高的效率:避免使用多各避免使用多各DML 语句语句 使用一
5、个使用一个DML 完成完成 IF.THEN 的逻辑处理的逻辑处理20-6Copyright Oracle Corporation,2001.All rights reserved.多表多表 INSERT 语句的类型语句的类型Oracle9i 提供以下四种多表提供以下四种多表INSERT 语句类型语句类型:无条件的无条件的 INSERT有条件的有条件的 ALL INSERT有条件的有条件的 FIRST INSERT旋转旋转 INSERT20-7Copyright Oracle Corporation,2001.All rights reserved.多表多表 INSERT 语句语句INSERT
6、ALL conditional_insert_clauseinsert_into_clause values_clause(subquery)ALL FIRSTWHEN condition THEN insert_into_clause values_clauseELSE insert_into_clause values_clause conditional_insert_clause语法语法20-8Copyright Oracle Corporation,2001.All rights reserved.无条件的无条件的 INSERT ALL 应用举例应用举例INSERT ALL INTO
7、 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;8 rows created.8 rows created.20-9Copyright Oracle Corporation,2001.All rights reserved.有条件的有条件的 INSERT ALL 应用举例应用举例
8、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;4 rows created.4 rows created.20-10Copyright Oracle Corporation
9、,2001.All rights reserved.有条件的有条件的 FIRST INSERT 应用举例应用举例 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_hi
10、story VALUES(DEPTID,HIREDATE)SELECT department_id DEPTID,SUM(salary)SAL,MAX(hire_date)HIREDATE FROM employees GROUP BY department_id;8 rows created.8 rows created.20-11Copyright Oracle Corporation,2001.All rights reserved.旋转旋转 INSERT 应用举例应用举例 INSERT ALL INTO sales_info VALUES(employee_id,week_id,sal
11、es_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 EMPLOYEE_ID,week_id,sales_MON,sales_TUE,sales_WED,sales_THUR,sales_FRI FR
12、OM sales_source_data;5 rows created.5 rows created.20-12Copyright Oracle Corporation,2001.All rights reserved.外部表外部表外部表是只读的表,其数据存储在数据库外的平面文件中外部表是只读的表,其数据存储在数据库外的平面文件中外部表的各种参数在外部表的各种参数在 CREATE TABLE 语句中指定语句中指定使用外部表使用外部表,数据可以存储到外部文件或从外部文件中上载数据可以存储到外部文件或从外部文件中上载数据到数据库数据到数据库数据可以使用数据可以使用 SQL访问访问,但不能使用但不能
13、使用 DML 后在外部表上创后在外部表上创建索引建索引20-13Copyright Oracle Corporation,2001.All rights reserved.创建路径创建路径 创建外部表之前应先使用创建外部表之前应先使用CREATE DIRECTORYCREATE DIRECTORY语句创建路径语句创建路径CREATE DIRECTORY emp_dir AS/flat_files;20-14Copyright Oracle Corporation,2001.All rights reserved.创建外部表举例创建外部表举例 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(emp1.txt)
15、PARALLEL 5 REJECT LIMIT 200;Table created.Table created.20-15Copyright Oracle Corporation,2001.All rights reserved.查询外部表查询外部表 SELECT *FROM oldempemp1.txt20-16Copyright Oracle Corporation,2001.All rights reserved.创建主键约束同时创建索引举例创建主键约束同时创建索引举例 CREATE TABLE NEW_EMP(employee_id NUMBER(6)PRIMARY KEY USING
16、 INDEX (CREATE INDEX emp_id_idx ON NEW_EMP(employee_id),first_name VARCHAR2(20),last_name VARCHAR2(25);Table created.Table created.SELECT INDEX_NAME,TABLE_NAME FROM USER_INDEXESWHERE TABLE_NAME=NEW_EMP;20-17Copyright Oracle Corporation,2001.All rights reserved.总结总结通过本章学习通过本章学习,您已经可以您已经可以:使用多表插入代替多个单独的使用多表插入代替多个单独的 DML 语句语句创建外部表创建外部表 创建主键约束同时创建索引创建主键约束同时创建索引