资源描述:
《唐远新全套配套课件Oracle数据库实用教程 第 6章 Oracle支持的SQL.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章Oracle支持的SQL6.1Oracle的数据操纵语言6.2Oracle中的查询6.3Oracle支持的SQL函数6.4用于数据分析的SQL本章目录6.1Oracle的数据操纵语言6.1.1INSERT语句1.INSERT语句的基本语法INSERT语句的基本语法如下:INSERTINTOtable[(column_1[,column_2,...column_n])]VALUES(sql_expression_1[,sql_expression_2,...,sql_expression_n]);例:向dept表插入一个新部门记录,但该部门的所在地尚未确定(值为空
2、)。使用以下的任一条INSERT语句均可。connscott/tiger@oradbINSERTINTOdept(deptno,dname,loc)VALUES(99,’EDUCATION’,null);INSERTINTOdept(deptno,dname)VALUES(99,’EDUCATION’);commit;--结果验证SELECT*FROMdept;2.使用子查询的INSERT语句可以使用子查询从其它表中提取数据插入到指定的表中,此时INSERT语句语法如下:INSERTINTO<表名>(<列名>,<列名>,...)SELECT<列名>,<列名>,...F
3、ROM<表名>;例:从ORADB数据库通过数据库链路向数据库OEMREP的表dept中插入记录。本例中使用到的数据库链路testlink在例5.2中创建。connscott/tiger@oradbDELETEFROMemp@testlink;INSERTINTOemp@testlink(deptno,ename,empno,sal,comm,mgr)SELECTdeptno,ename,empno,sal,comm,mgrFROMemp;commit;--结果验证SELECT*FROMemp@testlink;6.1.2UPDATE语句UPDATE语句的简单语法如下:
4、UPDATEtableSETcolumn=value[,column=value,…][WHEREcondition];在UPDATE语句中使用子查询从其它表获取数据来作为某些行的某些列的新值的语法如下:UPDATE<表名>SET(<列名>,<列名>,...)=(SELECT<列名>,<列名>,...FROM<表名>WHERE<条件>)WHERE<列名或列表达式><比较运算符>(SELECT<列名>FROM<表名>WHERE<条件>);例:修改EMP表,将30部门的雇员奖金设为800。UPDATEempSETcomm=800WHEREdeptno=30;commit;
5、--执行如下语句验证结果SELECT*FROMempORDERBYdeptno;6.1.3DELETE语句DELETE语句的简要语法如下:DELETE[FROM][schema.]{table[{PARTITION(partition)
6、SUBPARTITION(subpartition)}
7、@dblink]
8、{view
9、materializedview}[@dblink]}[WHEREcondition];例:以下两句的执行结果一样,均实现删除奖金少于300的雇员。DELETEFROMempWHEREjob='SALESMAN'ANDcomm<300;--使用子查询
10、DELETEFROM(SELECT*FROMemp)WHEREjob='SALESMAN'ANDcomm<300;6.1.4MERGE语句MERGE语句的语法如下:MERGEINTOtable[t_alias]USING{table
11、view
12、subquery}[t_alias]ON(condition)WHENMATCHEDTHENUPDATESETcolumn={expr
13、DEFAULT}[,column={expr
14、DEFAULT}]...WHENNOTMATCHEDTHENINSERT(column[,column]...)VALUES(expr[,expr]
15、...);例:先查看emp表数据,再仔细分析下面的代码并运行测试。本例中的合并操作将emp表中30部门的雇员数据合并到bonus表中。--准备两条测试用的对照数据DELETEFROMbonus;INSERTINTObonus(ename,comm)VALUES('SMITH',0);INSERTINTObonus(ename,comm)VALUES('ALLEN',0);COMMIT;SELECT*FROMbonus;--执行合并操作MERGEINTObonusDUSING(SELECTename,sal,job,commFROMempWHEREde