sql - data manipulation language (dml)

18
CSIT115 Data Management and Security SQL - Data Manipulation Language (DML) Dr Janusz R. Getta School of Computing and Information Technology - University of Wollongong SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2 1 of 18 18/7/21, 3:34 pm

Upload: others

Post on 02-Dec-2021

17 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SQL - Data Manipulation Language (DML)

  CSIT115 Data Management and Security

SQL - Data ManipulationLanguage (DML)Dr Janusz R. Getta

School of Computing and Information Technology -University of Wollongong

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

1 of 18 18/7/21, 3:34 pm

Page 2: SQL - Data Manipulation Language (DML)

SQL - Data Manipulation Language (DML)Outline

DELETE statement

INSERT statement

UPDATE statement

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 2/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

2 of 18 18/7/21, 3:34 pm

Page 3: SQL - Data Manipulation Language (DML)

DELETE statement

Functionality:DELETE statement deletes all rows that satisfy a given condition

The rows deleted by DELETE statement CAN be restored by ROLLBACKstatement unless DELETE has been committed by COMMIT statement

DELETE statement DOES NOT delete a table

DELETE statement DOES NOT release disk storage occupied by the deletedrows

-

-

-

-

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 3/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

3 of 18 18/7/21, 3:34 pm

Page 4: SQL - Data Manipulation Language (DML)

DELETE statement

Sample database:CREATE TABLE DEPARTMENT( name VARCHAR(50) NOT NULL, code CHAR(5) NOT NULL, total_staff_number DECIMAL(2) NOT NULL, chair VARCHAR(50) NULL, budget DECIMAL(9,1) NOT NULL,CONSTRAINT dept_pkey PRIMARY KEY(name),CONSTRAINT dept_ckey1 UNIQUE(code),CONSTRAINT dept_ckey2 UNIQUE(chair),CONSTRAINT dept_check1 CHECK (total_staff_number BETWEEN 1 AND 50) );

CREATE TABLE statement

CREATE TABLE COURSE( cnum CHAR(7) NOT NULL, title VARCHAR(200) NOT NULL, credits DECIMAL(2) NOT NULL, offered_by VARCHAR(50) NULL,CONSTRAINT course_pkey PRIMARY KEY(cnum),CONSTRAINT course_check1 CHECK (credits IN (6, 12)),CONSTRAINT course_fkey1 FOREIGN KEY(offered_by)

REFERENCES DEPARTMENT(name) ON DELETE CASCADE );

CREATE TABLE statement

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 4/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

4 of 18 18/7/21, 3:34 pm

Page 5: SQL - Data Manipulation Language (DML)

DELETE statement

Examples:Delete a course with a code CSCI235

Delete all courses with 12 credits or such that their title includes a word"database"

Delete all departments where total number of staff members is less than 5

Delete all departments

-

DELETE FROM COURSEWHERE cnum = 'CSCI235';

DELETE statement

-

DELETE FROM COURSEWHERE (credits = 12) OR (UPPER(title) LIKE '%DATABASE%');

DELETE statement

-

DELETE FROM DEPARTMENT WHERE total_staff_number < 5;

DELETE statement

-

DELETE FROM DEPARTMENT; DELETE statement

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 5/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

5 of 18 18/7/21, 3:34 pm

Page 6: SQL - Data Manipulation Language (DML)

DELETE statement

BEWARE !!!CREATE TABLE COURSE( cnum CHAR(7) NOT NULL, title VARCHAR(200) NOT NULL, credits DECIMAL(2) NOT NULL, offered_by VARCHAR(50) NULL,CONSTRAINT course_pkey PRIMARY KEY(cnum),CONSTRAINT course_check1 CHECK (credits IN (6, 12)),CONSTRAINT course_fkey1 FOREIGN KEY(offered_by)

REFERENCES DEPARTMENT(name) );

CREATE TABLE statement

DELETE FROM DEPARTMENT WHERE name='Physics';DELETE statement

--------------DELETE FROM DEPARTMENT WHERE name='Physics'--------------

ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`csit115`.`COURSE`, CONSTRAINT `course_fkey1` FOREIGN KEY (`offered_by`) REFERENCES `DEPARTMENT` (`name`))

Feedback message

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 6/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

6 of 18 18/7/21, 3:34 pm

Page 7: SQL - Data Manipulation Language (DML)

DELETE statement

BEWARE !!!If ON DELETE CASCADE clause is not used in a specification of a foreign keythen an order in which the rows are deleted is important !!!

If ON DELETE CASCADE clause is used in a specification of a foreign keythen deletion of a row with a respective value of primary key triggers automaticdeletion of the rows with the same value of a foreign key

Otherwise, the rows with the same value of a foreign key must be deleted first

-

-

-

DELETE FROM COURSE WHERE offered_by ='Physics';DELETE FROM DEPARTMENT WHERE name='Physics';

Correct order of DELETE statements

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 7/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

7 of 18 18/7/21, 3:34 pm

Page 8: SQL - Data Manipulation Language (DML)

SQL - Data Manipulation Language (DML)Outline

DELETE statement

INSERT statement

UPDATE statement

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 8/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

8 of 18 18/7/21, 3:34 pm

Page 9: SQL - Data Manipulation Language (DML)

INSERT statement

Functionality:INSERT statement inserts a new row into a relational table and automaticallyverifies the consistency constraints

-

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 9/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

9 of 18 18/7/21, 3:34 pm

Page 10: SQL - Data Manipulation Language (DML)

INSERT statement

Sample databaseCREATE TABLE DEPARTMENT( name VARCHAR(50) NOT NULL, code CHAR(5) NOT NULL, total_staff_number DECIMAL(2) NOT NULL, chair VARCHAR(50) NULL, budget DECIMAL(9,1) NOT NULL,CONSTRAINT dept_pkey PRIMARY KEY(name),CONSTRAINT dept_ckey1 UNIQUE(code),CONSTRAINT dept_ckey2 UNIQUE(chair),CONSTRAINT dept_check1 CHECK (total_staff_number BETWEEN 1 AND 50) );

CREATE TABLE statement

CREATE TABLE COURSE( cnum CHAR(7) NOT NULL, title VARCHAR(200) NOT NULL, credits DECIMAL(2) NOT NULL, offered_by VARCHAR(50) NULL,CONSTRAINT course_pkey PRIMARY KEY(cnum),CONSTRAINT course_check1 CHECK (credits IN (6, 12)),CONSTRAINT course_fkey1 FOREIGN KEY(offered_by)

REFERENCES DEPARTMENT(name) ON DELETE CASCADE );

CREATE TABLE statement

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 10/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

10 of 18 18/7/21, 3:34 pm

Page 11: SQL - Data Manipulation Language (DML)

INSERT statement

Examples:

INSERT INTO DEPARTMENT VALUES ('Computer Science', 'CSCI', 30, 'Peter', 123456.9 );

INSERT statement

INSERT INTO COURSE VALUES('CSCI235', 'Databases', 6, 'Computer Science');INSERT statement

INSERT INTO DEPARTMENT(name, code, chair, budget, total_staff_number) VALUES ('Mathematics', 'MATH', NULL, 12345.6, 10);

INSERT statement

INSERT INTO COURSE(cnum, title, offered_by, credits)

VALUES('MATH345', 'Topology', 'Mathematics', 6);

INSERT statement

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 11/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

11 of 18 18/7/21, 3:34 pm

Page 12: SQL - Data Manipulation Language (DML)

INSERT statement

BEWARE !!!

An order in which the rows are inserted into the relational tables isimportant !!!

INSERT INTO COURSE VALUES ('PHYS999','Special Theory of Relativity',6,'Physics');

INSERT statement

--------------INSERT INTO COURSE VALUES ('PHYS999', 'Special Theory of Relativity', 6,

'Physics')--------------

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`csit115`.`COURSE`, CONSTRAINT `course_fkey1` FOREIGN KEY (`offered_by`) REFERENCES `DEPARTMENT` (`name`) ON DELETE CASCADE)

Feedback message

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 12/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

12 of 18 18/7/21, 3:34 pm

Page 13: SQL - Data Manipulation Language (DML)

SQL - Data Manipulation Language (DML)Outline

DELETE statement

INSERT statement

UPDATE statement

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 13/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

13 of 18 18/7/21, 3:34 pm

Page 14: SQL - Data Manipulation Language (DML)

UPDATE statement

Functionality:UPDATE statement modifies all rows that satisfy a given condition !

The values of attributes modified by UPDATE statement CAN be restored byROLLBACK statement unless UPDATE has been committed by COMMITstatement

-

-

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 14/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

14 of 18 18/7/21, 3:34 pm

Page 15: SQL - Data Manipulation Language (DML)

UPDATE statement

