您的位置:首页 > 数据库

SQL高级语法——DML

2017-05-27 12:31 344 查看

一、WITH CHECK OPTION

INSERT INTO
(SELECT EMPLOYEE_ID, LAST_NAME, EMAIL, HIRE_DATE, JOB_ID, SALARY
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 50 WITH CHECK OPTION)
VALUES
(123,
'Ryan',
'brj880719@hotmail.com',
TO_DATE('2011-09-10', 'yyyy-mm-dd'),
'10',
5000);


二、WHEN THEN

INSERT
WHEN MOD(OBJECT_ID, 2) = 1 THEN
INTO T1(X, Y) VALUES(RN, OBJECT_ID)
WHEN MOD(OBJECT_ID, 2) = 0 THEN
INTO T2(X, Y) VALUES(RN, CREATED)
SELECT ROWNUM RN, OBJECT_ID, CREATED FROM ALL_OBJECTS

三、INSERT ALL

每个表都插入
无条件
INSERT ALL
INTO 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

有条件
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

三、INSERT FIRST

只插入首个满足条件的表
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_history VALUES (deptid, hiredate)
SELECT department_id deptid, SUM(salary) sal, MAX(hire_date) hiredate
FROM employees
GROUP BY department_id

四、MERGE

MERGE INTO table_name table_alias
USING (table|view|sub_query) alias
ON (join condition)
WHEN MATCHED THEN
UPDATE
SET col1 = col_val1,
col2 = col_val2
WHEN NOT MACHED THEN
INSERT (column_list)
VALUES (column_values);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Oracle DML