版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操纵海量数据集目标通过本章学习,您将可以学会以下内容:使用子查询操纵数据描述多表插入的特点使用不同类型的多表插入无条件的INSERT旋转INSERT有条件的ALLINSERT有条件的
FIRSTINSERT将表中数据和并跟踪在一段时间内更改的数据使用子查询操纵数据可以在DML语句中使用以下子查询:从其它表中拷贝数据从内敛视图中检索数据在UPDATE
中使用子查询,使更新基于另一个表中的数据在DELETE中使用子查询,使删除基于另一个表中的数据从其它表中拷贝数据在INSERT语句中加入子查询.
不必书写VALUES子句.子查询中的值列表应于INSERT
子句中的列名对应.INSERTINTOsales_reps(id,name,salary,commission_pct)SELECTemployee_id,last_name,salary,commission_pctFROMemployeesWHEREjob_idLIKE'%REP%';4rowscreated.在INSERT语句中使用子查询INSERTINTO(SELECTemployee_id,last_name,email,hire_date,job_id,salary,department_idFROMempl3WHEREdepartment_id=50)VALUES(99999,'Taylor','DTAYLOR',TO_DATE('07-JUN-99','DD-MON-RR'),'ST_CLERK',5000,50);1rowcreated.在INSERT语句中使用子查询验证结果:SELECTemployee_id,last_name,email,hire_date,job_id,salary,department_idFROMemployeesWHEREdepartment_id=50;…SELECTa.last_name,a.salary,a.department_id,b.salavgFROMemployeesa,(SELECTdepartment_id,AVG(salary)salavgFROMemployeesGROUPBYdepartment_id)bWHEREa.department_id=b.department_idANDa.salary>b.salavg;使用子查询检索数据…UPDATEempl3SETjob_id=(SELECTjob_idFROMemployeesWHEREemployee_id=205),salary=(SELECTsalaryFROMemployeesWHEREemployee_id=205)WHEREemployee_id=114;1rowupdated.在UPDATE语句中使用子查询更新114号员工的工作和工资使其与205号员工相同.UPDATEempl3SETdepartment_id=(SELECTdepartment_idFROMemployeesWHEREemployee_id=100)WHEREjob_id=(SELECTjob_idFROMemployeesWHEREemployee_id=200);1rowupdated.基于另一个表更新数据在UPDATE
中使用子查询,使更新基于另一个表中的数据.DELETEFROMempl3WHEREdepartment_id=(SELECTdepartment_idFROMdepartmentsWHEREdepartment_nameLIKE'%Public%');1rowdeleted.基于另个一表删除数据在DELETE中使用子查询,使删除基于另一个表中的数据。在DML语句中使用WITHCHECKOPTION
关键字使用子查询表示DML语句中使用的表.WITHCHECKOPTION
关键字避免修改子查询范围外的数据.INSERTINTO(SELECTemployee_id,last_name,email,hire_date,job_id,salaryFROMempl3WHEREdepartment_id=50
WITHCHECKOPTION)VALUES(99998,'Smith','JSMITH',TO_DATE('07-JUN-99','DD-MON-RR'),'ST_CLERK',5000);INSERTINTO*ERRORatline1:ORA-01402:viewWITHCHECKOPTIONwhere-clauseviolation显式默认值使用DEFAULT
关键字表示默认值显式默认值符合SQL1999标准.可以使用显示默认值控制默认值的使用显示默认值可以在INSERT
和UPDATE
语句中使用显示使用默认值在插入操作中使用默认值:在更新操作中使用默认值:INSERTINTOdeptm3(department_id,department_name,manager_id)VALUES(300,'Engineering',DEFAULT);UPDATEdeptm3SETmanager_id=DEFAULT
WHEREdepartment_id=10;多表INSERT
语句INSERTALL
INTOtable_aVALUES(…,…,…)
INTOtable_bVALUES(…,…,…)
INTOtable_cVALUES(…,…,…)
SELECT…FROMsourcetabWHERE…;Table_aTable_bTable_c多表INSERT
语句INSERT...SELECT
是使用一个DML语句向多个表中插入数据的一部分.多表INSERT
语句可作为数据仓库应用中向目标数据库传送数据的一种方法.它具有更高的效率:使用一个DML进行多表插入INSERT…SELECT
语句使用一个DML完成IF...THEN
的逻辑处理多表INSERT
语句的类型多表INSERT语句类型:无条件的INSERT有条件的ALLINSERT有条件的FIRSTINSERT旋转INSERT多表INSERT
语句语法conditional_insert_clauseINSERT[ALL][conditional_insert_clause][insert_into_clausevalues_clause](subquery)[ALL][FIRST][WHENconditionTHEN][insert_into_clausevalues_clause][ELSE][insert_into_clausevalues_clause]无条件的INSERTALL从EMPLOYEES表中选择出EMPLOYEE_ID大于200的,EMPLOYEE_ID,HIRE_DATE,SALARY,和MANAGER_ID的值.使用多表插入将选择出来的值插入到SAL_HISTORY
和MGR_HISTORY表中.INSERTALL
INTOsal_historyVALUES(EMPID,HIREDATE,SAL)
INTOmgr_historyVALUES(EMPID,MGR,SAL)SELECTemployee_idEMPID,hire_dateHIREDATE,
salarySAL,manager_idMGRFROMemployees
WHEREemployee_id>200;8rowscreated.
有条件的INSERTALL从EMPLOYEES表中选择出EMPLOYEE_ID大于200的,EMPLOYEE_ID,HIRE_DATE,SALARY,和MANAGER_ID的值.使用有条件的多表插入语句将工资SALARY大于$10,000的员工信息插入到SAL_HISTORY表中.使用有条件的多表插入语句将MANAGER_ID大于200的员工信息插入到MGR_HISTORY
表中.有条件的INSERTALLINSERTALL
WHENSAL>10000THEN
INTOsal_historyVALUES(EMPID,HIREDATE,SAL)
WHENMGR>200THEN
INTOmgr_historyVALUES(EMPID,MGR,SAL)
SELECTemployee_idEMPID,hire_dateHIREDATE,salarySAL,manager_idMGRFROMemployees
WHEREemployee_id>200;4rowscreated.
有条件的FIRSTINSERT从EMPLOYEES表中选择出
DEPARTMENT_ID,SUM(SALARY),andMAX(HIRE_DATE)信息.如果SUM(SALARY)大于$25,000,使用有条件的
FIRST
INSERT条件将值插入到SPECIAL_SAL表中.如果第一个
WHEN
子句是真的,那么后面的
WHEN子句跳过不执行.如果第一个
WHEN
不满足条件,使用多表插入将基于
HIRE_DATE的值插入到HIREDATE_HISTORY_00,HIREDATE_HISTORY_99,或者
HIREDATE_HISTORY
表中.有条件的INSERTFIRST
INSERTFIRST
WHENSAL>25000THEN
INTOspecial_salVALUES(DEPTID,SAL)
WHENHIREDATElike('%00%')THEN
INTOhiredate_history_00VALUES(DEPTID,HIREDATE)
WHENHIREDATElike('%99%')THEN
INTO
hiredate_history_99
VALUES(DEPTID,
HIREDATE)
ELSE
INTOhiredate_historyVALUES(DEPTID,HIREDATE)SELECTdepartment_idDEPTID,SUM(salary)SAL,
MAX(hire_date)HIREDATE
FROMemployeesGROUPBYdepartment_id;8rowscreated.旋转INSERTSupposeyoureceiveasetofsalesrecordsfromanonrelationaldatabasetable,SALES_SOURCE_DATA,inthefollowingformat: EMPLOYEE_ID,WEEK_ID,SALES_MON,SALES_TUE, SALES_WED,SALES_THUR,SALES_FRIYouwanttostoretheserecordsintheSALES_INFOtableinamoretypicalrelationalformat:EMPLOYEE_ID,WEEK,SALESUsingapivotingINSERT,convertthesetofsalesrecordsfromthenonrelationaldatabasetabletorelationalformat.旋转INSERT
INSERTALL
INTOsales_infoVALUES(employee_id,week_id,sales_MON)
INTOsales_infoVALUES(employee_id,week_id,sales_TUE)
INTOsales_infoVALUES(employee_id,week_id,sales_WED)
INTOsales_infoVALUES(employee_id,week_id,sales_THUR)
INTOsales_infoVALUES(employee_id,week_id,sales_FRI)
SELECTEMPLOYEE_ID,week_id,sales_MON,sales_TUE,
sales_WED,sales_THUR,sales_FRI
FROMsales_source_data;5rowscreated.
合并语句按照指定的条件执行插入或更新操作如果满足条件的行存在,执行更新操作;否则执行插入操作:避免多次重复执行插入和删除操作提高效率而且使用方便在数据仓库应用中经常使用合并语句的语法可以使用merge语句,根据指定的条件进行插入或更新操作MERGEINTOtable_name
table_aliasUSING(table|view|sub_query)aliasON(joincondition)WHENMATCHEDTHENUPDATESET
col1=col_val1,col2=col2_valWHENNOTMATCHEDTHENINSERT(column_list)VALUES(column_values);MERGEINTOempl3cUSINGemployeeseON(c.employee_id=e.employee_id)WHENMATCHEDTHENUPDATESETc.first_name=e.first_name,c.last_name=e.last_name,...c.department_id=e.department_idWHENNOTMATCHEDTHENINSERTVALUES(e.employee_id,e.first_name,e.last_name,e.email,e.phone_number,e.hire_date,e.job_id,e.salary,mission_pct,e.manager_id,e.department_id);合并行对表EMPL3使用merge语句,根据指定的条件从表
EMPLOYEES中插入或更新数据.合并语句举例MERGEINTOempl3cUSINGemployeeseON(c.employee_id=e.employee_id)WHENMATCHEDTHENUPDATESET...WHENN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江苏省教育系统公开招聘考试(教育理论/公共知识)历年参考题库含答案详解
- 2026江苏住院医师规范化培训考试(检验科Ⅱ阶段)题库历年参考题库含答案详解
- 2026正高面审答辩-正高004面审答辩肾内科学历年题库含答案详解
- 2026文物保护工程从业资格考试(责任设计师·近现代重要史迹及代表性建筑)历年参考题库含答案详解
- 冰淇淋烹饪课程设计
- DCT图像压缩应用教程课程设计
- AI换脸特效剪辑课程设计
- 包装课程设计作业范文
- 图嵌入欺诈识别课程设计
- 机器学习垃圾邮件分类器系统设计课程设计
- 2025年市场监管综合执法岗《化妆品监管执法》题库附答案
- 粉煤灰供应、运输、售后服务方案
- 第1课 开启物联网之门 课件(内嵌视频)2026-2027学年人教版初中信息科技八年级全一册
- 2026年工商注册代理从业人员考核模拟试题及答案
- 2026国家能源集团科学技术研究总院(北京低碳清洁能源研究院)社会招聘84人考前冲刺试卷【典优】附答案详解
- 2026年跨境电商海外仓建设与运营管理
- 国家开放大学汉语言文学本科《古代诗歌散文专题》历年期末纸质考试真题总题库2027珍藏版
- 2026新教材全国培训:统编版小学语文五年级教材解析
- 2026年秋季开学第一课:强国复兴有我
- 认知中心建设方案
- 世界盐产业地理分布与区域特点
评论
0/150
提交评论