Sample databaseCREATE TABLE DEPARTMENT( name VARCHAR(50) NOT NULL, code CHAR(5) NOT NULL, total_staff_number DECIMAL(2) NOT NULL, chair VARCHAR(50) NULL, budget DECIMAL(9,1) NOT NULL,CONSTRAINT dept_pkey PRIMARY KEY(name),CONSTRAINT dept_ckey1 UNIQUE(code),CONSTRAINT dept_ckey2 UNIQUE(chair),CONSTRAINT dept_check1 CHECK (total_staff_number BETWEEN 1 AND 50) );

CREATE TABLE statement

CREATE TABLE COURSE( cnum CHAR(7) NOT NULL, title VARCHAR(200) NOT NULL, credits DECIMAL(2) NOT NULL, offered_by VARCHAR(50) NULL,CONSTRAINT course_pkey PRIMARY KEY(cnum),CONSTRAINT course_check1 CHECK (credits IN (6, 12)),CONSTRAINT course_fkey1 FOREIGN KEY(offered_by)

REFERENCES DEPARTMENT(name) ON DELETE CASCADE );

CREATE TABLE statement

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 15/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

15 of 18 18/7/21, 3:34 pm

Page 16: SQL - Data Manipulation Language (DML)

UPDATE statement

ExamplesChange total number of credits to 12 for the courses CSCI235, CSCI205, andCSCI203

Change a name of chaiperson to Margaret and increase the total number ofstaff members by one in Department of Physics

Increase the total number of staff members by two in all departments

-

UPDATE COURSESET credits = 12 WHERE cnum IN ('CSCI235', 'CSCI205', 'CSCI203');

UPDATE statement

-

UPDATE DEPARTMENT SET chair = 'Margaret', total_staff_number = total_staff_number + 1 WHERE name = 'Physics';

UPDATE statement

-

UPDATE DEPARTMENT SET total_staff_number = total_staff_number + 2;

UPDATE statement

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 16/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

16 of 18 18/7/21, 3:34 pm

Page 17: SQL - Data Manipulation Language (DML)

UPDATE statement

BEWARE !!!

If ON UPDATE CASCADE clause is not used in a specification of foreign keythen an order in which the rows are updated is important !!!

UPDATE DEPARTMENT

SET name='IT'

WHERE name='Physics';

UPDATE statement

--------------

update DEPARTMENT set name ='IT' where name = 'Physics'

--------------

ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key

constraint fails (`csit115`.`COURSE`, CONSTRAINT `course_fkey1`

FOREIGN KEY (`offered_by`) REFERENCES `DEPARTMENT` (`name`)

ON DELETE CASCADE)

Feedback message

-

CREATE TABLE COURSE(

cnum CHAR(7) NOT NULL,

title VARCHAR(200) NOT NULL,

credits DECIMAL(2) NOT NULL,

offered_by VARCHAR(50) NULL,

CONSTRAINT course_pkey PRIMARY KEY(cnum),

CONSTRAINT course_check1 CHECK (credits IN (6, 12)),

CONSTRAINT course_fkey1 FOREIGN KEY(offered_by)

REFERENCES DEPARTMENT(name) ON UPDATE CASCADE );

CREATE TABLE statament with ON UPDATE CASCADE clause

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 17/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

17 of 18 18/7/21, 3:34 pm

Page 18: SQL - Data Manipulation Language (DML)

References

C. Coronel, S. Morris, A. Basta, M. Zgola, Data Management and Security,Chapter 5 Introduction to Structured Query Language, CengageCompose eBook, 2018, eBook: Data Management and Security, 1stEdition

T. Connoly, C. Begg, Database Systems, A Practical Approach to Design,Implementation, and Management, Chapter 6.3.10 Database Updates,Pearson Education Ltd, 2015

D. Darmawikarta, SQL for MySQL A Beginner’s Tutorial, Chapter 1 Storingand Maintaining Data, pages 7-12, Brainy Software Inc. First Edition: June2014

How to ... ? Cookbook, How to use data definition and basic datamanipulation statements of SQL ? Recipe 4.2 How to insert data into therelational tables

How to ... ? Cookbook, How to use data definition and basic datamanipulation statements of SQL ? Recipe 4.3 How to delete and how toupdate rows in the relational tables ?

TOP         Created by Janusz R. Getta, CSIT115 Data Management and Security, Spring 2021 18/18

SQL - Data Manipulation Language (DML) file:///Users/jrg/115-2021-SPRING/LECTURES/10sqldml/10sqldml.html#2

18 of 18 18/7/21, 3:34 pm