Tài liệu ôn thi cao học - thạc sĩ khoa học máy tính, hệ thống thông tin trường ĐH KHTN TP.HCM;p2

54 602 2
Tài liệu ôn thi cao học - thạc sĩ khoa học máy tính, hệ thống thông tin trường ĐH KHTN TP.HCM;p2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tài liệu ôn thi cao học - thạc sĩ khoa học máy tính, hệ thống thông tin trường ĐH KHTN TP.HCM;p2

SQL - Structured Query Language Giới thiệu Truy vấn liệu Cập nhật liệu Giới thiệu Ngôn ngữ khai báo Cài đặt dựa ĐSQH Chuẩn hoá cho HQTCSDL quan hệ Được phát triển IBM (1970s) Các version Standard ANSI/ISO SQL-86 (SQL1) SQL-92 (SQL2) SQL-99 (SQL3) Nhiều phiên cài đặt SQL Server Oracle 3/6/2008 Ôn thi Cao học 2008 Giới thiệu (tt) tt) SQL hỗ trợ Ngôn ngữ Định nghĩa liệu (DDL) Mức Quan niệm : CREATE SCHEMA, TABLE, Mức : CREATE VIEW, GRANT,… Mức : CREATE INDEX, CLUSTER, Ngôn ngữ Thao tác liệu (DML) Truy vấn : SELECT Cập nhật : INSERT, DELETE, UPDATE Ngôn ngữ khai báo Ràng buộc toàn vẹn Phân quyền bảo mật Điều khiển giao tác 3/6/2008 Ôn thi Cao học 2008 Định nghĩa liệu Là ngôn ngữ mô tả Lược đồ cho quan hệ Miền giá trị tương ứng thuộc tính Ràng buộc tồn vẹn Chỉ mục quan hệ Gồm CREATE TABLE (tạo bảng) DROP TABLE (xóa bảng) ALTER TABLE (sửa bảng) CREATE DOMAIN (tạo miền giá trị) CREATE DATABASE … 3/6/2008 Ôn thi Cao học 2008 Truy vấn liệu Là ngơn ngữ rút trích liệu thỏa số điều kiện Dựa phép tốn đại số quan hệ + số mở rộng Bảng bag ≠ quan hệ set Cho phép bảng có nhiều dòng trùng Hỗ trợ truy vấn Cơ : Chọn, Chiếu, Kết Tập hợp, so sánh tập hợp truy vấn lồng Hàm kết hợp gom nhóm Một số kiểu truy vấn khác 3/6/2008 Ơn thi Cao học 2008 Truy vấn Cú pháp SELECT FROM WHERE Tên cột cần hiển thị kết truy vấn Tên bảng liên quan đến câu truy vấn Biểu thức boolean xác định dòng rút trích Nối biểu thức: AND, OR, NOT Phép toán: < , > , ≤ , ≥ , ≠ , =, LIKE BETWEEN 3/6/2008 Ôn thi Cao học 2008 Truy vấn (tt) tt) SQL ĐSQH π SELECT × FROM σ WHERE SELECT L π σ FROM R C (R)) L( WHERE C 3/6/2008 Ôn thi Cao học 2008 CSDL mẫu NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,LUONG,MA_NQL,PHG) PHONGBAN(TENPHG,MAPHG,TRPHG,NG_NHANCHUC) PHANCONG(MA_NVIEN,SODA,THOIGIAN) THANNHAN(MA_NVIEN,TENTN,PHAI,NGSINH,QUANHE) DEAN(TENDA,MADA,DDIEM_DA,PHONG) DIADIEM_PHG(MAPHG,DIADIEM) 3/6/2008 Ôn thi Cao học 2008 Ví dụ Lấy tất cột quan hệ kết SELECT * FROM NHANVIEN WHERE PHG=5 MANV HONV TENLOT 333445555 Nguyen 987987987 Nguyen TENNV NGSINH DCHI Thanh Tung 12/08/1955 638 NVC Q5 Manh Hung 09/15/1962 Ba Ria VT σ PHG=5 3/6/2008 LUONG MA_NQL Nam 40000 888665555 Nam 38000 333445555 PHAI PHG (NHANVIEN) Ôn thi Cao học 2008 Mệnh đề SELECT SELECT MANV, HONV, TENLOT, TENNV FROM NHANVIEN WHERE PHG=5 AND PHAI=‘Nam’ MANV 3/6/2008 TENLOT Nguyen Thanh Tung 987987987 π HONV 333445555 Nguyen Manh Hung MANV,HONV,TENLOT,TENNV( σ TENNV PHG=5 ∧ PHAI=‘Nam’ Ôn thi Cao học 2008 (NHANVIEN)) 10 Mệnh đề SELECT (tt) (tt) Tên bí danh SELECT MANV, HONV AS HO, TENLOT AS ‘TEN LOT’, TENNV AS TEN FROM NHANVIEN WHERE PHG=5 AND PHAI=‘Nam’ MANV Nguyen Thanh Tung 987987987 Nguyen Manh Hung π ( MANV,HO,TEN LOT,TEN TEN LOT 333445555 ρ HO TEN σ MANV,HONV,TENLOT,TENNV( 3/6/2008 PHG=5∧PHAI=‘Nam’(NHANVIEN))) Ôn thi Cao học 2008 11 Mệnh đề SELECT (tt) (tt) Mở rộng SELECT MANV, HONV + ‘ ’ + TENLOT + ‘ ’ + TENNV AS ‘HO TEN’ FROM NHANVIEN WHERE PHG=5 AND PHAI=‘Nam’ MANV HO TEN 333445555 ρ π MANV,HO TEN( 3/6/2008 Nguyen Thanh Tung 987987987 Nguyen Manh Hung σ MANV,HONV+TENLOT+TENNV( Ôn thi Cao học 2008 PHG=5∧PHAI=‘Nam’(NHANVIEN))) 12 Mệnh đề SELECT (tt) (tt) Mở rộng SELECT MANV, LUONG*1.1 AS ‘LUONG10%’ FROM NHANVIEN WHERE PHG=5 AND PHAI=‘Nam’ MANV 333445555 33000 987987987 ρ LUONG10% 27500 π MANV,LUONG10%( σ MANV,LUONG*1.1( 3/6/2008 PHG=5∧PHAI=‘Nam’(NHANVIEN))) Ôn thi Cao học 2008 13 Mệnh đề SELECT (tt) (tt) Loại bỏ dòng trùng SELECT LUONG DISTINCT LUONG FROM NHANVIEN WHERE PHG=5 AND PHAI=‘Nam’ LUONG 30000 - Tốn chi phí 25000 - Người dùng muốn thấy 38000 25000 38000 3/6/2008 Ơn thi Cao học 2008 14 Ví dụ Cho biết MANV TENNV làm việc phòng ‘Nghien cuu’ NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,LUONG,MA_NQL,PHG) PHONGBAN(TENPHG,MAPHG,TRPHG,NG_NHANCHUC) ← NHANVIEN PHG=MAPHG PHONGBAN KQ ← πMANV, TENNV (σTENPHG=‘Nghien cuu’(R1)) R1 SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE TENPHG=‘Nghien cuu’ AND 3/6/2008 PHG=MAPHG Ôn thi Cao học 2008 15 Mệnh đề WHERE SELECT MANV, TENNV Biểu thức luận lý FROM NHANVIEN, PHONGBAN WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG TRUE 3/6/2008 TRUE Ôn thi Cao học 2008 16 Mệnh đề WHERE (tt) (tt) BETWEEN SELECT MANV, TENNV FROM NHANVIEN WHERE LUONG>20000 AND LUONG 20000 SELECT PHG, TENPHG, AVG(LUONG) AS LUONG_TB FROM NHANVIEN, PHONGBAN WHERE PHG=MAPHG GROUP BY PHG, TENPHG HAVING AVG(LUONG) > 20000 3/6/2008 Ơn thi Cao học 2008 79 Ví dụ 18 Cho biết phịng ban (TENPHG) có lương trung bình nhân viên lớn lơn 20000 SELECT TENPHG, TEMP.LUONG_TB FROM PHONGBAN, (SELECT PHG, AVG(LUONG) AS LUONG_TB FROM NHANVIEN GROUP BY PHG HAVING AVG(LUONG)> 20000 ) AS TEMP WHERE MAPHG=TEMP.PHG 3/6/2008 Ôn thi Cao học 2008 80 40 Điều kiện kết mệnh đề FROM Kết SELECT FROM R1 [INNER] JOIN R2 ON WHERE Kết SELECT FROM R1 LEFT|RIGHT [OUTER] JOIN R2 ON WHERE 3/6/2008 Ôn thi Cao học 2008 81 Ví dụ 20 Tìm mã tên nhân viên làm việc phòng ‘Nghien cuu’ SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG SELECT MANV, TENNV FROM NHANVIEN INNER JOIN PHONGBAN ON PHG=MAPHG WHERE TENPHG=‘Nghien cuu’ 3/6/2008 Ơn thi Cao học 2008 82 41 Ví dụ 21 Cho biết họ tên nhân viên tên phịng ban mà họ trưởng phịng có TENNV HONV TENPHG Nghien cuu Tung Nguyen Hang Bui null Nhu Le null Vinh Pham Quan ly SELECT TENNV, HONV, TENPHG FROM NHANVIEN, PHONGBAN WHERE MANV=TRPHG 3/6/2008 Ôn thi Cao học 2008 83 Ví dụ 21 (tt) (tt) TENNV HONV TENPHG Nghien cuu Tung Bui null Nhu Mở rộng liệu cho bảng NHANVIEN Nguyen Hang Le null Vinh Pham Quan ly NHANVIEN join PHONGBAN MANV=TRPHG SELECT TENNV, HONV, TENPHG FROM NHANVIEN LEFT JOIN PHONGBAN ON MANV=TRPHG 3/6/2008 Ôn thi Cao học 2008 84 42 Ví dụ 21 (tt) (tt) TENNV HONV TENPHG Nghien cuu Tung Bui null Nhu Mở rộng liệu cho bảng NHANVIEN Nguyen Hang Le null Vinh Pham Quan ly PHONGBAN join NHANVIEN TRPHG=MANV SELECT TENNV, HONV, TENPHG FROM PHONGBAN RIGHT JOIN NHANVIEN ON MANV=TRPHG 3/6/2008 Ôn thi Cao học 2008 85 Ví dụ 22 Tìm họ tên nhân viên tên đề án nhân viên tham gia có PHANCONG join DEAN join NHANVIEN MA_NVIEN=MANV SELECT NV.TENNV, NV.TENDA FROM (PHANCONG PC JOIN DEAN DA ON SODA=MADA) RIGHT JOIN NHANVIEN NV ON PC.MA_NVIEN=NV.MANV 3/6/2008 Ôn thi Cao học 2008 86 43 Cấu trúc CASE Cho phép kiểm tra điều kiện xuất thông tin theo trường hợp Cú pháp CASE WHEN THEN WHEN THEN … [ELSE ] END 3/6/2008 Ôn thi Cao học 2008 87 Ví dụ 23 Cho biết họ tên nhân viên đến tuổi hưu (nam 60 tuổi, nữ 55 tuổi) SELECT HONV, TENNV FROM NHANVIEN WHERE YEAR(GETDATE()) – YEAR(NGSINH) >= ( CASE PHAI WHEN 'Nam' THEN 60 WHEN 'Nu' THEN 55 END ) 3/6/2008 Ôn thi Cao học 2008 88 44 Ví dụ 24 Cho biết họ tên nhân viên năm hưu SELECT HONV, TENNV, (CASE PHAI WHEN 'Nam' THEN YEAR(NGSINH) + 60 WHEN 'Nu‘ THEN YEAR(NGSINH) + 55 END ) AS NAMVEHUU FROM NHANVIEN 3/6/2008 Ôn thi Cao học 2008 89 Kết luận SELECT FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] 3/6/2008 Ôn thi Cao học 2008 90 45 Cập nhật liệu Cập nhật liệu Thêm (insert) Xóa (delete) Sửa (update) 3/6/2008 Ơn thi Cao học 2008 91 Lệnh INSERT Dùng để thêm hay nhiều dòng vào bảng Để thêm liệu Tên quan hệ Danh sách thuộc tính cần thêm liệu Danh sách giá trị tương ứng 3/6/2008 Ôn thi Cao học 2008 92 46 Lệnh INSERT (tt) (tt) Cú pháp (thêm dòng) INSERT INTO () VALUES () 3/6/2008 Ơn thi Cao học 2008 93 Ví dụ INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV) VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’) INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV, DCHI) VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, NULL) INSERT INTO NHANVIEN VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, ’12/30/1952’, ’98 HV’, ‘Nam’, ‘37000’, 4) 3/6/2008 Ôn thi Cao học 2008 94 47 Lệnh INSERT (tt) (tt) Nhận xét Thứ tự giá trị phải trùng với thứ tự cột Có thể thêm giá trị NULL thuộc tính khơng khóa NOT NULL Câu lệnh INSERT gặp lỗi vi phạm RBTV Khóa Tham chiếu NOT NULL - thuộc tính có ràng buộc NOT NULL bắt buộc phải có giá trị 3/6/2008 Ơn thi Cao học 2008 95 Lệnh INSERT (tt) (tt) Cú pháp (thêm nhiều dòng) INSERT INTO () 3/6/2008 Ơn thi Cao học 2008 96 48 Ví dụ CREATE TABLE THONGKE_PB ( TENPHG VARCHAR(20), SL_NV INT, LUONG_TC INT ) INSERT INTO THONGKE_PB(TENPHG, SL_NV, LUONG_TC) SELECT TENPHG, COUNT(MANV), SUM(LUONG) FROM NHANVIEN, PHONGBAN WHERE PHG=MAPHG GROUP BY TENPHG 3/6/2008 Ôn thi Cao học 2008 97 Lệnh DELETE Dùng để xóa dịng bảng Cú pháp DELETE FROM [WHERE ] 3/6/2008 Ôn thi Cao học 2008 98 49 Ví dụ DELETE FROM NHANVIEN WHERE HONV=‘Tran’ DELETE FROM NHANVIEN WHERE MANV=‘345345345’ DELETE FROM NHANVIEN 3/6/2008 Ơn thi Cao học 2008 99 Ví dụ 25 Xóa nhân viên phịng ‘Nghien cuu’ DELETE FROM NHANVIEN WHERE PHG IN ( SELECT MAPHG FROM PHONGBAN WHERE TENPHG=‘Nghien cuu’) 3/6/2008 Ôn thi Cao học 2008 100 50 Lệnh DELETE (tt) (tt) Nhận xét Số lượng số dịng bị xóa phụ thuộc vào điều kiện mệnh đề WHERE Nếu không định điều kiện mệnh đề WHERE, tất dòng bảng bị xóa Lệnh DELETE gây vi phạm RB tham chiếu Khơng cho xóa Xóa ln dịng có giá trị tham chiếu đến CASCADE Đặt NULL cho giá trị tham chiếu 3/6/2008 Ôn thi Cao học 2008 101 Lệnh DELETE (tt) (tt) MANV HONV TENLOT 333445555 Nguyen 987987987 Nguyen 453453453 Tran Thanh 999887777 Bui Ngoc TENNV NGSINH DCHI Thanh Tung 12/08/1955 638 NVC Q5 Manh Hung 09/15/1962 Ba Ria VT Tam 07/31/1972 543 MTL Q1 Hang 07/19/1968 33 NTH Q1 LUONG MA_NQL Nam 40000 888665555 Nam 38000 333445555 Nu 25000 333445555 Nu 38000 987654321 4 PHAI PHG 987654321 Le Quynh Nhu 07620/1951 219 TD Q3 Nu 43000 888665555 987987987 Tran Hong Quang 04/08/1969 980 LHP Q5 Nam 25000 987654321 888665555 Pham Van Vinh 11/10/1945 450 TV HN Nam 55000 NULL MA_NVIEN SODA 333445555 10 888665555 20 20.0 987987987 10 35.0 987987987 30 5.0 987654321 30 20.0 20.0 453453453 3/6/2008 THOIGIAN 10.0 Ôn thi Cao học 2008 102 51 Lệnh DELETE (tt) (tt) TENPHG MAPHG MA_NVIEN NG_NHANCHUC Nghien cuu 333445555 05/22/1988 Dieu hanh 987987987 01/01/1995 Quan ly 888665555 06/19/1981 MANV HONV TENLOT 333445555 Nguyen 987987987 Nguyen 453453453 LUONG MA_NQL PHG Nam 40000 888665555 NULL Nam 38000 333445555 NULL Nu 25000 333445555 NULL 33 NTH Q1 Nu 38000 987654321 07620/1951 219 TD Q3 Nu 43000 888665555 Quang 04/08/1969 980 LHP Q5 Nam 25000 987654321 Vinh 11/10/1945 450 TV HN Nam 55000 NULL TENNV NGSINH DCHI Thanh Tung 12/08/1955 638 NVC Q5 Manh Hung 09/15/1962 Ba Ria VT Tran Thanh Tam 07/31/1972 543 MTL Q1 999887777 Bui Ngoc Hang 07/19/1968 987654321 Le Quynh Nhu 987987987 Tran Hong 888665555 Pham Van 3/6/2008 PHAI Ôn thi Cao học 2008 103 Lệnh UPDATE Dùng để thay đổi giá trị thuộc tính cho dòng bảng Cú pháp UPDATE SET =, =, … [WHERE ] 3/6/2008 Ôn thi Cao học 2008 104 52 Ví dụ UPDATE NHANVIEN SET NGSINH=’08/12/1965’ WHERE MANV=‘333445555’ UPDATE NHANVIEN SET LUONG=LUONG*1.1 3/6/2008 Ôn thi Cao học 2008 105 Ví dụ 26 Với đề án có mã số 10, thay đổi nơi thực đề án thành ‘Vung Tau’ phòng ban phụ trách phòng UPDATE DEAN SET DIADIEM_DA=’Vung Tau’, PHONG=5 WHERE MADA=10 3/6/2008 Ôn thi Cao học 2008 106 53 Lệnh UPDATE Nhận xét Những dòng thỏa điều kiện mệnh đề WHERE cập nhật giá trị Nếu không định điều kiện mệnh đề WHERE, tất dòng bảng bị cập nhật Lệnh UPDATE gây vi phạm RB tham chiếu Không cho sửa Sửa ln dịng có giá trị tham chiếu đến CASCADE 3/6/2008 Ôn thi Cao học 2008 107 54 ... BETWEEN ‘195 5-1 2-0 8’ AND ‘196 6-0 7-1 9’ ‘195 5-1 2-0 8’ YYYY-MM-DD ’17:30:00’ ’12/08/1955’ MM/DD/YYYY ’05:30 PM’ HH:MI:SS ‘December 8, 1955’ ‘195 5-1 2-0 8 17:30:00’ 3/6/2008 Ôn thi Cao học 2008 22 11... 3/6/2008 Ơn thi Cao học 2008 90 45 Cập nhật liệu Cập nhật liệu Thêm (insert) Xóa (delete) Sửa (update) 3/6/2008 Ôn thi Cao học 2008 91 Lệnh INSERT Dùng để thêm hay nhiều dòng vào bảng Để thêm liệu Tên... 3/6/2008 Ôn thi Cao học 2008 72 36 Ví dụ 18 Tìm phịng ban có lương trung bình cao SELECT PHG, AVG(LUONG) AS LUONG_TB FROM NHANVIEN GROUP BY PHG HAVING MAX(AVG(LUONG)) 3/6/2008 Ôn thi Cao học 2008

Ngày đăng: 01/05/2014, 09:30

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan