Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy
lượt xem 4
download
Bài giảng "Cơ sở dữ liệu - Chương 4: Ngôn ngữ truy vấn SQL" cung cấp cho người học các kiến thức: Giới thiệu, định nghĩa dữ liệu, truy vấn dữ liệu, cập nhật dữ liệu, khung nhìn (view), chỉ mục (index). Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy
- Chương 4 NGÔN NGỮ TRUY VẤN SQL CƠ SỞ DỮ LIỆU Khoa Công nghệ thông tin – Đại học Sài Gòn Nội dung chi tiết 1. Giới thiệu Ngôn ngữ ĐSQH 1. Giới thiệu – Cách thức truy vấn dữ liệu 2. Định nghĩa dữ liệu Khó khăn cho người sử dụng SQL (Structured Query Language) 3. Truy vấn dữ liệu – Ngôn ngữ cấp cao 4. Cập nhật dữ liệu – Người sử dụng chỉ cần đưa ra nội dung cần truy vấn – Được phát triển bởi IBM (1970s) 5. Khung nhìn (view) – Được gọi là SEQUEL (Structured English Query Language) – Được ANSI công nhận và phát triển thành chuẩn 6. Chỉ mục (index) • SQL-86 • SQL-92 • SQL-99 Khoa CNTT – Đại học Sài Gòn 3 Khoa CNTT – Đại học Sài Gòn 4 1
- 1. Giới thiệu 1. Giới thiệu SQL gồm SQL thao tác trên mô hình vật lý của Cơ sở dữ liệu. – Định nghĩa dữ liệu (DDL) Mô hình vật lý có cấu trúc tương tự với mô hình dữ liệu quan – Thao tác dữ liệu (DML) hệ, trong đó gồm các khái niệm: – Định nghĩa khung nhìn Lý thuyết : Chuẩn SQL-92 – Bảng ~ quan hệ – Ràng buộc toàn vẹn Ví dụ : SQL Server – Cột ~ thuộc tính – Phân quyền và bảo mật – Dòng ~ bộ – Điều khiển giao tác Với mô hình vật lý, ta cần xác định cụ thể kiểu dữ liệu của SQL sử dụng thuật ngữ từng thuộc tính. – Bảng ~ quan hệ – Cột ~ thuộc tính – Dòng ~ bộ Khoa CNTT – Đại học Sài Gòn 5 Khoa CNTT – Đại học Sài Gòn 6 Giới thiệu Microsoft SQL Server Giao diện đăng nhập Là chương trình giúp tạo, quản lý và truy xuất cơ sở dữ liệu do Microsoft phát hành. Sử dụng mô hình CSDL quan hệ. Ngôn ngữ truy xuất dữ liệu là ANSI-SQL. Không phân biệt chữ hoa với chữ thường. Có kèm tài liệu tham khảo với tên gọi Books Online: – Hỗ trợ xem thông tin các lệnh. – Tìm kiếm từ khóa. – Đầy đủ cấu trúc các lệnh SQL. – Có ví dụ tham khảo. Khoa CNTT – Đại học Sài Gòn 7 Khoa CNTT – Đại học Sài Gòn 8 2
- Giao diện làm việc Giao diện truy vấn Khoa CNTT – Đại học Sài Gòn 9 Khoa CNTT – Đại học Sài Gòn 10 Các thao tác cơ bản Lệnh GO Muốn chạy một lệnh nào đó: Lệnh GO (GO command) không phải là một từ khóa của – Chọn lệnh cần chạy. SQL (SQL statement). – Nhấn F5 hoặc nhấn nút Execute. GO là một lệnh được nhận bởi trình biên dịch MS SQL code – Nếu chạy thành công: editor. Xem các đối tượng đang quản lý GO đánh dấu kết thúc 1 tập lệnh SQL (batch) trong hệ thống: Mỗi tập lệnh SQL sẽ được thực thi đồng thời, nếu xảy ra lỗi – Mở rộng các đối tượng tương ứng bên cửa sổ Object Explorer ở bất kì lệnh nào sẽ hủy bỏ toàn bộ lệnh của tập lệnh đó. – Có thể click phải chuột để hiện menu ngữ cảnh. Khoa CNTT – Đại học Sài Gòn 11 Khoa CNTT – Đại học Sài Gòn 12 3
- Lệnh GO 2. Định nghĩa dữ liệu Phân biệt: Là ngôn ngữ mô tả (DDL) drop database test – Tạo CSDL – Lược đồ cho mỗi quan hệ create database test – Miền giá trị tương ứng của từng thuộc tính use test – Ràng buộc toàn vẹn – Chỉ mục trên mỗi quan hệ Gồm drop database test – CREATE TABLE (tạo bảng) GO – DROP TABLE (xóa bảng) create database test – ALTER TABLE (sửa bảng) GO – CREATE DOMAIN (tạo miền giá trị) use test – CREATE DATABASE GO – … Khoa CNTT – Đại học Sài Gòn 13 Khoa CNTT – Đại học Sài Gòn 14 a. Kiểu dữ liệu a. Kiểu dữ liệu Số (numeric) Chuỗi ký tự (character string) – INTEGER – CHARACTER, CHARACTER(n) – CHARACTER VARYING(x) – SMALLINT Chuỗi bit (bit string) – NUMERIC, NUMERIC(p), NUMERIC(p,s) – BIT, BIT(x) – DECIMAL, DECIMAL(p), DECIMAL(p,s) – BIT VARYING(x) – REAL Ngày giờ (datetime) – DOUBLE PRECISION – DATE gồm ngày, tháng và năm – TIME gồm giờ, phút và giây – FLOAT, FLOAT(p) – TIMESTAMP gồm ngày và giờ Khoa CNTT – Đại học Sài Gòn 15 Khoa CNTT – Đại học Sài Gòn 16 4
- b. Tạo CSDL b. Tạo CSDL Mỗi CSDL (trong MS SQL Server) có tên duy nhất. CREATE DATABASE database_name [ Mỗi CSDL gồm 2 tập tin vật lý: ON – Tập tin .MDF: lưu trữ nội dung CSDL [ PRIMARY ] [ [ ,...n ] – Tập tin .LDF: lưu trữ log [ , [ ,...n ] ] [ LOG ON { [ ,...n ] } ] Sau khi chạy, đọc thông báo thành công hay thất bại trong ] cửa sổ Message. [ COLLATE collation_name ] Dựa vào thông báo lỗi để biết được nguyên nhân lỗi. [ WITH ] ] Sau khi chạy lệnh tạo CSDL, nhớ refresh Database. [;] Khoa CNTT – Đại học Sài Gòn 17 Khoa CNTT – Đại học Sài Gòn 18 b. Tạo CSDL b. Tạo CSDL ::= Tạo CSDL đơn giản không tham số: { CREATE DATABASE TEST ( Tạo CSDL chỉ định đường dẫn nơi chứa CSDL: NAME = logical_file_name , CREATE DATABASE QLNV FILENAME = 'os_file_name' ON ( NAME = 'QLNV_Data', [ , SIZE = size [ KB | MB | GB | TB ] ] FILENAME = 'D:\QLNV_Data.mdf', SIZE = 10MB, [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | MAXSIZE = UNLIMITED, UNLIMITED } ] FILEGROWTH = 5MB) LOG ON ( [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB NAME = 'QLNV_Log', FILENAME = 'D:\QLNV_Log.ldf', |%]] SIZE = 5MB, ) [ ,...n ] MAXSIZE = UNLIMITED, FILEGROWTH = 2MB) } Khoa CNTT – Đại học Sài Gòn 19 Khoa CNTT – Đại học Sài Gòn 20 5
- c. Chỉnh sửa CSDL d. Xóa CSDL Lệnh chỉnh sửa chung thường là ALTER + Loại + Tên đối Lệnh xóa chung thường là DROP + Loại + Tên đối tượng tượng: ALTER DATABASE database_name DROP DATABASE { | | Ví dụ: | MODIFY NAME = new_database_name | COLLATE collation_name DROP DATABASE test } Ví dụ: [;] ALTER DATABASE AdventureWorks MODIFY FILE ( NAME = Test1dat2, FILENAME = N'c:\t1dat2.ndf‘ ); Khoa CNTT – Đại học Sài Gòn 21 Khoa CNTT – Đại học Sài Gòn 22 e. Lệnh tạo bảng Ví dụ - Tạo bảng Để định nghĩa một bảng CREATE TABLE NHANVIEN ( – Tên bảng MANV CHAR(9), – Các thuộc tính HONV VARCHAR(10), TENLOT VARCHAR(20), • Tên thuộc tính TENNV VARCHAR(10), • Kiểu dữ liệu NGSINH DATETIME, DCHI VARCHAR(50), • Các RBTV trên thuộc tính PHAI CHAR(3), Cú pháp LUONG INT, CREATE TABLE MA_NQL CHAR(9), ( PHG INT [], ) [], … [] ) Khoa CNTT – Đại học Sài Gòn 23 Khoa CNTT – Đại học Sài Gòn 24 6
- e. Lệnh tạo bảng Ví dụ - Tạo bảng có kèm RBTV CREATE TABLE NHANVIEN – NOT NULL ( HONV VARCHAR(10) NOT NULL, – NULL TENLOT VARCHAR(20) NOT NULL, – UNIQUE (Khóa chỉ định) TENNV VARCHAR(10) NOT NULL, – DEFAULT MANV CHAR(9) PRIMARY KEY, – PRIMARY KEY NGSINH DATETIME, DCHI VARCHAR(50), – FOREIGN KEY / REFERENCES PHAI CHAR(3) CHECK (PHAI IN (‘Nam’, ‘Nu’)), – CHECK LUONG INT DEFAULT (10000), Đặt tên cho RBTV MA_NQL CHAR(9), PHG INT CONSTRAINT ) Khoa CNTT – Đại học Sài Gòn 25 Khoa CNTT – Đại học Sài Gòn 26 Ví dụ - Tạo bảng có kèm RBTV Ví dụ - RBTV có đặt tên CREATE TABLE PHONGBAN CREATE TABLE NHANVIEN ( ( TENPB VARCHAR(20) UNIQUE, HONV VARCHAR(10) CONSTRAINT NV_HONV_NN NOT NULL, MAPHG INT NOT NULL, TRPHG CHAR(9), TENLOT VARCHAR(20) NOT NULL, NG_NHANCHUC DATETIME DEFAULT (GETDATE()) TENNV VARCHAR(10) NOT NULL, ) MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY, NGSINH DATETIME, CREATE TABLE PHANCONG DCHI VARCHAR(50), ( PHAI CHAR(3) CONSTRAINT NV_PHAI_CHK MA_NVIEN CHAR(9) FOREIGN KEY (MA_NVIEN) CHECK (PHAI IN (‘Nam’, ‘Nu’)), REFERENCES NHANVIEN(MANV), LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (10000), MA_NQL CHAR(9), SODA INT REFERENCES DEAN(MADA), PHG INT THOIGIAN DECIMAL(3,1) ) ) Khoa CNTT – Đại học Sài Gòn 27 Khoa CNTT – Đại học Sài Gòn 28 7
- Ví dụ - RBTV có đặt tên f. Lệnh sửa bảng CREATE TABLE PHANCONG Được dùng để ( – Thay đổi cấu trúc bảng MA_NVIEN CHAR(9), – Thay đổi RBTV SODA INT, Thêm cột THOIGIAN DECIMAL(3,1), ALTER TABLE ADD [] CONSTRAINT PC_MANVIEN_SODA_PK PRIMARY KEY Xóa cột (MA_NVIEN, SODA), CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN) ALTER TABLE DROP COLUMN REFERENCES NHANVIEN(MANV), Mở rộng cột CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA) ALTER TABLE ALTER COLUMN REFERENCES DEAN(MADA) ) Khoa CNTT – Đại học Sài Gòn 29 Khoa CNTT – Đại học Sài Gòn 30 f. Lệnh sửa bảng Ví dụ - Thay đổi cấu trúc bảng Thêm RBTV ALTER TABLE NHANVIEN ADD NGHENGHIEP CHAR(20) ALTER TABLE ADD CONSTRAINT , ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP CONSTRAINT , … ALTER TABLE NHANVIEN ALTER COLUMN NGHENGHIEP CHAR(50) Xóa RBTV ALTER TABLE DROP Khoa CNTT – Đại học Sài Gòn 31 Khoa CNTT – Đại học Sài Gòn 32 8
- Ví dụ - Thay đổi RBTV Ví dụ - Thay đổi RBTV khóa ngoại CREATE TABLE PHONGBAN CREATE TABLE NHANVIEN ( ( TENPB VARCHAR(20), MANV VARCHAR(20) PRIMARY KEY, MAPHG INT NOT NULL, HOTEN NVARCHAR(50) TRPHG CHAR(9), ) NG_NHANCHUC DATETIME ) ALTER TABLE PHONGBAN ADD TRGPHG VARCHAR(20) ALTER TABLE PHONGBAN ADD CONSTRAINT PB_MAPHG_PK PRIMARY KEY (MAPHG), ALTER TABLE PHONGBAN CONSTRAINT PB_TRPHG FOREIGN KEY (TRPHG) ADD CONSTRAINT PB_TRGPHG_FK FOREIGN KEY REFERENCES NHANVIEN(MANV), (TRGPHG) REFERENCES NHANVIEN(MANV) ON DELETE CASCADE CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE()) FOR (NG_NHANCHUC), CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB) Khoa CNTT – Đại học Sài Gòn 33 Khoa CNTT – Đại học Sài Gòn 34 g. Lệnh xóa bảng g. Lệnh xóa bảng Trình tự xóa bảng như sau: Được dùng để xóa cấu trúc bảng 2 NHANVIEN – Tất cả dữ liệu của bảng cũng bị xóa HONV TENLOT TENNV MANV NGSINH DCHI PHAI LUONG MA_NQL PHG Cú pháp 1 DROP TABLE PHONGBAN 3 TENPHG MAPHG TRPHG NG_NHANCHUC Ví dụ DROP TABLE NHANVIEN 1. ALTER TABLE PHONGBAN DROP COLUMN TRPHG DROP TABLE PHONGBAN Hay ALTER TABLE PHONGBANDROP fk_PHONGBAN DROP TABLE PHANCONG 2. DROP TABLE NHANVIEN 3. DROP TABLE PHONGBAN Khoa CNTT – Đại học Sài Gòn 35 Khoa CNTT – Đại học Sài Gòn 36 9
- k. Lệnh tạo miền giá trị 3. Truy vấn dữ liệu Tạo ra một kiểu dữ liệu mới kế thừa những kiểu dữ liệu có Là ngôn ngữ rút trích dữ liệu thỏa một số điều kiện nào đó sẳn Dựa trên Cú pháp Phép toán ĐSQH Một số bổ sung CREATE DOMAIN AS Ví dụ – Cho phép 1 bảng có nhiều dòng trùng nhau CREATE DOMAIN Kieu_Ten AS VARCHAR(30) Khoa CNTT – Đại học Sài Gòn 37 Khoa CNTT – Đại học Sài Gòn 38 a. Truy vấn cơ bản a. Truy vấn cơ bản Gồm 3 mệnh đề SQL và ĐSQH SELECT FROM SELECT WHERE FROM WHERE – • Tên các cột cần được hiển thị trong kết quả truy vấn – • Tên các bảng liên quan đến câu truy vấn SELECT L – FROM R L (C (R)) • Biểu thức boolean xác định dòng nào sẽ được rút trích WHERE C • Nối các biểu thức: AND, OR, và NOT • Phép toán: , , , , , , LIKE và BETWEEN Khoa CNTT – Đại học Sài Gòn 39 Khoa CNTT – Đại học Sài Gòn 40 10
- Ví dụ Mệnh đề SELECT Lấy tất cả các cột SELECT MANV, HONV, TENLOT, TENNV SELECT * của quan hệ kết quả FROM NHANVIEN FROM NHANVIEN WHERE PHG=5 WHERE PHG=5 AND PHAI=‘Nam’ AND PHAI='Nam' MANV HONV TENLOT TENNV MANV HONV TENLOT TENNV NGSINH DCHI PHAI LUONG MA_NQL PHG 333445555 Nguyen Thanh Tung 333445555 Nguyen Thanh Tung 12/08/1955 638 NVC Q5 Nam 40000 888665555 5 987987987 Nguyen Manh Hung 987987987 Nguyen Manh Hung 09/15/1962 Ba Ria VT Nam 38000 333445555 5 MANV,HONV,TENLOT,TENNV( PHG=5 PHAI=‘Nam’ (NHANVIEN)) PHG=5PHAI=‘Nam’ (NHANVIEN) Khoa CNTT – Đại học Sài Gòn 41 Khoa CNTT – Đại học Sài Gòn 42 Mệnh đề SELECT Mệnh đề SELECT Tên bí danh Mở rộng SELECT MANV, HONV AS HO, TENLOT AS ‘TEN LOT’, TENNV AS TEN SELECT MANV, HONV + ‘ ’ + TENLOT + ‘ ’ + TENNV AS ‘HO TEN’ FROM NHANVIEN FROM NHANVIEN WHERE PHG=5 AND PHAI=‘Nam’ WHERE PHG=5 AND PHAI=‘Nam’ MANV HO TEN LOT TEN MANV HO TEN 333445555 Nguyen Thanh Tung 333445555 Nguyen Thanh Tung 987987987 Nguyen Manh Hung 987987987 Nguyen Manh Hung MANV,HO,TEN LOT,TEN ( MANV,HONV,TENLOT,TENNV( PHG=5PHAI=‘Nam’(NHANVIEN))) MANV,HO TEN( MANV,HONV+TENLOT+TENNV( PHG=5PHAI=‘Nam’(NHANVIEN))) Khoa CNTT – Đại học Sài Gòn 43 Khoa CNTT – Đại học Sài Gòn 44 11
- Mệnh đề SELECT Mệnh đề SELECT Mở rộng Loại bỏ các dòng trùng nhau SELECT MANV, LUONG*1.1 AS ‘LUONG10%’ SELECT LUONG DISTINCT LUONG FROM NHANVIEN FROM NHANVIEN WHERE PHG=5 AND PHAI=‘Nam’ WHERE PHG=5 AND PHAI=‘Nam’ MANV LUONG10% 333445555 33000 LUONG 987987987 27500 30000 25000 - Tốn chi phí 25000 38000 - Người dùng muốn thấy MANV,LUONG10%( MANV,LUONG*1.1( PHG=5PHAI=‘Nam’(NHANVIEN))) 38000 Khoa CNTT – Đại học Sài Gòn 45 Khoa CNTT – Đại học Sài Gòn 46 Ví dụ Mệnh đề WHERE Cho biết MANV và TENNV làm việc ở phòng ‘Nghien cuu’ R1 NHANVIEN PHG=MAPHG PHONGBAN SELECT MANV, TENNV Biểu thức luận lý KQ MANV, TENNV ( TENPHG=‘Nghien cuu’(R1)) FROM NHANVIEN, PHONGBAN WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG SELECT MANV, TENNV TRUE TRUE FROM NHANVIEN, PHONGBAN WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG Khoa CNTT – Đại học Sài Gòn 47 Khoa CNTT – Đại học Sài Gòn 48 12
- Mệnh đề WHERE Mệnh đề WHERE BETWEEN Độ ưu tiên SELECT MANV, TENNV SELECT MANV, TENNV FROM NHANVIEN FROM NHANVIEN, PHONGBAN WHERE LUONG>20000 AND LUONG
- Mệnh đề WHERE Mệnh đề WHERE NOT LIKE Escape SELECT MANV, TENNV SELECT MANV, TENNV FROM NHANVIEN FROM NHANVIEN WHERE HONV LIKE ‘Nguyen’ WHERE DCHI LIKE ‘% Nguyens_%’ ESCAPE ‘s’ SELECT MANV, TENNV ‘Nguyen_’ FROM NHANVIEN WHERE HONV NOT NOT LIKE ‘Nguyen’ Khoa CNTT – Đại học Sài Gòn 53 Khoa CNTT – Đại học Sài Gòn 54 Mệnh đề WHERE Mệnh đề WHERE NULL Ngày giờ – Sử dụng trong trường hợp SELECT MANV, TENNV • Không biết (value unknown) • Không thể áp dụng (value inapplicable) FROM NHANVIEN • Không tồn tại (value withheld) WHERE NGSINH BETWEEN ‘1955-12-08’ AND ‘1966-07-19’ – Những biểu thức tính toán có liên quan đến giá trị NULL sẽ cho ra kết quả là NULL • x có giá trị là NULL ‘1955-12-08’ YYYY-MM-DD ’17:30:00’ HH:MI:SS • x + 3 cho ra kết quả là NULL ’12/08/1955’ MM/DD/YYYY ’05:30 PM’ • x + 3 là một biểu thức không hợp lệ trong SQL ‘December 8, 1955’ – Những biểu thức so sánh có liên quan đến giá trị NULL sẽ cho ra kết quả là UNKNOWN ‘1955-12-08 17:30:00’ • x = 3 cho ra kết quả là UNKNOWN • x = 3 là một so sánh không hợp lệ trong SQL Khoa CNTT – Đại học Sài Gòn 55 Khoa CNTT – Đại học Sài Gòn 56 14
- Mệnh đề WHERE Mệnh đề WHERE NULL Khi không có mệnh đề WHERE Tương đương với WHERE SELECT MANV, TENNV (mệnh đề luôn đúng) FROM NHANVIEN SELECT * WHERE MA_NQL IS NULL FROM PHONGBAN WHERE 1=1 SELECT MANV, TENNV FROM NHANVIEN WHERE MA_NQL IS NOT NULL Khoa CNTT – Đại học Sài Gòn 57 Khoa CNTT – Đại học Sài Gòn 58 Mệnh đề WHERE Mệnh đề FROM Điều kiện kết của phép kết cũng được thể hiện thông qua SELECT MANV, MAPHG mệnh đề WHERE còn các quan hệ trong phép kết được thể FROM NHANVIEN, PHONGBAN hiện trong mệnh đề FROM. Ví dụ: Với mỗi phòng ban hãy cho biết các địa điểm của phòng WHERE TRUE ban đó MANV MAPHG PHONGBAN(TENPHG, MAPHG, TRPHG, NG_NHANCHUC) 333445555 1 333445555 4 DIADIEMPHG(MAPHG, DIADIEM) KQ PHONGBAN 333445555 5 987987987 1 MAPHG=MAPHG DIADIEMPHG 987987987 4 SELECT * 987987987 5 … … FROM PHONGBAN, DIADIEMPHG WHERE PHONGBAN.MAPHG=DIADIEMPHG.MAPHG Khoa CNTT – Đại học Sài Gòn 59 Khoa CNTT – Đại học Sài Gòn 60 15
- Mệnh đề FROM Tên bí danh SELECT TENPHG, DIADIEM FROM PHONGBAN, DDIEM_PHG WHERE MAPHG=MAPHG SELECT TENPHG, DIADIEM FROM PHONGBAN AS PB, DDIEM_PHG AS DD WHERE PB.MAPHG=DD.MAPHG SELECT TENNV, NGSINH, TENTN, NGSINH FROM NHANVIEN, THANNHAN WHERE MANV=MA_NVIEN SELECT TENNV, NV.NGSINH, TENTN, TN.NGSINH FROM NHANVIEN NV, THANNHAN TN WHERE MANV=MA_NVIEN Khoa CNTT – Đại học Sài Gòn 61 Khoa CNTT – Đại học Sài Gòn 62 Ví dụ 1 Ví dụ 2 Với những đề án ở ‘Ha Noi’, cho biết mã đề án, mã phòng Tìm họ tên của nhân viên phòng số 5 có tham gia vào đề ban chủ trì đề án, họ tên trưởng phòng cùng với ngày sinh án “Sản phẩm X” với số giờ làm việc trên 10 giờ và địa chỉ của người ấy Khoa CNTT – Đại học Sài Gòn 63 Khoa CNTT – Đại học Sài Gòn 64 16
- Ví dụ 3 Ví dụ 4 Tìm họ tên của từng nhân viên và người phụ trách trực tiếp Tìm họ tên của những nhân viên được “Nguyen Thanh nhân viên đó Tung” phụ trách trực tiếp Khoa CNTT – Đại học Sài Gòn 65 Khoa CNTT – Đại học Sài Gòn 66 Mệnh đề ORDER BY Mệnh đề ORDER BY Dùng để hiển thị kết quả câu truy vấn theo một thứ tự nào đó Ví dụ SELECT MA_NVIEN, SODA Cú pháp FROM PHANCONG SELECT ORDER BY MA_NVIEN DESC, SODA FROM MA_NVIEN SODA WHERE 999887777 10 ORDER BY 999887777 30 987987987 10 987987987 30 – ASC: tăng (mặc định) 987654321 10 – DESC: giảm 987654321 20 987654321 30 Khoa CNTT – Đại học Sài Gòn 67 Khoa CNTT – Đại học Sài Gòn 68 17
- b. Phép toán tập hợp trong SQL a. Phép toán tập hợp trong SQL SQL có cài đặt các phép toán Cú pháp SELECT FROM WHERE – Hợp (UNION) UNION [ALL] – Giao (INTERSECT) SELECT FROM WHERE – Trừ (EXCEPT) SELECT FROM WHERE Kết quả trả về là tập hợp INTERSECT [ALL] – Loại bỏ các bộ trùng nhau SELECT FROM WHERE – Để giữ lại các bộ trùng nhau • UNION ALL SELECT FROM WHERE • INTERSECT ALL EXCEPT [ALL] • EXCEPT ALL SELECT FROM WHERE Khoa CNTT – Đại học Sài Gòn 69 Khoa CNTT – Đại học Sài Gòn 70 Ví dụ 5 Ví dụ 6 Cho biết các mã đề án có Tìm nhân viên có người thân cùng tên và cùng giới tính – Nhân viên với họ là ‘Nguyen’ tham gia hoặc, – Trưởng phòng chủ trì đề án đó với họ là ‘Nguyen’ SELECT TENNV, PHAI FROM NHANVIEN SELECT SODA INTERSECT FROM NHANVIEN, PHANCONG SELECT TENTN, PHAI FROM THANNHAN WHERE MANV=MA_NVIEN AND HONV=‘Nguyen’ UNION SELECT NV.* SELECT MADA FROM NHANVIEN NV, THANNHAN TN FROM NHANVIEN, PHONGBAN, DEAN WHERE NV.MANV=TN.MA_NVIEN WHERE MANV=TRPHG AND MAPHG=PHONG AND NV.TENNV=TN.TENTN AND NV.PHAI=TN.PHAI AND HONV=‘Nguyen’ Khoa CNTT – Đại học Sài Gòn 71 Khoa CNTT – Đại học Sài Gòn 72 18
- Ví dụ 7 Truy vấn lồng Tìm những nhân viên không có thân nhân nào SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG SELECT MANV FROM NHANVIEN Câu truy vấn cha EXCEPT (Outer query) SELECT MA_NVIEN AS MANV FROM THANNHAN SELECT FROM WHERE ( SELECT FROM Câu truy vấn con (Subquery) WHERE ) Khoa CNTT – Đại học Sài Gòn 73 Khoa CNTT – Đại học Sài Gòn 74 Truy vấn lồng Truy vấn lồng Các câu lệnh SELECT có thể lồng nhau ở nhiều mức Có 2 loại truy vấn lồng Câu truy vấn con thường trả về một tập các giá trị – Lồng phân cấp Các câu truy vấn con trong cùng một mệnh đề WHERE được • Mệnh đề WHERE của truy vấn con không tham kết hợp bằng phép nối logic chiếu đến thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn cha Mệnh đề WHERE của câu truy vấn cha • Khi thực hiện, câu truy vấn con sẽ được thực hiện – trước – So sánh tập hợp thường đi cùng với một số toán tử – Lồng tương quan • IN, NOT IN • Mệnh đề WHERE của truy vấn con tham chiếu ít • ALL nhất một thuộc tính của các quan hệ trong mệnh • ANY hoặc SOME đề FROM ở truy vấn cha – Kiểm tra sự tồn tại • Khi thực hiện, câu truy vấn con sẽ được thực hiện • EXISTS nhiều lần, mỗi lần tương ứng với một bộ của truy • NOT EXISTS vấn cha Khoa CNTT – Đại học Sài Gòn 75 Khoa CNTT – Đại học Sài Gòn 76 19
- Ví dụ - Lồng phân cấp Ví dụ 5 SELECT MANV, TENNV SELECT SODA FROM NHANVIEN, PHONGBAN FROM NHANVIEN NV, PHANCONG PC WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG WHERE NV.MANV=PC.MA_NVIEN AND NV.HONV=‘Nguyen’ UNION SELECT MANV, TENNV FROM NHANVIEN SELECT MADA SELECT MANV, TENNV FROM NHANVIEN WHERE PHG IN ( 1, 4, 5) FROM NHANVIEN NV, PHONGBAN PB, DEAN DA WHERE PHG IN ( SELECT MAPHG WHERE NV.MANV=PB.TRPHG AND PB.MAPHG=DA.PHONG FROM PHONGBAN WHERE TENPHG=‘Nghien cuu’) AND NV.HONV=‘Nguyen’ Khoa CNTT – Đại học Sài Gòn 77 Khoa CNTT – Đại học Sài Gòn 78 Ví dụ 5 Ví dụ 7 SELECT DISTINCT TENDA Tìm những nhân viên không có thân nhân nào FROM DEAN WHERE MADA IN SELECT * ( FROM NHANVIEN SELECT SODA FROM NHANVIEN, PHANCONG WHERE MANV NOT IN ( WHERE MANV=MA_NVIEN AND HONV=‘Nguyen’ SELECT MA_NVIEN ) OR MADA IN FROM THANNHAN ) ( SELECT * SELECT MADA FROM NHANVIEN FROM NHANVIEN, PHONGBAN DEAN WHERE MANV=TRPHG AND MAPHG=PHONG WHERE MANV ALL ( AND HONV=‘Nguyen’ SELECT MA_NVIEN ) FROM THANNHAN ) Khoa CNTT – Đại học Sài Gòn 79 Khoa CNTT – Đại học Sài Gòn 80 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cơ sở dữ liệu đất đai
49 p | 633 | 79
-
Bài giảng Cơ sở dữ liệu - Nguyễn Quỳnh Chi
189 p | 267 | 51
-
Bài giảng Cơ sở dữ liệu: Chương 1 - Tổng quan về cơ sở dữ liệu
21 p | 181 | 31
-
Bài giảng Cơ sở dữ liệu: Bài 1 - ĐH CNTT
15 p | 607 | 30
-
Bài giảng Cơ sở dữ liệu - Bài 2: Mô hình cơ sở dữ liệu quan hệ
43 p | 221 | 18
-
Bài giảng Cơ sở dữ liệu: Chương 2 - ThS. Hoàng Mạnh Hà
68 p | 151 | 12
-
Bài giảng Cơ sở dữ liệu (Database): Chương 4 - TS. Đặng Thị Thu Hiền
82 p | 40 | 8
-
Bài giảng Cơ sở dữ liệu - Chương 4: Chuẩn hóa cơ sở dữ liệu
30 p | 134 | 8
-
Bài giảng Cơ sở dữ liệu nâng cao - Chương 2: Toàn vẹn và cơ sở dữ liệu active
50 p | 81 | 8
-
Bài giảng Cơ sở dữ liệu (Database): Chương 1 - TS. Đặng Thị Thu Hiền
53 p | 48 | 7
-
Bài giảng Cơ sở dữ liệu: Phần 1 – Nguyễn Hải Châu
54 p | 122 | 6
-
Bài giảng Cơ sở dữ liệu: Mở đầu - ThS. Lương Thị Ngọc Khánh
11 p | 169 | 6
-
Bài giảng Cơ sở dữ liệu nâng cao: Bài 1.1 - PGS.TS. Đỗ Phúc
25 p | 90 | 6
-
Bài giảng Cơ sở dữ liệu: Chương 1 - Th.S Thiều Quang Trung
40 p | 93 | 5
-
Bài giảng Cơ sở dữ liệu - Bài 1: Thiết kế Cơ sở dữ liệu với Management Studio
10 p | 62 | 5
-
Bài giảng Cơ sở dữ liệu nâng cao: Bài 2 - PGS.TS. Đỗ Phúc
55 p | 66 | 4
-
Bài giảng Cơ sở dữ liệu: Chương 1 - GV. Đỗ Thị Kim Thành
21 p | 102 | 4
-
Bài giảng Cơ sở dữ liệu: Chương 2 - Trần Thị Dung
39 p | 2 | 1
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn