PowerPoint Presentation 1 Các ngôn ngữ dữ liệu đối với mô hình quan hệ Ǹguyễn Thị Oanh oanhnt@soict hust edu vn Bộ môn Hệ thống thông tin (http //is hust edu vn/) Viện CNTT&TT Trường Đại học Bách Kho[.]
Các ngơn ngữ liệu mơ hình quan hệ `Nguyễn Thị Oanh oanhnt@soict.hust.edu.vn Bộ môn Hệ thống thông tin (http://is.hust.edu.vn/) Viện CNTT&TT Trường Đại học Bách Khoa Hà Nội Hệ CSDLDL - Định nghĩa Ứng dụng - Thao tác DL Hệ QTCSDL CSDL CSDL Nội dung Đặt vấn đề ⚫ ➢ Ngôn ngữ liệu mức thấp: ⚫ ⚫ Đại số quan hệ Tính tốn vị từ Một số ngơn ngữ liệu mức cao ⚫ ⚫ Giới thiệu số ngôn ngữ phân loại So sánh đánh giá QBE (Query By Example) SQL (Structured Query Language) Kết luận Đặt vấn đề Mục đích ngơn ngữ liệu Tại có nhiều ngơn ngơn ngữ liệu? Ngôn ngữ cấp thấp vs Ngôn ngữ cấp cao? Ví dụ Tìm tên sinh viên sống Bundoora ⚫ ⚫ Tìm bảng Student có Suburb = Bundoora Đưa giá trị thuộc tính Name Student Id Name 1108 Robert Suburb Kew 3936 Glen Bundoora 8507 Norman Bundoora 8452 Mary Balwyn Ví dụ (2) Tìm sinh viên đăng ký khố học có mã số 113 ⚫ ⚫ Tìm giá trị SID bảng Enrol có trường course tương ứng 113 Đưa bảng Student có Id giá trị tìm thấy Student Id Name Suburb 1108 Robert Kew 3936 Glen Bundoora 8507 Norman Bundoora 8452 Mary Balwyn Enrol SID Course 3936 101 1108 113 8507 101 Course No Name Dept 113 BCS CSCE 101 MCS CSCE Phân loại ngôn ngữ truy vấn Ngôn ngữ cấp thấp ⚫ Đại số quan hệ ⚫ câu hỏi = tập phép toán quan hệ Được biểu diễn biểu thức đại số (quan hệ) Tính tốn vị từ câu hỏi = mô tả mong muốn Được đặc tả vị từ mà phải thoả mãn Phân biệt lớp: ⚫ ⚫ ngơn ngữ tính tốn vị từ biến ngơn ngữ tính tốn vị từ biến miền Ngôn ngữ cấp cao ⚫ ⚫ QBE SQL Ngôn ngữ đại số quan hệ Tổng quan Gồm phép toán tương ứng với thao tác quan hệ Mỗi phép toán ⚫ ⚫ Đầu vào: hay nhiều quan hệ Đầu ra: quan hệ Biểu thức đại số quan hệ = chuỗi phép toán Kết thực biểu thức đại số quan hệ Được cài đặt phần lớn hệ CSDL Phân loại phép toán Phép toán quan hệ ⚫ ⚫ ⚫ ⚫ Phép chiếu (projection) Phép chọn (selection) Phép kết nối (join) Phép chia (division) Phép toán tập hợp ⚫ ⚫ ⚫ ⚫ Phép hợp (union) Phép giao (intersection) Phép trừ (difference) Phép tích đề-các (cartesian product) 10 Phép chiếu Đ/n: Lựa chọn số thuộc tính từ quan hệ Cú pháp: A1, A2, ( R) C1 C2 C3 C4 C5 C2 C5 Ví dụ: đưa danh sách tên tất sinh viên ❖ Student Kết Id Name Suburb 1108 Robert Kew 3936 Glen Bundoora Glen 8507 Norman Bundoora Norman 8452 Mary Balwyn Mary name Name (Student) Robert 11 Phép chọn Đ/n: Lựa chọn quan hệ thoả mãn điều kiện cho trước condition (R ) Cú pháp: R1 R2 R3 R4 ❖ R2 R3 Ví dụ: đưa danh sách sinh viên sống Bundoora suburb="Bundoora " ( Student ) Student Id Name Suburb 1108 Robert Kew 3936 Glen Bundoora 8507 Norman Bundoora 8452 Mary Balwyn Kết Id Name Suburb 3936 Glen Bundoora 8507 Norman Bundoora 12 Vi dụ - chọn chiếu đưa tên sinh viên sống Bundoora ( name suburb = "Bundoora " ( Student ) ) Student Kết Id Name Suburb 1108 Robert Kew 3936 Glen Bundoora Glen 8507 Norman Bundoora Norman 8452 Mary Balwyn Name 13 Phép kết nối ❖ Student Đ/n: ghép từ quan hệ thoả mãn điều kiện kết nối R1 join _ condition R Cú pháp: a r xr x a r r x b r s y b r xr x c v t z Ví dụ: đưa danh sách sinh viên khoá học Student Id = SID Enrol Kết Enrol SID Id Name Suburb 1108 Robert Kew SID Course 3936 Glen Bundoora 3936 101 8507 Norman Bundoora 8452 Mary Balwyn Id=SID 1108 113 8507 101 Id Name Suburb Course 1108 1108 Robert Kew 113 3936 3936 Glen Bundoora 101 8507 8507 Norman Bundoora 14 101 Ví dụ - chọn, chiếu kết nối đưa tên sinh viên sống Bundoora mã khố học mà sinh viên đăng ký Name ,Course ( Suburb="Bundoora " (Student Id = SID Enrol )) Student Id Name 1108 Robert Suburb Kew Kết 3936 Glen Bundoora Name Course 8507 Norman Bundoora 8452 Mary Balwyn Glen 101 Norman 101 Enrol SID Course 3936 101 1108 113 8507 101 15 Phép kết nối tự nhiên ❖ Đ/n: phép kết nối với điều kiện thuộc tính trùng tên Ví dụ: Enrol Takes SID SNO SID Course 1108 21 3936 101 1108 23 1108 113 8507 23 8507 101 8507 29 * SID SNO 1108 21 Course 1108 23 113 8507 23 101 8507 29 101 113 16 Phép kết nối Phép kết nối trái a r b r c v r x s y t z a r x b r x c v null Phép kết nối phải a r b r c v r x s y t z a r x b r x null s y null t z 17 Ví dụ phép kết nối Đưa danh sách mã số sinh viên mã khố học mà sinh viên đăng ký có Student ID Name Suburb 1108 Robert Kew 3936 Glen Bundoora 8507 Norman Bundoora 8452 Mary Balwyn Enrol Id = SID SID Course 3936 101 1108 113 8507 101 Kết ID Name Suburb Course 1108 Robert Kew 113 3936 Glen Bundoora 101 8507 Norman Bundoora 101 8452 Mary Balwyn null 18 Phép tích đề-các Đ/n: kết nối quan hệ thứ quan hệ thứ hai Cú pháp: R1 x R2 a b c d X a a b b c c d d x y x y x y x y x y 19 Ví dụ phép tích đề-các Student Sport Id Name Suburb 1108 Robert Kew SportID Sport 05 Swimming 09 Dancing Suburb SportID Sport 3936 Glen Bundoora 8507 Norman Bundoora 8452 Mary Balwyn X Student_Sport Id Name 1108 Robert Kew 05 Swimming 3936 Glen Bundoora 05 Swimming 8507 Norman Bundoora 05 Swimming 8452 Mary Balwyn 05 Swimming 1108 Robert Kew 09 Dancing 3936 Glen Bundoora 09 Dancing 8507 Norman Bundoora 09 Dancing 8452 Mary Balwyn 09 Dancing 20 10 Thêm/xoá/sửa cột bảng Thêm ALTER TABLE ADD COLUMN [NOT NULL] Xoá ALTER TABLE DROP COLUMN Sửa ALTER TABLE CHANGE COLUMN 39 Thêm/xóa ràng buộc Thêm ALTER TABLE ADD CONSTRAINT Xóa ALTER TABLE DROP CONSTRAINT 40 20 Ví dụ CREATE TABLE Student( Id char(10)NOT NULL, Name varchar(30)NOT NULL, Suburb varchar(30), CONSTRAINT key_Stud PRIMARY KEY Id ) CREATE TABLE Takes( SID char(10)NOT NULL, SNO varchar(5)NOT NULL, CONSTRAINT key_takes PRIMARY KEY (SID,SNO), CONSTRAINT key_2Stud FOREIGN KEY (SID) REFERENCES Student(Id) ) Id Name 1108 Robert Suburb Kew 3936 Glen Bundoora 8507 Norman Bundoora 8452 Mary Balwyn SID SNO 1108 21 1108 23 8507 23 8507 29 41 Thao tác liệu với SQL Các thao tác với liệu ⚫ ⚫ ⚫ ⚫ ➢ Thêm : INSERT … Xóa: DELETE … Sửa (Cập nhật): UPDATE … Tìm kiếm (truy vấn) liệu: SELECT … Được biểu diễn lệnh thao tác liệu 42 21 Các câu lệnh cập nhật liệu Thêm ➢ ➢ INSERT INTO table[(col1,col2,…)] VALUES (exp1,exp2,…) INSERT INTO table[(col1,col2,…)] SELECT col1,col2, … FROM tab1, tab2, … WHERE Ví dụ ➢ INSERT INTO Student(Id, Name, Suburb) VALUES ("1179","David","Evr") 43 Các câu lệnh cập nhật liệu (2) Xoá DELETE FROM WHERE Sửa UPDATE SET WHERE table cond_exp; table col1 = exp1, col2=exp2, … colN=expN cond_exp; Ví dụ ⚫ ⚫ DELETE FROM Student WHERE Suburb = ‘‘Bundoora’’; UPDATE Student SET Suburb = ‘‘Evry’’ WHERE Suburb = ‘‘Evr’’; 44 22 Cú pháp câu lệnh truy vấn SQL SELECT [DISTINCT] , , … FROM ,, … [WHERE ] [GROUP BY , , … [HAVING ]] [ORDER BY | [ASC|DESC]] 45 Truy vấn đơn giản bảng Tìm thơng tin từ cột bảng ➢ ➢ Ví SELECT FROM SELECT FROM ColumnName, ColumnName, TableName * TableName dụ Student SELECT FROM Name Student Id Name Suburb 1108 Robert Kew 3936 Glen Bundoora Glen 8507 Norman Bundoora Norman 8452 Mary Balwyn Mary name (Student) Name Robert 46 23 Truy vấn với điều kiện lựa chọn Chọn Ví ghi (dòng) dụ SELECT FROM WHERE ColumnName,ColumnName, TableName condition_expression; SELECT FROM WHERE * Student Suburb=‘‘Bundoora’’ ; Student Id Name Suburb 1108 Robert Kew 3936 Glen Bundoora 8507 Norman Bundoora 8452 Mary Balwyn suburb="Bundoora " ( Student) Id Name Suburb 3936 Glen Bundoora 8507 Norman Bundoora 47 Biểu diễn điều kiện lựa chọn Các phép toán quan hệ: =, !=, , = Các phép toán logic: NOT, AND, OR Phép ⚫ attr =100 attr < 10 OR attr >100 toán phạm vi: BETWEEN, IN, LIKE Kiểu liệu số ⚫ attr BETWEEN val1 AND val2 ( (attr>=val1) and (attr 57 Các phép toán tập hợp UNION, MINUS, INTERSECT Ví dụ: đưa danh sách tên mơn học khơng có sinh viên tham dự SELECT DISTINCT FROM MINUS SELECT DISTINCT FROM WHERE Subject.Name Subject Subject.Name Takes, Subject Takes.SNO = Subject.No 58 29 Các câu truy vấn lồng Là trường hợp câu truy vấn (con) viết lồng Thường sử dụng với để ⚫ ⚫ ⚫ Kiểm tra thành viên tập hợp (IN) So sánh tập hợp (>ALL, >=ALL,