ΕΠΛ 342 Βάσεις εδοµένων Εργαστήριο 3 ο SQL - DML Ιωάννα Συρίµη syrimi@ucy.ac.cy
Data Manipulation Language Εισαγωγή νέων Εγγραφών Insert Into ιαγραφή Εγγραφών Delete Αλλαγή υφιστάµενων Εγγραφών Update Table Οριστικοποίηση / Ακύρωση Αλλαγών Commit Rollback ΕΠΛ342-Βάσεις εδοµένων 2
INSERT INTO INSERT INTO [schema.]table (ColumnA, ColumnB, ) VALUES (ColumnA_value, ColumnB_value, ) Προσοχή! 1. Πρέπει να δηλωθούν τιµές για όλα τα απαραίτητα (not null) πεδία 2. Οι τιµές πρέπει να ικανοποιούν όλους τους περιορισµούς (constraints) ΕΠΛ342-Βάσεις εδοµένων 3
INSERT INTO CREATE TABLE student (student_id number(10) not null, name varchar2(60) not null, date_of_birth date, CONSTRAINT student_pk PRIMARY KEY (Student_id)) ΕΠΛ342-Βάσεις εδοµένων 4
INSERT INTO INSERT INTO student (student_id, name, date_of_birth) VALUES (1001, Αντρέας Αντρέου, to_date( 2/2/1982, dd/mm/yyyy ) ) ή INSERT INTO student VALUES (1001, Αντρέας Αντρέου, to_date( 2/2/1982, dd/mm/yyyy )) ΕΠΛ342-Βάσεις εδοµένων 5
INSERT INTO INSERT INTO student (student_id, name) VALUES (1001, Αντρέας Αντρέου ) INSERT INTO student VALUES (1001, Αντρέας Αντρέου ) INSERT INTO student VALUES (1001, Αντρέας Αντρέου, null) ΕΠΛ342-Βάσεις εδοµένων 6
INSERT INTO CREATE TABLE employees ( employee_id NUMBER(6) NOT NULL, first_name VARCHAR2(20), last_name VARCHAR2(25) NOT NULL, email VARCHAR2(25) NOT NULL, hire_date DATE DEFAULT SYSDATE NOT NULL, salary NUMBER(8,2) NOT NULL, department_id NUMBER(4), CONSTRAINT emp_salary_min CHECK (salary > 0), CONSTRAINT emp_email_uk UNIQUE (email), CONSTRAINT employee_pk PRIMARY KEY (employee_id), CONSTRAINT employee_department_fk FOREIGN KEY (department_id) REFERENCES departments(department_id) ) ΕΠΛ342-Βάσεις εδοµένων 7
INSERT INTO INSERT INTO employees ( employee_id, department_id, first_name, last_name, email, salary) VALUES (123, 1, null, Γεωργίου, georgiou@utopia.com, 100) Εφόσον : 1. εν υπάρχει άλλος υπάλληλος µε employee_id = 123 2. Στον πίνακα Departments υπάρχει τµήµα µεκωδικό1 3. εν υπάρχει άλλος υπάλληλος µε email = georgiou@utopia.com ΕΠΛ342-Βάσεις εδοµένων 8
DELETE ιαγραφή όλων των εγγραφών στον πίνακα DELETE [schema.]table ιαγραφή των εγγραφών του πίνακα που ικανοποιούν την συνθήκη / τις συνθήκες DELETE [schema.]table WHERE <CONDITIONS LIST> Προσοχή! Οι εγγραφές θα διαγραφούν εφόσον δεν υπάρχουν εγγραφές σε οποιοδήποτε άλλο πίνακα της Β που να αναφέρονται σε αυτές. ΕΠΛ342-Βάσεις εδοµένων 9
DELETE DELETE Students DELETE Students WHERE student_id = 1001 DELETE Students WHERE date_of_birth is null ΕΠΛ342-Βάσεις εδοµένων 10
DELETE DELETE Students WHERE UPPER(name) like ANDR% OR UPPER(name) like IOANNOU DELETE Departments WHERE location = BOSTON Εφόσον : 1. Στον πίνακα Employees δεν υπάρχει υπάλληλος που να είναι τοποθετηµένος σε κάποιο τµήµα στη Βοστώνη ΕΠΛ342-Βάσεις εδοµένων 11
UPDATE Αλλαγήόλωντωνεγγραφώνστονπίνακα UPDATE [schema.]table SET column_a = new_value_for_column_a, column_b = new_value_for_column_b Αλλαγή των εγγραφών του πίνακα που ικανοποιούν την συνθήκη / τις συνθήκες UPDATE [schema.]table SET column_a = new_value_for_column_a, column_b = new_value_for_column_b WHERE <CONDITIONS LIST> Προσοχή! Οι εγγραφές θα αλλαχθούν εφόσον οι νέες τιµές ικανοποιούν όλους τους περιορισµούς (constraints) που ισχύουν για τον συγκεκριµένο πίνακα ΕΠΛ342-Βάσεις εδοµένων 12
UPDATE UPDATE Employees SET salary = salary + 100 UPDATE Employees SET salary = salary / 2 WHERE department_id = 11 UPDATE Employees SET department_id = 12 WHERE department_id = 2 Εφόσον : 1. Στον πίνακα Departments υπάρχει τµήµα µεκωδικό12 ΕΠΛ342-Βάσεις εδοµένων 13
WHERE =, <, >, <>,!=, >=, <= SALARY > 1000 NAME = ANNA DATE_OF_BIRTH >= TO_DATE ( 1/1/1980, DD/MM/YYYY ) IS NULL, IS NOT NULL DATE_OF_BIRTH IS NULL LIKE, NOT LIKE NAME LIKE %A% NAME NOT LIKE MARIA_ NAME LIKE MARIA IN, NOT IN DEPARTMENT_ID IN (1, 3, 6) NAME IN ( ANNA, MARIA ) BETWEEN AND, NOT BETWEEN AND SALARY NOT BETWEEN 1000 AND 1500 DATE_OF_BIRTH BETWEEN TO_DATE ( 1/1/1980, DD/MM/YYYY ) AND SYSDATE ΕΠΛ342-Βάσεις εδοµένων 14
WHERE AND SALARY > 1000 AND NAME = ANNA OR DATE_OF_BIRTH IS NULL OR DATE_OF_BIRTH > SYSDATE NOT NOT (SALARY > 1000 AND NAME = ANNA ) ΕΠΛ342-Βάσεις εδοµένων 15
COMMIT & ROLLBACK Για να οριστικοποιήσετε (µονιµοποιήσετε) τις αλλαγές (εισαγωγή, διαγραφή, αλλαγή εγγραφών) στη Β COMMIT Για να ακυρώσετε τις αλλαγές (εισαγωγή, διαγραφή, αλλαγή εγγραφών) στη Β ROLLBACK ΕΠΛ342-Βάσεις εδοµένων 16