UPDATE和INSERT语法相信大家都很熟悉,UPDATE的基本语法结构是 : UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 INSERT的基本语法是: INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) 测试环境如下: 数据库版本:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 CREATE TABLE DEPT
(
DEPT_NAME VARCHAR2(20 BYTE),
DEPT_ID NUMBER(2)
); CREATE TABLE EMP
(
EMP_NAME VARCHAR2(20 BYTE),
EMP_ID NUMBER(3),
DEPT_ID NUMBER(2)
); ①多表联合update:现在我们在emp表内增加了一个dept_name字段,并且从dept表将dept_name同步到emp表内。 UPDATE EMP A SET DEPT_NAME=(SELECT DEPT_NAME FROM DEPT B WHERE A.DEPT_ID=B.DEPT_ID)
WHERE EXISTS (
SELECT DEPT_NAME FROM DEPT B WHERE A.DEPT_ID=B.DEPT_ID
) 使用merge语法: MERGE INTO EMP A
USING DEPT B
ON(A.DEPT_ID=B.DEPT_ID)
WHEN MATCHED THEN UPDATE SET A.DEPT_NAME=B.DEPT_NAME 效果如图: 建议:使用merge语法,效率更高 ②多表insert:同样是以上环境,现在要求有一部emp表EMP_dept_1(表结构同emp),二部emp表EMP_dept_2(表结构同emp),要求将emp内dept_id为1的插入emp_dept_1表,dept_id为2的插入EMP_dept_2(也就是对职工表进行分类) INSERT FIRST
WHEN (DEPT_ID='1')
THEN INTO EMP_DEPT_1
WHEN (DEPT_ID='2')
THEN INTO EMP_DEPT_2
SELECT * FROM EMP 这里的INSERT FIRST 是指当满足第一条插入条件的数据,不会继续进行随后的判断;而如果是insert all则是会继续判断,若是满足后续的条件,也仍然会继续插入;
|