Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

36 63 0
Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

Đ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

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.

Chương 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 Giới thiệu Ngơn ngữ ĐSQH Giới thiệu – Cách thức truy vấn liệu Định nghĩa liệu  Khó khăn cho người sử dụng SQL (Structured Query Language) Truy vấn liệu – Ngôn ngữ cấp cao Cập nhật liệu – Người sử dụng cần đưa nội dung cần truy vấn Khung nhìn (view) – Được gọi SEQUEL (Structured English Query Language) – Được phát triển IBM (1970s) – Được ANSI công nhận phát triển thành chuẩn • SQL-86 • SQL-92 • SQL-99 Chỉ mục (index) Khoa CNTT – Đại học Sài Gòn Khoa CNTT – Đại học Sài Gòn 1 Giới thiệu Giới thiệu SQL gồm SQL thao tác mơ hình vật lý Cơ sở liệu Mơ hình vật lý có cấu trúc tương tự với mơ hình liệu quan hệ, gồm khái niệm: – Định nghĩa liệu (DDL) – Thao tác liệu (DML) – Định nghĩa khung nhìn Lý thuyết : Chuẩn SQL-92 – Ràng buộc toàn vẹn – Bảng ~ quan hệ – Cột ~ thuộc tính Ví dụ : SQL Server – Dịng ~ – Phân quyền bảo mật Với mơ hình vật lý, ta cần xác định cụ thể kiểu liệu thuộc tính – Điều khiển giao tác SQL sử dụng thuật ngữ – Bảng ~ quan hệ – Cột ~ thuộc tính – Dịng ~ Khoa CNTT – Đại học Sài Gòn Giới thiệu Microsoft SQL Server Khoa CNTT – Đại học Sài Gòn Khoa CNTT – Đại học Sài Gòn Giao diện đăng nhập Là chương trình giúp tạo, quản lý truy xuất sở liệu Microsoft phát hành Sử dụng mơ hình CSDL quan hệ Ngơn ngữ truy xuất liệu 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 lệnh – Tìm kiếm từ khóa – Đầy đủ cấu trúc lệnh SQL – Có ví dụ tham khảo Khoa CNTT – Đại học Sài Gòn Giao diện làm việc Giao diện truy vấn Khoa CNTT – Đại học Sài Gòn Khoa CNTT – Đại học Sài Gòn Các thao tác 10 Lệnh GO Muốn chạy lệnh đó: Lệnh GO (GO command) khơng phải từ khóa – Chọn lệnh cần chạy SQL (SQL statement) – Nhấn F5 nhấn nút Execute GO lệnh nhận trình biên dịch MS SQL code – Nếu chạy thành công: editor Xem đối tượng quản lý hệ thống: GO đánh dấu kết thúc tập lệnh SQL (batch) Mỗi tập lệnh SQL thực thi đồng thời, xảy lỗi – Mở rộng đối tượng tương lệnh hủy bỏ tồn lệnh tập lệnh ứng bên cửa sổ Object Explorer – Có thể click phải chuột để menu ngữ cảnh Khoa CNTT – Đại học Sài Gòn 11 Khoa CNTT – Đại học Sài Gòn 12 Lệnh GO Định nghĩa liệu Phân biệt: Là ngôn ngữ mô tả (DDL) – Tạo CSDL drop database test – Lược đồ cho quan hệ create database test – Miền giá trị tương ứng thuộc tính use test – Ràng buộc tồn vẹn – Chỉ mục quan hệ Gồm – CREATE TABLE (tạo bảng) drop database test GO create database test GO use test GO – DROP TABLE (xóa bảng) – ALTER TABLE (sửa bảng) – CREATE DOMAIN (tạo miền giá trị) – CREATE DATABASE – … Khoa CNTT – Đại học Sài Gòn 13 Khoa CNTT – Đại học Sài Gòn 14 Khoa CNTT – Đại học Sài Gòn 16 a Kiểu liệu a Kiểu liệu Số (numeric) Chuỗi ký tự (character string) – CHARACTER, CHARACTER(n) – CHARACTER VARYING(x) – INTEGER – SMALLINT Chuỗi bit (bit string) – NUMERIC, NUMERIC(p), NUMERIC(p,s) – BIT, BIT(x) – BIT VARYING(x) – DECIMAL, DECIMAL(p), DECIMAL(p,s) – REAL Ngày (datetime) – DOUBLE PRECISION – DATE gồm ngày, tháng năm – TIME gồm giờ, phút giây – TIMESTAMP gồm ngày – FLOAT, FLOAT(p) Khoa CNTT – Đại học Sài Gòn 15 b Tạo CSDL b Tạo CSDL Mỗi CSDL (trong MS SQL Server) có tên CREATE DATABASE database_name [ ON [ PRIMARY ] [ [ , n ] [ , [ , n ] ] [ LOG ON { [ , n ] } ] ] [ COLLATE collation_name ] [ WITH ] ] [;] Mỗi CSDL gồm tập tin vật lý: – Tập tin MDF: lưu trữ nội dung CSDL – Tập tin LDF: lưu trữ log Sau chạy, đọc thông báo thành công hay thất bại cửa sổ Message Dựa vào thông báo lỗi để biết nguyên nhân lỗi Sau chạy lệnh tạo CSDL, nhớ refresh Database Khoa CNTT – Đại học Sài Gòn Khoa CNTT – Đại học Sài Gòn 17 b Tạo CSDL b Tạo CSDL ::= { ( NAME = logical_file_name , FILENAME = 'os_file_name' [ , SIZE = size [ KB | MB | GB | TB ] ] [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB |%]] ) [ , n ] } Tạo CSDL đơn giản không tham số: Khoa CNTT – Đại học Sài Gòn 19 18 CREATE DATABASE TEST Tạo CSDL định đường dẫn nơi chứa CSDL: CREATE DATABASE QLNV ON ( NAME = 'QLNV_Data', FILENAME = 'D:\QLNV_Data.mdf', SIZE = 10MB, MAXSIZE = UNLIMITED, FILEGROWTH = 5MB) LOG ON ( NAME = 'QLNV_Log', FILENAME = 'D:\QLNV_Log.ldf', SIZE = 5MB, MAXSIZE = UNLIMITED, FILEGROWTH = 2MB) Khoa CNTT – Đại học Sài Gịn 20 c Chỉnh sửa CSDL d Xóa CSDL Lệnh chỉnh sửa chung thường ALTER + Loại + Tên đối tượng: Lệnh xóa chung thường DROP + Loại + Tên đối tượng ALTER DATABASE database_name { | | | MODIFY NAME = new_database_name | COLLATE collation_name } [;] Ví dụ: DROP DATABASE Ví dụ: DROP DATABASE test ALTER DATABASE AdventureWorks MODIFY FILE ( NAME = Test1dat2, FILENAME = N'c:\t1dat2.ndf‘ ); Khoa CNTT – Đại học Sài Gịn 21 e Lệnh tạo bảng Ví dụ - Tạo bảng Để định nghĩa bảng CREATE TABLE NHANVIEN ( MANV CHAR(9), HONV VARCHAR(10), TENLOT VARCHAR(20), TENNV VARCHAR(10), NGSINH DATETIME, DCHI VARCHAR(50), PHAI CHAR(3), LUONG INT, MA_NQL CHAR(9), PHG INT ) – Tên bảng – Các thuộc tính • Tên thuộc tính • Kiểu liệu • Các RBTV thuộc tính Cú pháp CREATE TABLE ( [], [], … [] ) Khoa CNTT – Đại học Sài Gòn 23 Khoa CNTT – Đại học Sài Gòn 22 Khoa CNTT – Đại học Sài Gịn 24 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 định) TENNV VARCHAR(10) NOT NULL, – DEFAULT MANV CHAR(9) PRIMARY KEY, – PRIMARY KEY NGSINH – FOREIGN KEY / REFERENCES DCHI VARCHAR(50), DATETIME, 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 ) Khoa CNTT – Đại học Sài Gịn 25 Ví dụ - Tạo bảng có kèm RBTV 26 Ví dụ - RBTV có đặt tên CREATE TABLE PHONGBAN ( TENPB VARCHAR(20) UNIQUE, MAPHG INT NOT NULL, TRPHG CHAR(9), NG_NHANCHUC DATETIME DEFAULT (GETDATE()) ) CREATE TABLE NHANVIEN ( HONV VARCHAR(10) CONSTRAINT NV_HONV_NN NOT NULL, TENLOT VARCHAR(20) NOT NULL, 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 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), CONSTRAINT PC_MANVIEN_SODA_PK PRIMARY KEY ALTER TABLE ADD [] Xóa cột (MA_NVIEN, SODA), ALTER TABLE DROP COLUMN CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN) 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 Khoa CNTT – Đại học Sài Gòn 29 f Lệnh sửa bảng 30 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 Ví dụ - Thay đổi RBTV khóa ngoại Ví dụ - Thay đổi RBTV CREATE TABLE PHONGBAN ( TENPB VARCHAR(20), MAPHG INT NOT NULL, TRPHG CHAR(9), NG_NHANCHUC DATETIME ) CREATE TABLE NHANVIEN ( MANV VARCHAR(20) PRIMARY KEY, HOTEN NVARCHAR(50) ) ALTER TABLE PHONGBAN ADD TRGPHG VARCHAR(20) ALTER TABLE PHONGBAN ADD CONSTRAINT PB_MAPHG_PK PRIMARY KEY (MAPHG), CONSTRAINT PB_TRPHG FOREIGN KEY (TRPHG) REFERENCES NHANVIEN(MANV), CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE()) FOR (NG_NHANCHUC), CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB) Khoa CNTT – Đại học Sài Gòn ALTER TABLE PHONGBAN ADD CONSTRAINT PB_TRGPHG_FK FOREIGN KEY (TRGPHG) REFERENCES NHANVIEN(MANV) ON DELETE CASCADE Khoa CNTT – Đại học Sài Gịn 33 g Lệnh xóa bảng 34 g Lệnh xóa bảng  Trình tự xóa bảng sau: Được dùng để xóa cấu trúc bảng NHANVIEN – Tất liệu bảng bị xóa HONV TENLOT TENNV MANV NGSINH DCHI PHAI LUONG MA_NQL PHG Cú pháp DROP TABLE PHONGBAN TENPHG MAPHG TRPHG NG_NHANCHUC Ví dụ DROP TABLE NHANVIEN ALTER TABLE PHONGBAN DROP COLUMN TRPHG DROP TABLE PHONGBAN Hay ALTER TABLE PHONGBANDROP fk_PHONGBAN DROP TABLE PHANCONG DROP TABLE NHANVIEN DROP TABLE PHONGBAN Khoa CNTT – Đại học Sài Gòn 35 Khoa CNTT – Đại học Sài Gòn 36 k Lệnh tạo miền giá trị Truy vấn liệu Tạo kiểu liệu kế thừa kiểu liệu có sẳn Cú pháp Là ngơn ngữ rút trích liệu thỏa số điều kiện Dựa Phép tốn ĐSQH CREATE DOMAIN AS Ví dụ  Một số bổ sung – Cho phép bảng có nhiều dịng trùng CREATE DOMAIN Kieu_Ten AS VARCHAR(30) Khoa CNTT – Đại học Sài Gòn Khoa CNTT – Đại học Sài Gòn 37 a Truy vấn 38 a Truy vấn SQL ĐSQH Gồm mệnh đề  SELECT FROM SELECT FROM WHERE  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 SELECT L FROM R WHERE C – • Biểu thức boolean xác định dòng rút trích L (C (R)) • Nối biểu thức: AND, OR, NOT • Phép tốn:  ,  ,  ,  ,  , , LIKE BETWEEN Khoa CNTT – Đại học Sài Gòn 39 Khoa CNTT – Đại học Sài Gịn 40 10 Ví dụ Ví dụ Tìm nhân viên có người thân tên giới tính Tìm nhân viên khơng có thân nhân SELECT * FROM NHANVIEN WHERE NOT EXISTS ( SELECT * FROM THANNHAN WHERE MANV=MA_NVIEN) SELECT * FROM NHANVIEN NV WHERE EXISTS ( SELECT * FROM THANNHAN TN WHERE NV.MANV=TN.MA_NVIEN AND NV.TENNV=TN.TENTN AND NV.PHAI=TN.PHAI ) Khoa CNTT – Đại học Sài Gòn Khoa CNTT – Đại học Sài Gịn 85 Ví dụ Ví dụ 10 Tìm nhân viên có lương lớn lương nhân viên phịng Tìm trưởng phịng có tối thiểu thân nhân SELECT * FROM NHANVIEN WHERE EXISTS ( SELECT * FROM THANNHAN WHERE MANV=MA_NVIEN ) AND EXISTS ( SELECT * FROM PHONGBAN WHERE MANV=TRPHG ) SELECT * FROM NHANVIEN NV1 WHERE EXISTS ( SELECT * FROM NHANVIEN NV2 WHERE NV2PHG=4 AND NV1.LUONG>NV2.LUONG) Khoa CNTT – Đại học Sài Gòn 86 87 Khoa CNTT – Đại học Sài Gòn 88 22 IN EXISTS Phép chia SQL IN – IN – Thuộc tính mệnh đề SELECT truy vấn phải có kiểu liệu với thuộc tính mệnh đề WHERE truy vấn cha R EXISTS – Khơng cần có thuộc tính, số hay biểu thức khác đứng trước – Không thiết liệt kê tên thuộc tính mệnh đề SELECT truy vấn – Những câu truy vấn có = ANY hay IN chuyển thành câu truy vấn có EXISTS Khoa CNTT – Đại học Sài Gịn A B C D E  a  a  a  a  a  b  a  a  a  b  a  a  a  b  a  b S bi D E a b RS A B C  a   a  RS tập giá trị R cho khơng có giá trị bi S làm cho (ai, bi) không tồn R Khoa CNTT – Đại học Sài Gòn 89 Phép chia SQL Ví dụ 12 Sử dụng NOT EXISTS để biểu diễn Tìm tên nhân viên phân công làm tất đồ án – Tìm tên nhân viên mà khơng có đề án không SELECT R1.A, R1.B, R1.C FROM R R1 WHERE NOT EXISTS ( SELECT * FROM S WHERE NOT EXISTS ( SELECT * FROM R R2 WHERE R2.D=S.D AND R2.E=S.E AND R1.A=R2.A AND R1.B=R2.B AND R1.C=R2.C )) Khoa CNTT – Đại học Sài Gịn 90 phân cơng làm – Tập bị chia: PHANCONG(MA_NVIEN, SODA) – Tập chia: DEAN(MADA) – Tập kết quả: KQ(MA_NVIEN) – Kết KQ với NHANVIEN để lấy TENNV 91 Khoa CNTT – Đại học Sài Gịn 92 23 Ví dụ 12 c Hàm kết hợp COUNT SELECT NV.TENNV FROM NHANVIEN NV, PHANCONG PC1 WHERE NV.MANV=PC1.MA_NVIEN AND NOT EXISTS ( SELECT * FROM DEAN DA WHERE NOT EXISTS ( SELECT * FROM PHANCONG PC2 WHERE PC2.SODA=DA.MADA AND PC1.MA_NVIEN=PC2.MA_NVIEN )) Khoa CNTT – Đại học Sài Gịn – COUNT(*) đếm số dịng – COUNT() đếm số giá trị khác NULL thuộc tính – COUNT(DISTINCT ) đếm số giá trị khác khác NULL thuộc tính MIN MAX SUM AVG Các hàm kết hợp đặt mệnh đề SELECT Khoa CNTT – Đại học Sài Gịn 93 Ví dụ 13 Ví dụ 14 Tìm tổng lương, lương cao nhất, lương thấp lương trung bình nhân viên Cho biết số lượng nhân viên phòng ‘Nghien cuu’ 94 SELECT COUNT(*) AS SL_NV SELECT SUM(LUONG), MAX(LUONG), MIN(LUONG), FROM NHANVIEN, PHONGBAN AVG(LUONG) WHERE PHG=MAPHG AND TENPHG=‘Nghien cuu’ FROM NHANVIEN Khoa CNTT – Đại học Sài Gòn 95 Khoa CNTT – Đại học Sài Gịn 96 24 Ví dụ 15 d Gom nhóm Cú pháp Cho biết số lượng nhân viên phòng ban PHG SL_NV FROM 1 WHERE SELECT MANV HONV TENLOT TENNV NGSINH DCHI PHAI LUONG MA_NQL PHG 333445555 Nguyen Thanh Tung 12/08/1955 638 NVC Q5 Nam 40000 888665555 987987987 Nguyen Manh Hung 09/15/1962 Ba Ria VT Nam 38000 333445555 453453453 Tran Thanh Tam 07/31/1972 543 MTL Q1 Nu 25000 333445555 999887777 Bui Ngoc Hang 07/19/1968 33 NTH Q1 Nu 38000 987654321 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 Khoa CNTT – Đại học Sài Gòn GROUP BY Khoa CNTT – Đại học Sài Gịn 97 98 Ví dụ 16 Cho biết số lượng nhân viên phòng ban SELECT PHONG, COUNT(*) AS SL_NV FROM NHANVIEN GROUP BY PHONG SELECT TENPHG, COUNT(*) AS SL_NV FROM NHANVIEN, PHONGBAN WHERE PHONG=MAPHG GROUP BY TENPHG Khoa CNTT – Đại học Sài Gòn 9999 Khoa CNTT – Đại học Sài Gịn 100 25 Ví dụ 18 Ví dụ 17 Với nhân viên cho biết mã số, họ tên, số lượng đề án tổng thời gian mà họ tham gia MA_NVIEN SODA Cho biết nhân viên tham gia từ đề án trở lên THOIGIAN 123456789 32.5 123456789 7.5 333445555 10.0 333445555 10.0 333445555 10 10.0 888665555 20 20.0 987987987 10 35.0 987987987 30 5.0 987654321 30 20.0 987654321 20 15.0 453453453 20.0 453453453 20.0 SELECT MA_NVIEN, COUNT(*) AS SL_DA, SUM(THOIGIAN) AS TONG_TG FROM PHANCONG GROUP BY MA_NVIEN SELECT HONV, TENNV, COUNT(*) AS SL_DA, SUM(THOIGIAN) AS TONG_TG FROM PHANCONG, NHANVIEN WHERE MA_NVIEN=MANV GROUP BY MA_NVIEN, HONV, TENNV Khoa CNTT – Đại học Sài Gòn MA_NVIEN SODA 123456789 32.5 123456789 7.5 333445555 10.0 333445555 10.0 333445555 10 10.0 888665555 20 20.0 987987987 10 35.0 987987987 30 5.0 987654321 30 20.0 987654321 20 15.0 453453453 20.0 453453453 20.0 bị loại Khoa CNTT – Đại học Sài Gòn 101 e Điều kiện nhóm THOIGIAN 102 Ví dụ 18 Cú pháp Cho biết nhân viên tham gia từ đề án trở lên SELECT FROM SELECT MA_NVIEN FROM PHANCONG GROUP BY MA_NVIEN HAVING COUNT(*) >= WHERE GROUP BY HAVING Khoa CNTT – Đại học Sài Gòn 103 Khoa CNTT – Đại học Sài Gịn 104 26 Nhận xét Ví dụ 19 Mệnh đề GROUP BY Cho biết phòng ban (TENPHG) có lương trung bình nhân viên lớn lơn 20000 SELECT PHONG, AVG(LUONG) AS LUONG_TB FROM NHANVIEN GROUP BY PHONG HAVING AVG(LUONG) > 20000 – Các thuộc tính mệnh đề SELECT (trừ thuộc tính hàm kết hợp) phải xuất mệnh đề GROUP BY Mệnh đề HAVING – Sử dụng hàm kết hợp mệnh đề SELECT để kiểm tra số điều kiện SELECT TENPHG, AVG(LUONG) AS LUONG_TB FROM NHANVIEN, PHONGBAN WHERE PHONG=MAPHG GROUP BY TENPHG HAVING AVG(LUONG) > 20000 – Chỉ kiểm tra điều kiện nhóm, khơng điều kiện lọc – Sau gom nhóm điều kiện nhóm thực Khoa CNTT – Đại học Sài Gòn Khoa CNTT – Đại học Sài Gịn 105 Nhận xét 106 Ví dụ 20 Thứ tự thực câu truy vấn có mệnh đề GROUP BY HAVING Tìm phịng ban có lương trung bình cao SELECT PHG, AVG(LUONG) AS LUONG_TB – (1) Chọn dòng thỏa điều kiện mệnh đề LUONG_TB FROM NHANVIEN WHERE FROM NHANVIEN GROUP BY PHG – (2) Những dòng gom thành nhiều nhóm tương GROUP BY HAVING AVG(LUONG) PHG >= ALL ( ứng với mệnh đề GROUP BY HAVING MAX(AVG(LUONG)) SELECT AVG(LUONG) – (3) Áp dụng hàm kết hợp cho nhóm FROM NHANVIEN – (4) Bỏ qua nhóm khơng thỏa điều kiện mệnh đề GROUP BY PHG) HAVING – (5) Rút trích giá trị cột hàm kết hợp mệnh đề SELECT Khoa CNTT – Đại học Sài Gòn 107 Khoa CNTT – Đại học Sài Gịn 108 27 Ví dụ 21 f Một số dạng truy vấn khác Truy vấn mệnh đề FROM Tìm tên nhân viên phân cơng làm tất đồ án Điều kiện kết mệnh đề FROM SELECT MANV, TENVN FROM NHANVIEN, PHANCONG WHERE MANV=MA_NVIEN GROUP BY MANV, TENNV HAVING COUNT(*) = ( SELECT COUNT(*) FROM DEAN ) Khoa CNTT – Đại học Sài Gịn – Phép kết tự nhiên – Phép kết ngồi Cấu trúc CASE Khoa CNTT – Đại học Sài Gòn 109 110 Ví dụ 22 Truy vấn mệnh đề FROM Cho biết phịng ban (TENPHG) có lương trung bình nhân viên lớn 20000 Kết trả câu truy vấn phụ bảng – Bảng trung gian trình truy vấn SELECT PHG, AVG(LUONG) AS LUONG_TB – Khơng có lưu trữ thật FROM NHANVIEN GROUP BY PHG Cú pháp HAVING AVG(LUONG) > 20000 SELECT SELECT PHG, TENPHG, AVG(LUONG) AS LUONG_TB FROM R1, R2, () AS tên_bảng FROM NHANVIEN, PHONGBAN WHERE WHERE PHG=MAPHG GROUP BY PHG, TENPHG HAVING AVG(LUONG) > 20000 Khoa CNTT – Đại học Sài Gòn 111 Khoa CNTT – Đại học Sài Gịn 112 28 Ví dụ 22 Điều kiện kết mệnh đề FROM Cho biết phòng ban (TENPHG) có lương trung bình nhân viên lớn 20000 Kết SELECT FROM R1 [INNER] JOIN R2 ON WHERE 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 Kết SELECT FROM R1 LEFT|RIGHT [OUTER] JOIN R2 ON WHERE Khoa CNTT – Đại học Sài Gòn Khoa CNTT – Đại học Sài Gịn 113 114 Ví dụ 24 Ví dụ 23 Tìm họ tên nhân viên tên đề án nhân viên tham gia có 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 PHONG=MAPHG SELECT NV.TENNV, NV.TENDA FROM (PHANCONG PC JOIN DEAN DA ON SODA=MADA) LEFT JOIN NHANVIEN NV ON PC.MA_NVIEN=NV.MANV SELECT MANV, TENNV FROM NHANVIEN INNER JOIN PHONGBAN ON PHONG=MAPHG WHERE TENPHG=‘Nghien cuu’ PHANCONG join DEAN NHANVIEN MA_NVIEN=MANV mở rộng Khoa CNTT – Đại học Sài Gòn 115 115 Khoa CNTT – Đại học Sài Gòn 116 29 Cấu trúc CASE Ví dụ 25 Cho phép kiểm tra điều kiện xuất thông tin theo trường hợp Cú pháp 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 ) CASE WHEN THEN WHEN THEN … [ELSE ] END Khoa CNTT – Đại học Sài Gịn 117 Ví dụ 26 Khoa CNTT – Đại học Sài Gòn 118 Khoa CNTT – Đại học Sài Gòn 120 Kết luận Cho biết họ tên nhân viên năm hưu SELECT FROM SELECT HONV, TENNV [WHERE ] (CASE PHAI [GROUP BY ] WHEN 'Nam' THEN YEAR(NGSINH) + 60 [HAVING ] WHEN 'Nu‘ THEN YEAR(NGSINH) + 55 [ORDER BY ] END ) AS NAMVEHUU FROM NHANVIEN Khoa CNTT – Đại học Sài Gòn 119 30 a Lệnh INSERT Cập nhật liệu Dùng để thêm hay nhiều dòng vào bảng Để thêm liệu Cập nhật liệu gồm lệnh: – Thêm (insert) – Tên quan hệ – Xóa (delete) – Danh sách thuộc tính cần thêm liệu – Sửa (update) – Danh sách giá trị tương ứng  Cú pháp (thêm dòng) INSERT INTO () VALUES () Khoa CNTT – Đại học Sài Gòn Khoa CNTT – Đại học Sài Gịn 121 Ví dụ 122 a Lệnh INSERT Nhận xét – Thứ tự giá trị phải trùng với thứ tự cột INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV) VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’) – Có thể thêm giá trị NULL thuộc tính khơng khóa NOT NULL INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV, DCHI) VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, NULL) – Câu lệnh INSERT gặp lỗi vi phạm RBTV • Khóa INSERT INTO NHANVIEN VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, ’12/30/1952’, ’98 HV’, ‘Nam’, ‘37000’, 4) • 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ị Khoa CNTT – Đại học Sài Gòn 123 Khoa CNTT – Đại học Sài Gòn 124 31 a Lệnh INSERT Ví dụ Cú pháp (thêm nhiều dòng) CREATE TABLE THONGKE_PB ( TENPHG VARCHAR(20), SL_NV INT, LUONG_TC INT ) INSERT INTO () INSERT INTO THONGKE_PB(TENPHG, SL_NV, LUONG_TC) SELECT TENPHG, COUNT(MANV), SUM(LUONG) FROM NHANVIEN, PHONGBAN WHERE PHG=MAPHG GROUP BY TENPHG Khoa CNTT – Đại học Sài Gòn Khoa CNTT – Đại học Sài Gòn 125 b Lệnh DELETE 126 Ví dụ Dùng để xóa dịng bảng Cú pháp DELETE FROM NHANVIEN DELETE FROM NHANVIEN WHERE HONV=‘Tran’ WHERE MANV=‘345345345’ DELETE FROM DELETE FROM NHANVIEN Xóa nhân viên phòng ‘Nghien cuu’ [WHERE ] DELETE FROM NHANVIEN WHERE PHG IN ( SELECT MAPHG FROM PHONGBAN WHERE TENPHG=‘Nghien cuu’) Khoa CNTT – Đại học Sài Gòn 127 Khoa CNTT – Đại học Sài Gòn 128 32 b Lệnh DELETE c Lệnh UPDATE Nhận xét – Số lượng số dịng bị xóa phụ thuộc vào điều kiện mệnh Dùng để thay đổi giá trị thuộc tính cho dịng bảng Cú pháp đề WHERE – Nếu không định điều kiện mệnh đề WHERE, tất UPDATE SET =, =, … [WHERE ] 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 • Đặt NULL cho giá trị tham chiếu Khoa CNTT – Đại học Sài Gòn Khoa CNTT – Đại học Sài Gịn 129 Ví dụ 130 c Lệnh UPDATE Nhận xét UPDATE NHANVIEN SET NGSINH=’08/12/1965’ WHERE MANV=‘333445555’ – Những dòng thỏa điều kiện mệnh đề WHERE cập nhật giá trị 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 – Nếu không định điều kiện mệnh đề WHERE, tất dòng bảng bị cập nhật UPDATE DEAN SET DIADIEM_DA=’Vung Tau’, PHONG=5 WHERE MADA=10 – 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 Khoa CNTT – Đại học Sài Gòn 131 131 Khoa CNTT – Đại học Sài Gịn 132 33 Khung nhìn Khung nhìn Bảng quan hệ tổ chức lưu trữ vật lý CSDL Tại phải sử dụng khung nhìn? – Che dấu tính phức tạp liệu – Đơn giản hóa câu truy vấn Khung nhìn quan hệ – Hiển thị liệu dạng tiện dụng – Không lưu trữ vật lý (bảng ảo) – An toàn liệu – Không chứa liệu – Được định nghĩa từ bảng khác – Có thể truy vấn hay cập nhật thơng qua khung nhìn Khoa CNTT – Đại học Sài Gòn Khoa CNTT – Đại học Sài Gòn 133 Định nghĩa khung nhìn 134 Ví dụ Cú pháp CREATE VIEW NV_P5 AS SELECT MANV, HONV, TENLOT, TENVN FROM NHANVIEN WHERE PHG=5 CREATE VIEW AS DROP VIEW Bảng ảo có CREATE VIEW TONGLNG_SLNV_PB AS SELECT MAPHG, TENPB, COUNT(*) AS SLNV, SUM(LUONG) AS TONGLNG FROM NHANVIEN, PHONGBAN WHERE PHG=MAPHG GROUP BY TENPHG – Danh sách thuộc tính trùng với thuộc tính mệnh đề SELECT – Số dòng phụ thuộc vào điều kiện mệnh đề WHERE – Dữ liệu lấy từ bảng mệnh đề FROM Khoa CNTT – Đại học Sài Gòn 135 Khoa CNTT – Đại học Sài Gịn 136 34 Truy vấn khung nhìn Truy vấn khung nhìn Có thể viết câu truy vấn liệu từ khung nhìn bảng Tuy khơng chứa liệu thực câu truy vấn khung nhìn SELECT HONV, TENVN, TENDA, THOIGIAN SELECT TENNV FROM NV_P5 WHERE HONV LIKE ‘Nguyen’ NV_P5    MANV,HONV, TENLOT, TENNV TENNV  ( FROM NV_P5, PHANCONG, DEAN WHERE MANV=MA_NVIEN AND SODA=MADA  ( PHG=5 (NHANVIEN)) HONV=‘Nguyen’ (NV_P5)) Khoa CNTT – Đại học Sài Gòn Khoa CNTT – Đại học Sài Gòn 137 Cập nhật khung nhìn 138 Cập nhật khung nhìn Có thể dùng câu lệnh INSERT, DELETE UPDATE cho khung nhìn đơn giản Sửa lại họ cho nhân viên mã ‘123456789’ phịng ‘Pham’ – Khung nhìn xây dựng bảng có khóa bảng UPDATE NV_P5 SET HONV=‘Pham’ Không thể cập nhật liệu WHERE MANV= ‘123456789’ – Khung nhìn có dùng từ khóa DISTINCT – Khung nhìn có sử dụng hàm kết hợp – Khung nhìn có mệnh đề SELECT mở rộng – Khung nhìn xây dựng từ bảng có RB cột – Khung nhìn xây dựng từ nhiều bảng Khoa CNTT – Đại học Sài Gòn 139 Khoa CNTT – Đại học Sài Gòn 140 35 Chỉ mục Chỉ mục Chỉ mục thuộc tính A cấu trúc liệu làm cho việc tìm kiếm mẫu tin có chứa A hiệu Cú pháp CREATE INDEX ON () SELECT * FROM NHANVIEN WHERE PHG=5 AND PHAI=‘Nu’ DROP INDEX Đọc 10.000 Ví dụ Đọc 200 CREATE INDEX PHG_IND ON NHANVIEN(PHG) Bảng NHANVIEN có 10.000 Có 200 nhân viên làm việc cho phòng Đọc 70 Khoa CNTT – Đại học Sài Gòn CREATE INDEX PHG_PHAI_IND ON NHANVIEN(PHG, PHAI) 141 Khoa CNTT – Đại học Sài Gòn 142 Chỉ mục Nhận xét – Tìm kiếm nhanh trường hợp so sánh với số phép kết – Làm chậm thao tác thêm, xóa sửa Thank you! – Tốn chi phí • Lưu trữ mục • Truy xuất đĩa nhiều Chọn lựa cài đặt mục hợp lý??? Khoa CNTT – Đại học Sài Gòn 143 36 ... 12 345 6789 32.5 12 345 6789 7.5 33 344 5555 10.0 33 344 5555 10.0 33 344 5555 10 10.0 888665555 20 20.0 987987987 10 35.0 987987987 30 5.0 9876 543 21 30 20.0 9876 543 21 20 15.0 45 345 345 3 20.0 45 345 345 3... trở lên THOIGIAN 12 345 6789 32.5 12 345 6789 7.5 33 344 5555 10.0 33 344 5555 10.0 33 344 5555 10 10.0 888665555 20 20.0 987987987 10 35.0 987987987 30 5.0 9876 543 21 30 20.0 9876 543 21 20 15.0 45 345 345 3... NGSINH BETWEEN ‘195 5-1 2-0 8’ AND ‘196 6-0 7-1 9’ ‘195 5-1 2-0 8’ ’12/08/1955’ Khoa CNTT – Đại học Sài Gòn 53 YYYY-MM-DD MM/DD/YYYY ’17:30:00’ ’05:30 PM’ HH:MI:SS ‘December 8, 1955’ ‘195 5-1 2-0 8 17:30:00’ Khoa

Ngày đăng: 11/07/2020, 04:25

Hình ảnh liên quan

– Bảng ~ quan hệ – Cột ~ thuộc tính – Dòng ~ bộ - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

ng.

~ quan hệ – Cột ~ thuộc tính – Dòng ~ bộ Xem tại trang 2 của tài liệu.
– Bảng ~ quan hệ – Cột ~ thuộc tính – Dòng ~ bộ - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

ng.

~ quan hệ – Cột ~ thuộc tính – Dòng ~ bộ Xem tại trang 2 của tài liệu.
Mô hình vật lý có cấu trúc tương tự với mô hình dữ liệu quan hệ, trong đó gồm các khái niệm: - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

h.

ình vật lý có cấu trúc tương tự với mô hình dữ liệu quan hệ, trong đó gồm các khái niệm: Xem tại trang 2 của tài liệu.
2. Định nghĩa dữ liệu - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

2..

Định nghĩa dữ liệu Xem tại trang 4 của tài liệu.
– 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 - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

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 Xem tại trang 4 của tài liệu.
c. Chỉnh sửa CSDL - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

c..

Chỉnh sửa CSDL Xem tại trang 6 của tài liệu.
CREATE TABLE <Tên_bảng> ( - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

lt.

;Tên_bảng> ( Xem tại trang 6 của tài liệu.
Ví dụ - Tạo bảng - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

d.

ụ - Tạo bảng Xem tại trang 6 của tài liệu.
e. Lệnh tạo bảng - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

e..

Lệnh tạo bảng Xem tại trang 7 của tài liệu.
Ví dụ - Tạo bảng có kèm RBTV - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

d.

ụ - Tạo bảng có kèm RBTV Xem tại trang 7 của tài liệu.
DROP TABLE <Tên_bảng> - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

lt.

;Tên_bảng> Xem tại trang 9 của tài liệu.
Được dùng để xóa cấu trúc bảng – Tất cả dữ liệu của bảng cũng bị xóa Cú pháp - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

c.

dùng để xóa cấu trúc bảng – Tất cả dữ liệu của bảng cũng bị xóa Cú pháp Xem tại trang 9 của tài liệu.
 Trình tự xóa bảng như sau: - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

r.

ình tự xóa bảng như sau: Xem tại trang 9 của tài liệu.
g. Lệnh xóa bảng - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

g..

Lệnh xóa bảng Xem tại trang 9 của tài liệu.
g. Lệnh xóa bảng - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

g..

Lệnh xóa bảng Xem tại trang 9 của tài liệu.
k. Lệnh tạo miền giá trị - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

k..

Lệnh tạo miền giá trị Xem tại trang 10 của tài liệu.
SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện> - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

lt.

;ds cột> FROM <ds bảng> WHERE <điều kiện> Xem tại trang 18 của tài liệu.
INSERT INTO <tên bảng>(<danh sách các thuộc tính>) VALUES (<danh sách các giá trị>) - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

lt.

;tên bảng>(<danh sách các thuộc tính>) VALUES (<danh sách các giá trị>) Xem tại trang 31 của tài liệu.
Dùng để thêm 1 hay nhiều dòng vào bảng Để thêm dữ liệu - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

ng.

để thêm 1 hay nhiều dòng vào bảng Để thêm dữ liệu Xem tại trang 31 của tài liệu.
INSERT INTO <tên bảng>(<danh sách các thuộc tính>) <câu truy vấn con> - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

lt.

;tên bảng>(<danh sách các thuộc tính>) <câu truy vấn con> Xem tại trang 32 của tài liệu.
DELETE FROM <tên bảng> [WHERE <điều kiện>] - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

lt.

;tên bảng> [WHERE <điều kiện>] Xem tại trang 32 của tài liệu.
CREATE TABLE THONGKE_PB ( - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy
CREATE TABLE THONGKE_PB ( Xem tại trang 32 của tài liệu.
c. Lệnh UPDATE - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

c..

Lệnh UPDATE Xem tại trang 33 của tài liệu.
UPDATE <tên bảng> - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

lt.

;tên bảng> Xem tại trang 33 của tài liệu.
b. Lệnh DELETE - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

b..

Lệnh DELETE Xem tại trang 33 của tài liệu.
Bảng là một quan hệ được tổ chức lưu trữ vật lý trong CSDL - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

Bảng l.

à một quan hệ được tổ chức lưu trữ vật lý trong CSDL Xem tại trang 34 của tài liệu.
Có thể viết câu truy vấn dữ liệu từ khung nhìn và bảng - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

th.

ể viết câu truy vấn dữ liệu từ khung nhìn và bảng Xem tại trang 35 của tài liệu.
Truy vấn trên khung nhìn - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy

ruy.

vấn trên khung nhìn Xem tại trang 35 của tài liệu.
FROM NHANVIEN - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy
FROM NHANVIEN Xem tại trang 36 của tài liệu.
CREATE INDEX PHG_IND ON NHANVIEN(PHG) - Bài giảng Cơ sở dữ liệu: Chương 4 - Lê Nhị Lãm Thúy
CREATE INDEX PHG_IND ON NHANVIEN(PHG) Xem tại trang 36 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan