19
กกกกกกกกกกกกกกก (DML) DML (Data Manipulation Language) คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคค คคคคคคคคคคคคคคค DML คคคคคค คคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคคค คคค คคคคค, คคคคค, คคคคค คคคคคคคคคคค คคคคคคคคคค คคคค ค คคคคคคคค 1. INSERT คคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคค 2. UPDATE คคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคค 3. DELETE คคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคคคคคคค WHERE คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค กกกกกกกกกกกกกกกกกกกกกกกกกกกกก (INSERT) คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคค คคคค คคคคคคคคคคคคคคคคคคคคค, คคคคคค คคคคคคค คคคคคคคคคคคคคคคคคคคคคคคค กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก DEPARTMENTS กกกกก DEPARTMENTS คคค

boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

การจดัการขอ้มูล (DML)

DML (Data Manipulation Language)

คือภาษาสำาหรบัจดัการขอ้มูลท่ีจดัเก็บอยูใ่นตารางขอ้มูล ซึ่งในกลุ่มภาษา DML นัน้จะครอบคลมุการจดัการขอ้มูลทัง้หมด เชน่ การเพิม่, แก้ไข, ค้นหา และลบขอ้มูล โดยคำาสัง่ต่าง ๆ มดีังน้ี

1. INSERT คือคำาสัง่ท่ีใชใ้นการเพิม่ขอ้มูลลงไปในตาราง2. UPDATE คือคำาสัง่ท่ีใชใ้นการแก้ไขขอ้มูลในตาราง3. DELETE คือคำาสัง่ในการลบขอ้มูลในตารางขอ้มูล โดย

สามารถใชง้านรวมกับคำาสัง่ WHERE เพื่อสรา้งเง่ือนไขสำาหรบัการลบขอ้มูล

การเพิม่ขอ้มูลใหมใ่ห้กับตาราง (INSERT)

คือคำาสัง่สำาหรบัการเพิม่ขอ้มูลลงไปในตารางขอ้มูล เชน่ การเพิม่ขอ้มูลพนักงาน, สนิค้า เป็นต้น โดยมคีำาสัง่โดยยอ่ดังน้ี

ถ้าต้องการเพิม่ขอ้มูลใหมน่ี้ลงไปในตาราง DEPARTMENTS

ตาราง DEPARTMENTS

แถว

Page 2: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

คำาสัง่ INSERT

- ใชส้ำาหรบัการเพิม่ขอ้มูลเขา้ไปในตาราง- ในการ INSERT ขอ้มูลต้องใชข้อ้มูลใหต้รงกับชนิดขอ้มูล

(datatype) ของคลอลัมน์- ในกรณีไมม่กีารระบุชื่อคอลลัมน์ในการ INSERT มนัจะเขา้ใจ

วา่เราเพิม่ขอ้มูลทกุคลอลัมน์- คำาสัง่ INSERT ใช ้1 INSERT ต่อ 1 ROW เท่านัน้- หากชนิดขอ้มูลเป็น ตัวอักษร (String) หรอืวนัที่ (Date)

จะต้องอยูภ่ายใต้เครื่องหมาย ‘ ’

รูปแบบคำาสัง่ INSERT

เพิม่แถวใหม่เขา้ไปในตาราง

Page 3: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

แบบแรกเป็นการเพิม่ขอ้มูลโดยไมก่ำาหนดคอลัมน์ นัน่คือ เวลาเพิม่ขอ้มูล ต้องเพิม่ใหค้รบทกุ

แบบท่ีสองเป็นการเพิม่ขอ้มูลแบบกำาหนดชื่อคอลัมน์โดย เวลาเพิม่ต้องบอกชื่อคอลัมน์ท่ีต้องการเพิม่ ไมจ่ำาเป็นต้องเพิม่ทกุคอลัมน์

ตัวอยา่งการใชค้ำาสัง่ INSERT

ตัวอยา่งการใชค้ำาสัง่ INSERT กรณีเจาะจงเฉพาะบางคอลลัมน์

INSERT INTO departments (department_id,department_name,manager_id,location_id)VALUES (90, 'Executive',100,1700);

ขอ้มูลถกูเพิม่เขา้ไปในตารางเรยีบรอ้ย

INSERT INTO departments (department_id,department_name) VALUES (30,'Purchasing');

การ INSERT ขอ้มูลเพยีง 2 คลอ

INSERT INTO table_nameVALUES (value1, value2, value3,...)

INSERT INTO table_name (column1, column2, column3,...)VALUES (value1, value2,

Page 4: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

ตัวอยา่งการใชค้ำาสัง่ การ INSERT ค่าวา่ง (NULL)

INSERT INTO departments VALUES (100,'Finance', NULL, NULL);

การ INSERT ค่าวา่งลงใน

Page 5: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

ตัวอยา่งการ INSERT ค่าคงท่ีจากระบบลงในตาราง

การ INSERT ค่าเฉพาะ วนัท่ี และ เวลา ลงในตาราง

ตัวอยา่งการ INSERT ค่าเฉพาะลงในตาราง

ผลลัพธ์

INSERT INTO employees (employee_id, first_name,last_name, email,phone_number, hire_date ,job_id,salary, commission_pct,manager_id, department_id)VALUES (113,'Louis','Popp','LPPOPP', '515.124.4567', SYSDATE , 'AC_ACCOUNT' ,

6900, NULL, 205,110);

การ INSERT ค่าเฉพาะลงในตาราง คือการกำาหนดวนัที่ โดยการอ้างอิงวนัท่ี

INSERT INTO employees VALUES (114,'Den','Raphealy','DRAPHEAL', '0809659451', TO_DATE('DEC 7,1994', 'DD MON YY') ,

การ INSERT ขอ้มูลโดยอ้างอิงวนัท่ีปัจจุบนัของเครื่อง และกำาหนดรูปแบบ

Page 6: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

การคัดลอกขอ้มูลจากตารางอื่นมาไวใ้นตารางใหมโ่ดยอาศัยคำาสัง่ Subquery

ตัวอยา่งการ INSERT ขอ้มูลโดยอาศัย Subquery

หมายเหตุ: - คลอลัมน์ต้องเรยีงใหต้รงกัน- ชนิดขอ้มูล (datatype) จะต้องตรงกันเท่านัน้

จงึจะ INSERT ได้- หา้มใชค้ำาสัง่ VALUES

การแก้ไขขอ้มูลในตาราง (Update)

คือคำาสัง่สำาหรบัการปรบัปรุง หรอืแก้ไขขอ้มูลในตารางขอ้มูล โดยสามารถใชง้านรวมกับคำาสัง่ WHERE เพื่อสรา้งเง่ือนไขในการแก้ไขขอ้มูล

ตาราง-EMPLOYEES

INSERT INTO sales_reps (id,name,salary,commission_pct) SELECT employee_id,last_name,salary,c

เป็นการ INSERT เขา้ไปในตาราง sale_reps โดยดึงขอ้มูลจากตาราง employees มาทำาการ INSERT เขา้ไปในตาราง

Page 7: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

รูปแบบคำาสัง่ UPDATE

- Set คือค่าท่ีเราต้องการเปล่ียนแปลงใหม่- ค่าท่ีจะทำาการเปล่ียนแปลงเป็นอักษร วนัท่ี เวลา ต้องครอบด้วยเครื่องหมาย ‘ ’

ตัวอยา่งการใชค้ำาสัง่ UPDATE

แก้ไขขอ้มูลในตาราง employees จากเดิมคลอลัมน์ department_id มขีอ้มูลเป็น

UPDATE table-nameSET column = value ,[column = value,……………][WHERE conditions];

Page 8: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

ก่อน/หลัง Update เชค็ขอ้มูล department_id = 60 ในตาราง employees

การ UPDATE ขอ้มูล 2 คลอลัมน์ ด้วย Subqueryโจทย ์ทำาการแก้ไขขอ้มูลในคอลัมน์ job_id และ salary จากตาราง employees โดยเป็นการแก้ไขขอ้มูลของพนักงานท่ีมรีหสั 113 และมเีง่ือนไขวา่ขอ้มูลท่ีแก้ไขต้องมค่ีาเหมอืนกับขอ้มูลของพนักงาน employee_id เป็น 205

เชค็ก่อน/หลัง การ Update

Update employeesSET department_id = 80where employee_id = 60;

เป็นการแก้ไขขอ้มูลในคลอลัมน์ department_id จากขอ้มูลเดิมใหเ้ป็น 80 โดยมเีง่ือนไขวา่

Update employeesSET job_id = (SELECT job_id FROM

employees WHERE

employee_id = 205),

เป็นการแก้ไขขอ้มูลพรอ้มกัน 2 คลอลัมน์โดยการใช ้Subquery เขา้มาชว่ย โดยการดึงขอ้มูลมาจากตาราง

SELECT job_id,salaryFROM employeesWHERE employee_id = 113;

Page 9: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

Update employeesSET job_id = (SELECT job_id FROM

employees WHERE

employee_id = 205),

เป็นการแก้ไขขอ้มูลพรอ้มกัน 2 คลอลัมน์โดยการใช ้Subquery เขา้มาชว่ย โดยการดึงขอ้มูลมาจากตาราง

Page 10: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

การลบขอ้มูลออกจากตาราง (Delete)

จะใชส้ำาหรบัลบขอ้มูลออกจากตาราง สามารถใสเ่ง่ือนไขในการลบได้ด้วย ถ้าไมม่กีารกำาหนด เง่ือนไข จะเป็นการลบขอ้มูลทัง้ตาราง หลังจากท่ีมกีารรนัคำาสัง่ DELETE จะต้องตามด้วยคำาสัง่ COMMIT เป็นการยนืยนัการลบขอ้มูล หรอื ROLLBACK เพื่อยกเลิกการลบก่อนหน้า

ตาราง DEPARTMENTS

ทำาการ insert ขอ้มูลขึน้มาใหม ่1 rowInsert into departments Values (280,'XXX',null,null);

Page 11: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

ต้องการลบขอ้มูลของ department_id = 280 ออกจากตาราง Departments

รูปแบบคำาสัง่ DELETE

** หากไมร่ะบุเง่ือนไขในการลบ มนัจะลบทกุ ๆ แถวออกไป ฉะนัน้ต้องมเีง่ือนไขในการลบเสมอถ้าไมต้่องการใหข้อ้มูลในตารางหายหมด

ขอ้มูลถกูลบไป 1 ROW คือแถวท่ีม ี

DELETE [FROM] table_name[WHERE condition];

Page 12: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

ตัวอยา่งการใชค้ำาสัง่ DELETEก่อนทำาการลบขอ้มูลด้วยคำาสัง่ DELETE

ตัวอยา่งการใชค้ำาสัง่ DELETE กรณีต้องการลบขอ้มูลทั้งหมดในตารางโจทย ์ทำาการสรา้งตาราง copy_emp โดยใช ้Subquery เพื่อทำาการคัดลอกขอ้มูลจากตาราง Employees มาเก็บไว้

การลบโดยอาศัย Subquery

DELETE FROM departments WHERE department_id = 280;

DELETE FROM copy_emp;

เป็นการลบขอ้มูลจากตาราง departments โดยมเีง่ือนไขวา่

เป็นการลบขอ้มูลทัง้หมดในตาราง

Select * FROM departments WHERE department_id = 280;

Create table copy_empAsSelect *From employees;

Page 13: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

- คำาสัง่ delete หากลบแล้ว เราจะ insert ขอ้มูลเขา้มาใหม ่มนัจะนับต่อ คือ หากเราลบ rows ท่ี 1 ไป insert ใหม ่มนัก็จะเริม่ rows ท่ี 2

การดำาเนินการของฐานขอ้มูล (Database Transactions)

Database Transactions จะเกิดขึ้นเมื่อมกีาร query หรอื ทำา SQL Select statement เพื่อดึงขอ้มูลจาก table หรอืใชค้ำาสัง่ SQL DML เพื่อเพิม่ ลด หรอื ปรบัเปล่ียนขอ้มูลภายในตาราง ซึ่งการเปล่ียนขอ้มูลภายใน table น้ีท่ีเรยีกวา่ transaction โดย database ต้องมกีารควบคมุ transaction เหล่าน้ีใหท้ำางานตามลำาดับที่ user กำาหนด เชน่การทำา SQL Insert statement ก่อน SQL Update statement แล้วค่อย SQL Delete statement ต้องทำางานตามลำาดับเพื่อป้องกัน ไมใ่หค้ำาสัง่ error และขอ้มูลสดุท้ายมคีวามถกูต้อง ซึ่งในบางครัง้เราอาจจะทำาการ grouping คำาสัง่เหล่าเขา้มาเป็นสว่นหน่ึงใน transaction เดียวกันเพื่อใหท้ำางานทีเดียว

การควบคมุ Transaction (Transaction Control)

DELETE FROM employeesWHERE department_id = (SELECT department_id FROM departments WHERE department_name LIKE '%Public%');

Page 14: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

คำาสัง่ที่ทำา Transaction control จะใชง้านเฉพาะกับ SQL DML Command เชน่ INSERT, UPDATE และ DELETE เท่านัน้ และจะไมส่ามารถใชง้านกับการทำา SQL Create table หรอื SQL Drop table เพราะวา่คำาสัง่ทัง้คู่น้ีมกีารยนืยนัหรอื commit ใหทั้นทีบน database

COMMIT − ยนืยนัการเปล่ียนแปลงขอ้มูล ROLLBACK − ดึงขอ้มูลเก่าก่อนหน้ากลับมา จากจุด

savepoint SAVEPOINT − กำาหนดจุดของขอ้มูล ท่ีให ้rollback ขอ้มูล

กลับมา

คำาสัง่ COMMIT

COMMIT command เป็นคำาสัง่เพื่อบอกกับฐานขอ้มูลวา่ transaction ท่ีเกิดขึ้นก่อนหน้านี้ได้รบัการยนืยนัแล้ววา่ให ้save ลงสงู database ได้ โดยการสัง่ COMMIT จะถือวา่ transactions ทัง้หมดท่ีเกิดขึ้นก่อน การ COMMIT หรอื ROLLBACK ล่าสดุ ได้รบัการยนิยอมใหป้รบัเปล่ียนขอ้มูลที่ถกูเก็บอยูใ่น table ปัจจุบนั

รูปแบบ commit (Syntax)

หมายเหต:ุ หลังจาก commit แล้ว ผลลัพธจ์ะถกู save ลงสู ่table

ตัวอยา่งการใชค้ำาสัง่ commit

COMMIT;

Page 15: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

ต้องการลบขอ้มูลจากตาราง employees ของพนักงานที่ม ีemployee_id = 99999 และ เพิม่ขอ้มูลลงในตาราง departments

ยนืยนัการแก้ไขขอ้มูลในฐานขอ้มูล

คำาสัง่ ROLLBACK

ROLLBACK command เป็นคำาสัง่เพื่อยกเลิกการทำา transaction SQL DML ท่ีเกิดขึ้นจากการทำา INSERT, UPDATE และ DELETE ก่อนหน้าน้ีท่ียงัไมม่กีาร commit หรอื พูดอีกนัยหน่ึงคือยอ้นกลับไปท่ีขอ้มูลที่มกีาร COMMIT หรอื ROLLBACK ล่าสดุ โดยยกเลิก transaction ท่ีเกิดขึ้นระหวา่งชว่งนัน้

รูปแบบ rollback (Syntax)

ROLLBACK;

DELETE FROM employeesWHERE employee_id = 99999;

INSERT INTO departments VALUES (290, 'Corporate Tax', NULL, 1700);

COMMIT;

Page 16: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

หมายเหต:ุ หลังจาก rollback แล้ว ผลลัพธจ์ะยกเลิก transaction ท่ีเกิดขึ้นก่อนหน้า และแสดงขอ้มูลที่มกีาร commit ล่าสดุแทน ซึ่งก็จะเป็นขอ้มูลตัง้ต้นเดิม

ฝึกปฏิบติั: จงอธบิายลำาดับของเหตกุารณ์ของคำาสัง่ต่อไปน้ี

สัง่ SAVEPOINT

SAVEPOINT command เป็นคำาสัง่ท่ีระบุจุดของการทำา transaction เมื่อมกีารสัง่ ROLLBACK transaciton กลับไปยงัจุด SAVEPOINT โดยท่ีไมต้่องยอ้นกลับไปทัง้หมดท่ีจุดตัง้ต้น

รูปแบบการสรา้ง savepoint (Syntax)

DELETE FROM test;25,000 rows deleted.ROLLBACK;Rollback complete.DELETE FROM test WHERE id = 100;1 row deleted.SELECT * FROM test WHERE id = 100;No rows selected.COMMIT;Commit complete.

Page 17: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

คำาสัง่นี้เพยีงแค่สรา้งจุด savepoint ระหวา่งชว่งของ transaction เพื่อใหค้ำาสัง่ rollback สามารถยกเลิก transaction ท่ีเกิดหลังจากนัน้ กลับมาสูจุ่ด savepoint ได้

รูปแบบ rollback กลับมา savepoint (Syntax)

คำาสัง่ RELEASE SAVEPOINT

RELEASE SAVEPOINT command เป็นคำาสัง่ท่ีใช้ยกเลิก SAVEPOINT ท่ีมกีารสรา้งขึ้น

รูปแบบการยกเลิก savepoint หรอื release savepoint (Syntax)

หมายเหต:ุ หลักจากสัง่ release savepoint แล้ว จะไมส่ามารถ rollback กลับไปจุด savepoint ดังกล่าวได้อีก

 

SAVEPOINT SAVEPOINT_NAME;

ROLLBACK TO SAVEPOINT_NAME;

RELEASE SAVEPOINT SAVEPOINT_NAME;

Page 18: boykap.files.wordpress.com€¦ · Web viewinsert คือคำสั่งที่ใช้ในการเพิ่มข้อมูลลงไปในตาราง

ฝึกปฏิบติั: จงอธบิายลำาดับของเหตกุารณ์ของคำาสัง่ต่อไปน้ี

DELETE FROM test;25,000 rows deleted.ROLLBACK;Rollback complete.DELETE FROM test WHERE id = 100;1 row deleted.SELECT * FROM test WHERE id = 100;No rows selected.SAVEPOINT SAVEPOINT_1;DELETE FROM test WHERE id = 200;1 row deleted.COMMIT;Commit complete.ROLLBACK TO SAVEPOINT_1;