数据操纵语言,Data manipulation language,检称DML,主要包括检索(SELECT)、插入(INSERT)、更新(UPDATE)、删除(DELETE),是SQL的一个核心部分。一条DML将开始一个事务,接下来的DML都是同一事务中的语句,直到提交(COMMIT)或回滚(ROLLBACK)。下面我们来逐一介绍下ORACLE中的插入、更新、删除和合并(MERGE)的语法及实例解析。
一、INSERT 语句
1、INSERT 语句的语法
插入单行记录语法:INSERT INTO table [(column [, column...])] VALUES (value [,value...]);
该语句用VALUES子句添加行到列表中,一次仅一行。在INSERT子句中字段列表不是必须的,若不用字段列表,值必须按照表中字段的默认顺序排列。为使语句更清楚,在INSERT子句中使用字段列表。字符和日期值应该放在单引号中,数字值不需要,若使用了单引号,可能发生数字值的隐氏转换。
插入子查询结果(可多行)语法:INSERT INTO table [(column [, column...])] subquery;
在INSERT子句的字段列表中列的数目和数据类型必须与子查询中的列的数目及其数据类型相匹配。插入子查询数据分两种情况:一种从相关的一个表或者多个表查询需要插入的数据;另一种是从DUAL表查询特定的数据、子查询,取得相应的数据。
2、INSERT 语句的例子
由于公司新组建了一个部门,需要在部门表(DEPT)中插入一条数据,部门号为50,部门名为数据中心(DATACENTRE),部门所在地为中国(CHINA);并在员工表(EMP)中插入该部门领导的信息,员工号为7950,姓名为SJZH,岗位、领导编号和其他部门管理者一样,入职时间为今天,工资为岗位为管理者薪资的平均值,奖金为空,所在部门编号为50。INSERT 语句的实现代码如下
-----插入新部门的部门信息 INSERT INTO dept (deptno,dname,loc) VALUES (50,'DATACENTRE','CHINA'); -----插入新部门管理者的员工信息 INSERT INTO emp (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) SELECT 7950, 'SJZH', 'MANAGER', (SELECT DISTINCT mgr FROM emp WHERE job='MANAGER'), SYSDATE, (SELECT avg(sal) FROM emp WHERE job='MANAGER'), NULL, 50 FROM dual;