DEFAULT Values and the MERGE Statement
-
Upload
cathleen-hall -
Category
Documents
-
view
26 -
download
1
description
Transcript of DEFAULT Values and the MERGE Statement
![Page 1: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/1.jpg)
DEFAULT Values and the MERGE
Statement
![Page 2: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/2.jpg)
2home back first prev next last
What Will I Learn?
• Understand when to specify a DEFAULT value.
• Construct and execute a MERGE statement
![Page 3: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/3.jpg)
3home back first prev next last
Why Learn It?
• Up to now, you have been updating data using a single INSERT statement.
• It has been relatively easy when adding records one at a time,
• but what if your company is very large and utilizes a data warehouse to store sales records and customer, payroll, accounting, and personal data?
• In this case, data is probably coming in from multiple sources and being managed by multiple people.
• Managing data one record at a time could be very confusing and very time consuming.
![Page 4: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/4.jpg)
4home back first prev next last
Why Learn It?
Operation Database Data Warehouse
INSERT SELECTUPDATE DELETE
日常业务应用
SELECT
决策分析应用
数据批量定时更新
![Page 5: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/5.jpg)
5home back first prev next last
Why Learn It?
• How do you determine what has been newly inserted or what has been recently changed?
• In this lesson, you will learn a more efficient method to update and insert data using a sequence of conditional INSERT and UPDATE commands in a single atomic statement.
• As you extend your knowledge in SQL, you'll appreciate effective ways to accomplish your work.
![Page 6: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/6.jpg)
6home back first prev next last
DEFAULT
• A column in a table can be given a default value. – This option prevents null values from entering the
columns if a row is inserted without a specified value for the column.
– Using default values also allows you to control where and when the default value should be applied.
– The default value can be a literal value, an expression, or a SQL function, such as SYSDATE and USER, but the value cannot be the name of another column.
– The default value must match the data type of the column.
– DEFAULT can be specified for a column when the table is created or altered.
![Page 7: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/7.jpg)
7home back first prev next last
DEFAULT
• The example below shows a default value being specified at the time the table is created:
CREATE TABLE my_employees (
hire_date DATE DEFAULT SYSDATE,
first_name VARCHAR2(15),
last_name VARCHAR2(15));
• When rows are added to this table, SYSDATE will be added to any row that does not explicitly specify a hire_date value.
![Page 8: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/8.jpg)
8home back first prev next last
Explicit DEFAULT with INSERT
• Explicit defaults can be used in INSERT and UPDATE statements.
INSERT INTO my_employees(hire_date,first_name,last_name )
VALUES(DEFAULT, DEFAULT,'Smith');
• If a default value was set for the hire_date column, Oracle sets the column to the default value.
• However, if no default value was set when the column was created, Oracle inserts a null value.
![Page 9: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/9.jpg)
9home back first prev next last
Explicit DEFAULT with UPDATE
• Explicit defaults can be used in INSERT and UPDATE statements.
INSERT INTO my_employees(hire_date,first_name,last_name )VALUES(to_date('1-1-1999','DD-MM-YYYY'), 'Abel','John');
UPDATE my_employeesSET hire_date = DEFAULT,first_name = DEFAULTWHERE last_name = 'John';
• If a default value was set for the column, Oracle sets the column to the default value.
• However, if no default value was set when the column was created, Oracle inserts a null value.
![Page 10: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/10.jpg)
10home back first prev next last
MERGE
• Using the MERGE statement accomplishes two tasks at the same time. – MERGE will INSERT and UPDATE
simultaneously. If a value is missing, a new one is inserted. If a value exists, but needs to be changed,
MERGE will update it.
– To perform these kinds of changes to database tables, you need to have INSERT and UPDATE privileges on the target table and SELECT privileges on the source table.
– Aliases can be used with the MERGE statement.
![Page 11: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/11.jpg)
11home back first prev next last
MERGE SYNTAX
MERGE INTO destination-table USING source-tableON matching-conditionWHEN MATCHED THEN UPDATESET ……WHEN NOT MATCHED THEN INSERTVALUES (……);
One row at a time is read from the source table, and itscolumn values are compared with rows in the destinationtable using the matching condition. If a matching row exists in the destination table, thesource row is used to update column(s) in the matchingdestination row. If a matching row does not exist, values from the sourcerow are used to insert a new row into the destinationtable.
![Page 12: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/12.jpg)
12home back first prev next last
MERGE Example
• This example uses the EMPLOYEES table (alias e) as a data source to insert and update rows in a copy of the table named COPY_EMP (alias c).
MERGE INTO copy_emp c USING employees eON (c.employee_id = e.employee_id)WHEN MATCHED THEN UPDATESETc.last_name = e.last_name,c.department_id = e.department_idWHEN NOT MATCHED THEN INSERTVALUES (e.employee_id, e.last_name, e.department_id);
The next slide shows the result of this statement.
![Page 13: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/13.jpg)
13home back first prev next last
MERGE Example
• EMPLOYEES rows 100 and 103 have matching rows in COPY_EMP, and so the matching COPY_EMP rows were updated.
• EMPLOYEE 142 had no matching row, and so was inserted into COPY_EMP.
![Page 14: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/14.jpg)
14home back first prev next last
演示如何从两个表向同一个表合并数据演示如何从两个表向同一个表合并数据
drop table emp;
create table emp as select employee_id,first_name,last_name,salary,department_name from employees e,departments dwhere e.department_id=d.department_id;
select * from emp;
delete from emp where employee_id<200;
update emp set salary=0 where employee_id=200;
-- MERGE 语句MERGE INTO emp USING employees eON(emp.employee_id = e.employee_id)WHEN MATCHED THEN UPDATESETemp.last_name = e.last_name,emp.first_name = e.first_name,emp.salary = e.salary,emp.department_name = NVL((SELECT department_name FROM departments WHERE department_id=e.department_id),'No Department')WHEN NOT MATCHED THEN INSERTVALUES (e.employee_id,e.first_name, e.last_name, e.salary,NVL((SELECT department_name FROM departments WHERE
department_id=e.department_id),'No Department'));
![Page 15: DEFAULT Values and the MERGE Statement](https://reader036.fdocuments.us/reader036/viewer/2022062321/5681355c550346895d9cc3e9/html5/thumbnails/15.jpg)
15home back first prev next last
Summary
• In this lesson you have learned to:– Understand when to specify a DEFAULT
value.– Constructe and execute a MERGE
statement