SlideShare a Scribd company logo
1 of 136
Download to read offline
Lý thuyết CSDL 1
GI
GIÁ
ÁO VIÊN:
O VIÊN: Đ
ĐỖ
Ỗ TH
THỊ
Ị MAI HƯ
MAI HƯỜ
ỜNG
NG
B
BỘ
Ộ MÔN:
MÔN: C
CÁ
ÁC H
C HỆ
Ệ TH
THỐ
ỐNG THÔNG TIN
NG THÔNG TIN
KHOA:
KHOA: CÔNG NGH
CÔNG NGHỆ
Ệ THÔNG TIN
THÔNG TIN
Email: dohuong@gmail.com
Email: dohuong@gmail.com
CƠ SỞ DỮ LIỆU
Lý thuyết CSDL 2
CHƯƠNG 6
Ngôn ng
Ngôn ngữ
ữ SQL
SQL
Lý thuyết CSDL 3
Nội dung chi tiết
• Giới thiệu
• Định nghĩa dữ liệu
• Truy vấn dữ liệu
• Cập nhật dữ liệu
• Tính đầy đủ của SQL
• Khung nhìn (view)
Lý thuyết CSDL 4
Giới thiệu
• Ngôn ngữ Đại số quan hệ
– Cách thức truy vấn dữ liệu
– Khó khăn cho người sử dụng
• SQL (Structured Query Language)
– Ngôn ngữ cấp cao
– 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)
– Được gọi là SEQUEL
– Được ANSI công nhận và phát triển thành chuẩn
• SQL-86
• SQL-92
• SQL-99
Lý thuyết CSDL 5
Giới thiệu (tt)
• SQL gồm
– Định nghĩa dữ liệu (DDL)
– Thao tác dữ liệu (DML)
– Định nghĩa khung nhìn
– Ràng buộc toàn vẹn
– Phân quyền và bảo mật
– Đ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 ~ bộ
Lý thuyết : Chuẩn SQL-92
Ví dụ : SQL Server
Lý thuyết CSDL 6
Nội dung chi tiết
• Giới thiệu
• Định nghĩa dữ liệu
– Kiểu dữ liệu
– Các lệnh định nghĩa dữ liệu
• Truy vấn dữ liệu
• Cập nhật dữ liệu
• Tính đầy đủ của SQL
• Khung nhìn (view)
Lý thuyết CSDL 7
Định nghĩa dữ liệu
• Là ngôn ngữ mô tả
– Lược đồ cho mỗi quan hệ
– Miền giá trị tương ứng của từng thuộc tính
– Ràng buộc toàn vẹn
– Chỉ mục trên mỗi quan hệ
• Gồm
– CREATE TABLE (tạo bảng)
– DROP TABLE (xóa bảng)
– ALTER TABLE (sửa bảng)
– CREATE DOMAIN / CREATE TYPE (tạo miền giá trị)
– CREATE DATABASE
– …
Lý thuyết CSDL 8
Kiểu dữ liệu
• Số (numeric)
– INTEGER
– SMALLINT
– NUMERIC
– DECIMAL
– REAL
– DOUBLE PRECISION
– FLOAT
Lý thuyết CSDL 9
Kiểu dữ liệu (tt)
• Chuỗi ký tự (character string)
– CHARACTER, CHARACTER(n)
• Chuỗi bit (bit string)
– BIT, BIT(x)
• Ngày giờ (datetime)
– DATE gồm ngày, tháng và năm
– TIME gồm giờ, phút và giây
– TIMESTAMP gồm ngày và giờ
Lý thuyết CSDL 10
Lệnh tạo bảng
• Để định nghĩa một bảng
– Tên bảng
– Các thuộc tính
• Tên thuộc tính
• Kiểu dữ liệu
• Các ràng buộc toàn vẹn trên thuộc tính (RBTV)
• Cú pháp
CREATE TABLE <Tên_bảng> (
<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>],
<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>],
…
[<RBTV>]
)
Lý thuyết CSDL 11
Ví dụ CSDL
• Cho cơ sở dữ liệu CÔNGTY gồm các lược đồ:
– NHANVIEN(MANV, HONV, TENNV, NS, GT, DCHI, LUONG,
MA_NQL, PHONG)
– PHONGBAN(MAPHONG, TENPHONG, TRPHONG,
NG_NHANCHUC)
– DEAN(MADA, TENDA, DD_DA, PHONG)
– THANNHAN(MANV, TEN_TN, NS, GT, QUANHE)
– NV_DEAN(MANV, MADA, SOGIO)
– PHONGBAN_DD(MAPB, DD)
Lý thuyết CSDL 12
Ví dụ - Tạo bảng
CREATE TABLE NHANVIEN (
MANV CHAR(9),
HODEM VARCHAR(30),
TENNV VARCHAR(10),
NS DATETIME,
DCHI VARCHAR(50),
GT CHAR(3),
LUONG INT,
MA_NQL CHAR(9),
PHONG INT
)
Lý thuyết CSDL 13
Lệnh tạo bảng (tt)
• <RBTV>
– NOT NULL
– NULL
– UNIQUE
– DEFAULT
– PRIMARY KEY
– FOREIGN KEY / REFERENCES
– CHECK
• Đặt tên cho RBTV
CONSTRAINT <Ten_RBTV> <RBTV>
Lý thuyết CSDL 14
Ví dụ - RBTV
CREATE TABLE NHANVIEN (
HODEM VARCHAR(30) NOT NULL,
TENNV VARCHAR(10) NOT NULL,
MANV CHAR(9) PRIMARY KEY,
NS DATETIME,
DCHI VARCHAR(50),
GT CHAR(3) CHECK (GT IN (‘Nam’, ‘Nu’)),
LUONG INT DEFAULT (10000),
MA_NQL CHAR(9),
PHONG INT
)
Lý thuyết CSDL 15
Ví dụ - RBTV
CREATE TABLE PHONGBAN (
TENPB VARCHAR(20) UNIQUE,
MAPHONG INT NOT NULL,
TRPHONG CHAR(9),
NG_NHANCHUC DATETIME DEFAULT (GETDATE())
)
CREATE TABLE PHANCONG (
MA_NVIEN CHAR(9) FOREIGN KEY (MA_NVIEN)
REFERENCES NHANVIEN(MANV),
SODA INT REFERENCES DEAN(MADA),
THOIGIAN DECIMAL(3,1)
)
Lý thuyết CSDL 16
Ví dụ - Đặt tên cho RBTV
CREATE TABLE NHANVIEN (
HODEM VARCHAR(30) CONSTRAINT NV_HODEM_NN NOT NULL,
TENNV VARCHAR(10) NOT NULL,
MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY,
NS DATETIME,
DCHI VARCHAR(50),
GT CHAR(3) CONSTRAINT NV_GT_CHK
CHECK (GT IN (‘Nam’, ‘Nu’)),
LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (1000000),
MA_NQL CHAR(9),
PHONG INT
)
Lý thuyết CSDL 17
Ví dụ - Đặt tên cho RBTV
CREATE TABLE PHANCONG (
MA_NVIEN CHAR(9),
SODA INT,
THOIGIAN DECIMAL(3,1),
CONSTRAINT PC_MANVIEN_SODA_PK PRIMARY KEY (MA_NVIEN, SODA),
CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN)
REFERENCES NHANVIEN(MANV),
CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA)
REFERENCES DEAN(MADA)
)
Lý thuyết CSDL 18
Lệnh sửa bảng
• Được dùng để
– Thay đổi cấu trúc bảng
– Thay đổi RBTV
• Thêm cột
• Xóa cột
• Mở rộng cột
ALTER TABLE <Tên_bảng> ADD COLUMN
<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>]
ALTER TABLE <Tên_bảng> DROP COLUMN <Tên_cột>
ALTER TABLE <Tên_bảng> ALTER COLUMN
<Tên_cột> <Kiểu_dữ_liệu_mới>
Lý thuyết CSDL 19
Lệnh sửa bảng (tt)
• Thêm RBTV
• Xóa RBTV
ALTER TABLE <Tên_bảng> ADD
CONSTRAINT <Ten_RBTV> <RBTV>,
CONSTRAINT <Ten_RBTV> <RBTV>,
…
ALTER TABLE <Tên_bảng> DROP <Tên_RBTV>
Lý thuyết CSDL 20
Ví dụ - Thay đổi cấu trúc bảng
ALTER TABLE NHANVIEN ADD
NGHENGHIEP CHAR(20)
ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP
ALTER TABLE NHANVIEN ALTER COLUMN
NGHENGHIEP CHAR(50)
Lý thuyết CSDL 21
Ví dụ - Thay đổi RBTV
CREATE TABLE PHONGBAN (
TENPB VARCHAR(20),
MAPHONG INT NOT NULL,
TRPHONG CHAR(9),
NG_NHANCHUC DATETIME
)
ALTER TABLE PHONGBAN ADD
CONSTRAINT PB_MAPHONG_PK PRIMARY KEY (MAPHONG),
CONSTRAINT PB_TRPHONG FOREIGN KEY (TRPHONG)
REFERENCES NHANVIEN(MANV),
CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE())
FOR (NG_NHANCHUC),
CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB)
Lý thuyết CSDL 22
Lệnh xóa bảng
• Đượ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
• Ví dụ
DROP TABLE <Tên_bảng>
DROP TABLE NHANVIEN
DROP TABLE PHONGBAN
DROP TABLE PHANCONG
Lý thuyết CSDL 23
Lệnh xóa bảng (tt)
NHANVIEN
TENNV
HONV TENDEM MANV NS DCHI GT LUON
G
MA_NQL PHO
NG
PHONGBAN
TRPHO
NG
TENPHG MAPHO
NG
NG_NHANCHUC
Lý thuyết CSDL 24
Lệnh tạo miền giá trị
• Tạo ra một kiểu dữ liệu mới kế thừa những kiểu dữ liệu
có sẳn
• Cú pháp
• Ví dụ
CREATE DOMAIN <Tên_kdl_mới> AS <Kiểu_dữ_liệu>
CREATE TYPE <Tên_kdl_mới> FROM <Kiểu_dữ_liệu>
CREATE DOMAIN Kieu_Ten AS VARCHAR(30)
CREATE TYPE Kieu_Ten FROM VARCHAR(30) not null
Lý thuyết CSDL 25
Nội dung chi tiết
• Giới thiệu
• Định nghĩa dữ liệu
• Cập nhật dữ liệu
– Thêm (insert)
– Xóa (delete)
– Sửa (update)
• Truy vấn dữ liệu
• Tính đầy đủ của SQL
• Khung nhìn (view)
Lý thuyết CSDL 26
Lệnh INSERT
• Dùng để thêm 1 hay nhiều dòng vào bảng
• Để thêm dữ liệu
– Tên quan hệ
– Danh sách các thuộc tính cần thêm dữ liệu
– Danh sách các giá trị tương ứng
Lý thuyết CSDL 27
Lệnh INSERT (tt)
• Cú pháp (thêm 1 dòng)
INSERT INTO <tên bảng>(<danh sách các thuộc tính>)
VALUES (<danh sách các giá trị>)
Lý thuyết CSDL 28
Ví dụ
INSERT INTO NHANVIEN(HODEM, TENNV, MANV)
VALUES (‘Le Van’, ‘Tuyen’, ‘635635635’)
INSERT INTO NHANVIEN
VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, ’12/30/1952’, ’98 HV’, ‘Nam’, ‘37000’, 4)
INSERT INTO NHANVIEN(HONV, TENDEM, TENNV, MANV, DCHI)
VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, NULL)
Lý thuyết CSDL 29
Lệnh INSERT (tt)
• Nhận xét
– Thứ tự các giá trị phải trùng với thứ tự các cột
– Có thể thêm giá trị NULL ở những thuộc tính không là khóa
chính và NOT NULL ở những thuộc tính là khóa chính hoặc có
RBTV là NOT NULL
– Câu lệnh INSERT sẽ gặp lỗi nếu vi phạm RBTV
• Khóa chính
• Tham chiếu
• NOT NULL - các thuộc tính có ràng buộc NOT NULL bắt buộc phải
có giá trị
Lý thuyết CSDL 30
Lệnh INSERT (tt)
• Cú pháp (thêm nhiều dòng)
INSERT INTO <tên bảng>(<danh sách các thuộc tính>)
<câu truy vấn con>
Lý thuyết CSDL 31
Ví dụ
CREATE TABLE THONGKE_PB (
TENPHONG VARCHAR(20),
SL_NV INT,
LUONG_TC INT
)
INSERT INTO THONGKE_PB(TENPHONG, SL_NV, LUONG_TC)
SELECT TENPHONG, COUNT(MANV), SUM(LUONG)
FROM NHANVIEN, PHONGBAN
WHERE PHONG=MAPHONG
GROUP BY TENPHONG
Lý thuyết CSDL 32
Lệnh DELETE
• Dùng để xóa các dòng của bảng
• Cú pháp
DELETE FROM <tên bảng>
[WHERE <điều kiện>]
Lý thuyết CSDL 33
Ví dụ
DELETE FROM NHANVIEN
WHERE HODEM=‘Tran Van’
DELETE FROM NHANVIEN
WHERE MANV=‘345345345’
DELETE FROM NHANVIEN
Lý thuyết CSDL 34
Lệnh DELETE (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 chỉ định điều kiện ở mệnh đề WHERE, tất cả các
dòng trong bảng sẽ bị xóa
– Lệnh DELETE có thể gây ra vi phạm RB tham chiếu
• Không cho xóa
• Xóa luôn những dòng có giá trị đang tham chiếu đến
– CASCADE
• Đặt NULL cho những giá trị tham chiếu
Lý thuyết CSDL 35
Lệnh DELETE (tt)
TENNV
HONV NGSINH DCHI PHAI LUONG PHG
Tung
Nguyen 12/08/1955 638 NVC
Q5
Nam 40000 5
Hung
Nguyen 09/15/1962 Ba Ria VT Nam 38000 5
33344555
5
98798798
7
MANV MA_NQL
88866555
5
33344555
5
TENLO
T
Thanh
Manh
Hang
Bui 07/19/1968 33 NTH Q1 Nu 38000 4
99988777
7
98765432
1
Ngoc
Nhu
Le 07620/195
1
219 TD Q3 Nu 43000 4
98765432
1
88866555
5
Quynh
Vinh
Pham 11/10/1945 450 TV HN Nam 55000 1
88866555
5
NULL
Van
SODA THOIGIAN
MA_NVIEN
10 10.0
33344555
5 20 20.0
88866555
5
30 20.0
98765432
1 1 20.0
45345345
3
Tam
Tran 07/31/1972 543 MTL
Q1
Nu 25000 5
45345345
3
33344555
5
Thanh
Quang
Tran 04/08/1969 980 LHP
Q5
Nam 25000 4
98798798
7
98765432
1
Hong
10 35.0
98798798
7 30 5.0
98798798
7
Lý thuyết CSDL 36
Lệnh DELETE (tt)
TENNV
HONV NGSINH DCHI PHAI LUONG PHG
Tung
Nguyen 12/08/1955 638 NVC
Q5
Nam 40000
Hung
Nguyen 09/15/1962 Ba Ria VT Nam 38000
33344555
5
98798798
7
MANV MA_NQL
88866555
5
33344555
5
TENLO
T
Thanh
Manh
Hang
Bui 07/19/1968 33 NTH Q1 Nu 38000 4
99988777
7
98765432
1
Ngoc
Nhu
Le 07620/195
1
219 TD Q3 Nu 43000 4
98765432
1
88866555
5
Quynh
Vinh
Pham 11/10/1945 450 TV HN Nam 55000 1
88866555
5
NULL
Van
Tam
Tran 07/31/1972 543 MTL
Q1
Nu 25000
5
5
5
45345345
3
33344555
5
Thanh
Quang
Tran 04/08/1969 980 LHP
Q5
Nam 25000 4
98798798
7
98765432
1
Hong
NULL
NULL
NULL
05/22/1988
333445555
Nghien cuu 5
NG_NHANCHU
C
MA_NVIEN
01/01/1995
06/19/1981
987987987
888665555
TENPHG MAPHG
Dieu hanh 4
Quan ly 1
Lý thuyết CSDL 37
Lệnh UPDATE
• Dùng để thay đổi giá trị của thuộc tính cho các dòng của
bảng
• Cú pháp
UPDATE <tên bảng>
SET <tên thuộc tính>=<giá trị mới>,
<tên thuộc tính>=<giá trị mới>,
…
[WHERE <điều kiện>]
Lý thuyết CSDL 38
Ví dụ
UPDATE NHANVIEN
SET NGSINH=’08/12/1965’
WHERE MANV=‘333445555’
UPDATE NHANVIEN
SET LUONG=LUONG*1.1
Lý thuyết CSDL 39
Ví dụ 25
• Với đề án có mã số 10, hãy thay đổi nơi thực hiện đề án
thành ‘Vung Tau’ và phòng ban phụ trách là phòng 5
UPDATE DEAN
SET DIADIEM_DA=’Vung Tau’, PHONG=5
WHERE MADA=10
Lý thuyết CSDL 40
Lệnh UPDATE
• Nhận xét
– Những dòng thỏa điều kiện tại mệnh đề WHERE sẽ được cập
nhật giá trị mới
– Nếu không chỉ định điều kiện ở mệnh đề WHERE, tất cả các
dòng trong bảng sẽ bị cập nhật
– Lệnh UPDATE có thể gây ra vi phạm RB tham chiếu
• Không cho sửa
• Sửa luôn những dòng có giá trị đang tham chiếu đến
– CASCADE
Lý thuyết CSDL 41
Nội dung chi tiết
• Giới thiệu
• Định nghĩa dữ liệu
• Cập nhật dữ liệu
• Truy vấn dữ liệu
– Truy vấn cơ bản
– Tập hợp, so sánh tập hợp và truy vấn lồng
– Hàm kết hợp và gom nhóm
– Một số kiểu truy vấn khác
• Tính đầy đủ của SQL
• Khung nhìn (view)
Lý thuyết CSDL 42
Truy vấn dữ liệu
• Là ngôn ngữ rút trích dữ liệu thỏa một số điều kiện nào đó
• Dựa trên
– Cho phép 1 bảng có nhiều dòng trùng nhau
Phép toán ĐSQH Một số bổ sung

Lý thuyết CSDL 43
Truy vấn cơ bản
• Gồm 3 mệnh đề
– <danh sách các cột>
• Tên các cột cần được hiển thị trong kết quả truy vấn
– <danh sách các bảng>
• Tên các bảng liên quan đến câu truy vấn
– <điều kiện>
• Biểu thức boolean xác định dòng nào sẽ được rút trích
• Nối các biểu thức: AND, OR, và NOT
• Phép toán:  ,  ,  ,  ,  , , LIKE và BETWEEN
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
Lý thuyết CSDL 44
Truy vấn cơ bản (tt)
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>



SELECT L
FROM R
WHERE C
L (C (R))
• SQL và ĐSQH
Lý thuyết CSDL 45
Ví dụ
SELECT *
FROM NHANVIEN
WHERE PHONG=5
Lấy tất cả các cột
của quan hệ kết quả
TENNV
HONV NS DCHI GT LUONG PHO
NG
Tung
Nguyen 12/08/1955 638 NVC Q5 Nam 40000 5
Hung
Nguyen 09/15/1962 Ba Ria VT Nam 38000 5
333445555
987987987
MANV MA_NQL
888665555
333445555
TENDEM
Thanh
Manh
Lý thuyết CSDL 46
Mệnh đề SELECT
SELECT MANV, HONV, TENDEM, TENNV
FROM NHANVIEN
WHERE PHONG=5 AND GT=‘Nam’
TENNV
HONV
Tung
Nguyen
Hung
Nguyen
TENDEM
Thanh
Manh
333445555
987987987
MANV
Lý thuyết CSDL 47
Mệnh đề SELECT (tt)
SELECT MANV, HONV AS HO, TENDEM AS ‘TEN DEM’, TENNV AS TEN
FROM NHANVIEN
WHERE PHONG=5 AND GT=‘Nam’
TEN
HO
Tung
Nguyen
Hung
Nguyen
TEN DEM
Thanh
Manh
333445555
987987987
MANV
Tên bí danh
Lý thuyết CSDL 48
Mệnh đề SELECT (tt)
SELECT MANV, HONV + ‘ ’ + TENDEM + ‘ ’ + TENNV AS ‘HO TEN’
FROM NHANVIEN
WHERE PHONG=5 AND GT=‘Nam’
HO TEN
Nguyen Thanh Tung
Nguyen Manh Hung
333445555
987987987
MANV
Mở rộng
Lý thuyết CSDL 49
Mệnh đề SELECT (tt)
SELECT MANV, LUONG*1.1 AS ‘LUONG10%’
FROM NHANVIEN
WHERE PHONG=5 AND GT=‘Nam’
LUONG10%
33000
27500
333445555
987987987
MANV
Mở rộng
Lý thuyết CSDL 50
Mệnh đề SELECT (tt)
SELECT LUONG
FROM NHANVIEN
WHERE PHONG=5 AND GT=‘Nam’
Loại bỏ các dòng trùng nhau
- Tốn chi phí
- Người dùng muốn thấy
LUONG
30000
25000
25000
38000
LUONG
30000
25000
38000
SELECT DISTINCT LUONG
FROM NHANVIEN
WHERE PHONG=5 AND GT=‘Nam’
Lý thuyết CSDL 51
Ví dụ
• Cho biết MANV và TENNV làm việc ở phòng ‘Nghien cuu’
Lý thuyết CSDL 52
Mệnh đề WHERE
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHONG=‘Nghien cuu’ AND
Biểu thức logic
TRUE TRUE
PHONG=MAPHONG
Lý thuyết CSDL 53
Mệnh đề WHERE (tt)
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE (TENPHONG=‘Nghien cuu’ OR TENPHONG=‘Quan ly’) AND GT=‘Nam’ AND
PHONG=MAPHONG
Độ ưu tiên
Lý thuyết CSDL 54
Mệnh đề WHERE (tt)
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG>20000 AND LUONG<30000
BETWEEN
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG BETWEEN 20000 AND 30000
Lý thuyết CSDL 55
Mệnh đề WHERE (tt)
NOT BETWEEN
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG NOT BETWEEN 20000 AND 30000
Lý thuyết CSDL 56
Mệnh đề WHERE (tt)
SELECT MANV, TENNV
FROM NHANVIEN
WHERE DCHI LIKE ‘Nguyen _ _ _ _’
LIKE
SELECT MANV, TENNV
FROM NHANVIEN
WHERE DCHI LIKE ‘Nguyen %’
Chuỗi bất kỳ
Ký tự bất kỳ
Lý thuyết CSDL 57
Mệnh đề WHERE (tt)
SELECT MANV, TENNV
FROM NHANVIEN
WHERE HONV LIKE ‘Nguyen’
NOT LIKE
SELECT MANV, TENNV
FROM NHANVIEN
WHERE HONV NOT LIKE ‘Nguyen’
Lý thuyết CSDL 58
Mệnh đề WHERE (tt)
SELECT MANV, TENNV
FROM NHANVIEN
WHERE DCHI LIKE ‘% Nguyens_%’ ESCAPE ‘s’
ESCAPE
‘Nguyen_’
WHERE ColumnA LIKE '%5/%%' ESCAPE '/'
Lý thuyết CSDL 59
Mệnh đề WHERE (tt)
Ngày giờ
SELECT MANV, TENNV
FROM NHANVIEN
WHERE NGSINH BETWEEN ‘1955-12-08’ AND ‘1966-07-19’
Lý thuyết CSDL 60
Mệnh đề WHERE (tt)
NULL
– Sử dụng trong trường hợp
• Không biết (value unknown)
• Không thể áp dụng (value inapplicable)
• Không tồn tại (value withheld)
– 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
• x + 3 cho ra kết quả là NULL
• x + 3 là một biểu thức không hợp lệ trong SQL
– 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
• x = 3 cho ra kết quả là UNKNOWN
• x = 3 là một so sánh không hợp lệ trong SQL
Lý thuyết CSDL 61
Mệnh đề WHERE (tt)
NULL
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MA_NQL IS NULL
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MA_NQL IS NOT NULL
Lý thuyết CSDL 62
WHERE TRUE
Mệnh đề FROM
SELECT MANV, MAPHONG
FROM NHANVIEN, PHONGBAN
Không sử dụng mệnh đề WHERE
MAPHONG
1
4
333445555
333445555
MANV
5
1
987987987
987987987
333445555
4
5
987987987
… …
Lý thuyết CSDL 63
Mệnh đề FROM (tt)
SELECT TENPHONG, DIADIEM
FROM PHONGBAN, DDIEM_PHG
WHERE MAPHONG=MAPHONG
Tên bí danh
SELECT TENPHONG, DIADIEM
FROM PHONGBAN AS PB, DDIEM_PHG AS DD
WHERE PB.MAPHONG=DD.MAPHONG
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
Lý thuyết CSDL 64
Ví dụ 1
• Với những đề án ở ‘Ha Noi’, cho biết mã đề án, mã phòng,
tên phòng chủ trì đề án, họ tên trưởng phòng cùng với ngày
sinh và địa chỉ của người ấy
Lý thuyết CSDL 65
Ví dụ 2
• Tìm họ tên của nhân viên phòng số 5 có tham gia vào đề án
“Sản phẩm X” với số giờ làm việc trên 10 giờ
Lý thuyết CSDL 66
Ví dụ 3
• Tìm họ tên của từng nhân viên và người phụ trách trực tiếp
nhân viên đó
Lý thuyết CSDL 67
Ví dụ 4
• Tìm họ tên của những nhân viên được “Nguyen Thanh Tung”
phụ trách trực tiếp
Lý thuyết CSDL 68
Mệnh đề ORDER BY
• Dùng để hiển thị kết quả câu truy vấn theo một thứ tự nào đó
• Cú pháp
– ASC: tăng (mặc định)
– DESC: giảm
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
ORDER BY <danh sách các cột>
Lý thuyết CSDL 69
Mệnh đề ORDER BY (tt)
• Ví dụ
SELECT MA_NVIEN, SODA
FROM PHANCONG
ORDER BY MA_NVIEN DESC, SODA
SODA
10
30
99988777
7
99988777
7
MA_NVIEN
10
30
98798798
7
98765432
1
98798798
7
10
20
98765432
1 30
98765432
1
Lý thuyết CSDL 70
Nội dung chi tiết
• Giới thiệu
• Định nghĩa dữ liệu
• Truy vấn dữ liệu
– Truy vấn cơ bản
– Tập hợp, so sánh tập hợp và truy vấn lồng
– Hàm kết hợp và gom nhóm
– Một số dạng truy vấn khác
• Cập nhật dữ liệu
• Tính đầy đủ của SQL
• Khung nhìn (view)
Lý thuyết CSDL 71
Phép toán tập hợp trong SQL
• SQL có cài đặt các phép toán
– Hợp (UNION)
– Giao (INTERSECT)
– Trừ (EXCEPT)
• Kết quả trả về là tập hợp
– Loại bỏ các bộ trùng nhau
– Để giữ lại các bộ trùng nhau
• UNION ALL
Lý thuyết CSDL 72
Phép toán tập hợp trong SQL (tt)
• Cú pháp
SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện>
UNION [ALL]
SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện>
SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện>
INTERSECT
SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện>
SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện>
EXCEPT
SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện>
Lý thuyết CSDL 73
Ví dụ 5
• Cho biết các mã đề án có
– 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’
Lý thuyết CSDL 74
Ví dụ 6
• Tìm nhân viên có người thân cùng tên và cùng giới tính
Lý thuyết CSDL 75
Ví dụ 7
• Tìm những nhân viên không có thân nhân nào
Lý thuyết CSDL 76
Truy vấn lồng
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=‘Nghien cuu’ AND PHONG=MAPHONG
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <so sánh tập hợp> (
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>)
Câu truy vấn ngoài
(Outer query)
Câu truy vấn trong
(Subquery)
Lý thuyết CSDL 77
Truy vấn lồng (tt)
• Các câu lệnh SELECT có thể lồng nhau ở nhiều mức
• Câu truy vấn con thường trả về một tập các giá trị
• Các câu truy vấn trong trong cùng một mệnh đề WHERE
được kết hợp bằng phép nối logic
• Mệnh đề WHERE của câu truy vấn ngoài
– <biểu thức> <so sánh tập hợp> <truy vấn con>
– So sánh tập hợp thường đi cùng với một số toán tử
• IN, NOT IN
• ALL
• ANY hoặc SOME
– Kiểm tra sự tồn tại
• EXISTS
• NOT EXISTS
Lý thuyết CSDL 78
Truy vấn lồng (tt)
• Có 2 loại truy vấn lồng
– Lồng phân cấp
• Mệnh đề WHERE của truy vấn trong không tham chiếu đến thuộc
tính của các quan hệ trong mệnh đề FROM ở truy vấn ngoài
• Khi thực hiện, câu truy vấn trong sẽ được thực hiện trước
– Lồng tương quan
• Mệnh đề WHERE của truy vấn trong tham chiếu ít nhất một thuộc
tính của các quan hệ trong mệnh đề FROM ở truy vấn ngoài
• Khi thực hiện, câu truy vấn trong sẽ được thực hiện nhiều lần, mỗi
lần tương ứng với một bộ của truy vấn ngoài
Lý thuyết CSDL 79
Ví dụ - Lồng phân cấp
SELECT MANV, TENNV
FROM NHANVIEN
WHERE PHONG IN (
SELECT MAPHONG
FROM DIADIEM_PHG
WHERE DIADIEM=‘TP HCM’ )
(1, 5)
SELECT MANV, TENNV
FROM NHANVIEN, DIADIEM_PHG
WHERE DIADIEM=‘TP HCM’ AND PHONG=MAPHONG
Lý thuyết CSDL 80
Ví dụ 4
• Tìm họ tên của những nhân viên được “Nguyen Thanh Tung”
phụ trách trực tiếp
Lý thuyết CSDL 81
Ví dụ 7
• Tìm những nhân viên không có thân nhân nào
Lý thuyết CSDL 82
Ví dụ 8
• Tìm những nhân viên có lương lớn hơn lương của ít
nhất một nhân viên phòng 4
Lý thuyết CSDL 83
Ví dụ 9
• Tìm những nhân viên có lương lớn hơn lương của tất cả
nhân viên phòng 4
Lý thuyết CSDL 84
Ví dụ 10
• Tìm những trưởng phòng có tối thiểu một thân nhân
Lý thuyết CSDL 85
Ví dụ - Lồng tương quan
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHONG=‘Nghien cuu’ AND
PHONG=MAPHONG
SELECT MANV, TENNV
FROM NHANVIEN
WHERE EXISTS (
SELECT *
FROM PHONGBAN
WHERE TENPHONG=‘Nghien cuu’ AND PHONG=MAPHONG )
Lý thuyết CSDL 86
Ví dụ 6
• Tìm nhân viên có người thân cùng tên và cùng giới tính
Lý thuyết CSDL 87
Ví dụ 7
• Tìm những nhân viên không có thân nhân nào
Lý thuyết CSDL 88
Ví dụ 8
• Tìm những nhân viên có lương lớn hơn lương của ít
nhất một nhân viên phòng 4
Lý thuyết CSDL 89
Ví dụ 10
• Tìm những trưởng phòng có tối thiểu một thân nhân
Lý thuyết CSDL 90
Nhận xét IN và EXISTS
• IN
– <tên cột> IN <câu truy vấn trong>
– Thuộc tính ở mệnh đề SELECT của truy vấn trong phải có
cùng kiểu dữ liệu với thuộc tính ở mệnh đề WHERE của truy
vấn ngoài
• EXISTS
– Không cần có thuộc tính, hằng số hay biểu thức nào khác
đứng trước
– Không nhất thiết liệt kê tên thuộc tính ở mệnh đề SELECT của
truy vấn trong
– Những câu truy vấn có IN đều có thể chuyển thành câu truy
vấn có EXISTS
Lý thuyết CSDL 91
Phép chia trong SQL
• RS là tập các giá trị ai trong R sao cho không có giá trị bi
nào trong S làm cho bộ (ai, bi) không tồn tại trong R
A B


a
a
 a
 a
 a
 a
 a
 a
C D


a
b
 a
 a
 b
 a
 b
 b
E
1
3
1
1
1
1
1
1
R D E
a
S
b
1
1
A B C
 a 
 a 
RS
ai
bi
Lý thuyết CSDL 92
Phép chia trong SQL (tt)
• Sử dụng NOT EXISTS để biểu diễn
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 ))
Lý thuyết CSDL 93
Ví dụ 11
• Tìm tên các nhân viên được phân công làm tất cả các đề
án
– Tìm tên các nhân viên mà không có đề án nào là không được
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 ra TENNV
Lý thuyết CSDL 94
Ví dụ 11 (tt)
• Tìm tên các nhân viên được phân công làm tất cả các đề án
Select *
From nhanvien
where manv in(
SELECT r1.manv
FROM PHANCONG R1
WHERE not exists(
SELECT MADA
FROM DEAN S
WHERE not EXISTS (
SELECT *
FROM PHANCONG R2
WHERE R2.SODA=S.MADA
and r1.manv=r2.manv)
) )
Lý thuyết CSDL 95
Nội dung chi tiết
• Giới thiệu
• Định nghĩa dữ liệu
• Truy vấn dữ liệu
– Truy vấn cơ bản
– Tập hợp, so sánh tập hợp và truy vấn lồng
– Hàm kết hợp và gom nhóm
– Một số dạng truy vấn khác
• Cập nhật dữ liệu
• Tính đầy đủ của SQL
• Khung nhìn (view)
Lý thuyết CSDL 96
Hàm kết hợp
• COUNT
– COUNT(*) đếm số dòng
– COUNT(<tên thuộc tính>) đếm số giá trị khác NULL của thuộc
tính
– COUNT(DISTINCT <tên thuộc tính>) đếm số giá trị khác nhau
và khác NULL của thuộc tính
• MIN
• MAX
• SUM
• AVG
• Các hàm kết hợp được đặt ở mệnh đề SELECT
Lý thuyết CSDL 97
Ví dụ 12
• Tìm tổng lương, lương cao nhất, lương thấp nhất và
lương trung bình của các nhân viên
select sum(luong) as tongluong,max(luong)
luong_max,min(luong) luong_min ,avg(luong) luongTB
from nhanvien
Lý thuyết CSDL 98
Ví dụ 13
• Cho biết số lượng nhân viên của phòng ‘Nghien cuu’
Lý thuyết CSDL 99
Ví dụ 14
• Cho biết số lượng nhân viên của từng phòng ban
SL_NV
5
4
3
3
PHONG
1 1
TENNV
HONV NGSINH DCHI PHAI LUONG PHO
NG
Tung
Nguyen 12/08/1955 638 NVC
Q5
Nam 40000 5
Hung
Nguyen 09/15/1962 Ba Ria VT Nam 38000 5
33344555
5
98798798
7
MANV MA_NQL
88866555
5
33344555
5
TENLO
T
Thanh
Manh
Tam
Tran 07/31/1972 543 MTL
Q1
Nu 25000 5
Hang
Bui 07/19/1968 33 NTH Q1 Nu 38000 4
45345345
3
99988777
7
33344555
5
98765432
1
Thanh
Ngoc
Nhu
Le 07620/195
1
219 TD Q3 Nu 43000 4
98765432
1
88866555
5
Quynh
Quang
Tran 04/08/1969 980 LHP
Q5
Nam 25000 4
Vinh
Pham 11/10/1945 450 TV HN Nam 55000 1
98798798
7
88866555
5
98765432
1
NULL
Hong
Van
Lý thuyết CSDL 100
Gom nhóm
• Cú pháp
• Sau khi gom nhóm
– Mỗi nhóm các bộ sẽ có cùng giá trị tại các thuộc tính gom
nhóm
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
GROUP BY <danh sách các cột gom nhóm>
Lý thuyết CSDL 101
Ví dụ 14
• Cho biết số lượng nhân viên của từng phòng ban
Lý thuyết CSDL 102
Ví dụ 15
• Với mỗi nhân viên cho biết mã số, họ tên, số lượng đề án
và tổng thời gian mà họ tham gia
SODA THOIGIAN
1 32.5
2 7.5
123456789
123456789
MA_NVIEN
2 10.0
3 10.0
333445555
333445555
10 10.0
333445555
20 20.0
10 35.0
888665555
987987987
30 5.0
987987987
30 20.0
987654321
20 15.0
987654321
1 20.0
453453453
2 20.0
453453453
Lý thuyết CSDL 103
Ví dụ 16
• Cho biết những nhân viên tham gia từ 2 đề án trở lên
SODA THOIGIAN
1 32.5
2 7.5
12345678
9
12345678
9
MA_NVIEN
2 10.0
3 10.0
33344555
5
33344555
5 10 10.0
33344555
5 20 20.0
10 35.0
88866555
5
98798798
7 30 5.0
98798798
7 30 20.0
98765432
1 20 15.0
98765432
1 1 20.0
45345345
3 2 20.0
45345345
3
bị loại ra
Lý thuyết CSDL 104
Điều kiện trên nhóm
• Cú pháp
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
GROUP BY <danh sách các cột gom nhóm>
HAVING <điều kiện trên nhóm>
Lý thuyết CSDL 105
Ví dụ 16
• Cho biết những nhân viên tham gia từ 2 đề án trở lên
Lý thuyết CSDL 106
Ví dụ 17
• Cho biết những phòng ban (TENPHONG) có lương trung
bình của các nhân viên lớn hơn 2tr
Lý thuyết CSDL 107
Nhận xét
• Mệnh đề GROUP BY
– Các thuộc tính trong mệnh đề SELECT (trừ những thuộc tính
trong các hàm kết hợp) phải xuất hiện trong mệnh đề GROUP
BY
• Mệnh đề HAVING
– Sử dụng các hàm kết hợp trong mệnh đề SELECT để kiểm tra
một số điều kiện nào đó
– Chỉ kiểm tra điều kiện trên nhóm, không là điều kiện lọc trên
từng bộ
– Sau khi gom nhóm điều kiện trên nhóm mới được thực hiện
Lý thuyết CSDL 108
Nhận xét (tt)
• Thứ tự thực hiện câu truy vấn có mệnh đề GROUP BY và
HAVING
– (1) Chọn ra những dòng thỏa điều kiện trong mệnh đề
WHERE
– (2) Những dòng này sẽ được gom thành nhiều nhóm tương
ứng với mệnh đề GROUP BY
– (3) Áp dụng các hàm kết hợp cho mỗi nhóm
– (4) Bỏ qua những nhóm không thỏa điều kiện trong mệnh đề
HAVING
– (5) Rút trích các giá trị của các cột và hàm kết hợp trong mệnh
đề SELECT
Lý thuyết CSDL 109
Ví dụ 18
• Tìm những phòng ban có lương trung bình cao nhất
Lý thuyết CSDL 110
Ví dụ 19
• Tìm 3 nhân viên có lương cao nhất
select top 3 *
from nhanvien
order by luong desc
Lý thuyết CSDL 111
Ví dụ 11
• Tìm tên các nhân viên được phân công làm tất cả các đề
án
Lý thuyết CSDL 112
Nội dung chi tiết
• Giới thiệu
• Định nghĩa dữ liệu
• Truy vấn dữ liệu
– Truy vấn cơ bản
– Tập hợp, so sánh tập hợp và truy vấn lồng
– Hàm kết hợp và gom nhóm
– Một số dạng truy vấn khác
• Cập nhật dữ liệu
• Tính đầy đủ của SQL
• Khung nhìn (view)
Lý thuyết CSDL 113
Một số dạng truy vấn khác
• Truy vấn con ở mệnh đề FROM
• Điều kiện kết ở mệnh đề FROM
– Phép kết tự nhiên
– Phép kết ngoài
Lý thuyết CSDL 114
Truy vấn con ở mệnh đề FROM
• Kết quả trả về của một câu truy vấn phụ là một bảng
– Bảng trung gian trong quá trình truy vấn
– Không có lưu trữ thật sự
• Cú pháp
SELECT <danh sách các cột>
FROM R1, R2, (<truy vấn con>) AS tên_bảng
WHERE <điều kiện>
Lý thuyết CSDL 115
Ví dụ 18
• Tìm những phòng ban có lương trung bình cao nhất
Select phong, avg(luong)
From nhanvien
Group by phong
Having avg(luong)=
(Select max(luong_tb)
From (Select phong,avg(luong) as luong_tb
From nhanvien
Group by phong) as p
)
Lý thuyết CSDL 116
Điều kiện kết ở mệnh đề FROM
• Kết bằng
• Kết ngoài
SELECT <danh sách các cột>
FROM R1 [INNER] JOIN R2 ON <biểu thức>
WHERE <điều kiện>
SELECT <danh sách các cột>
FROM R1 LEFT|RIGHT [OUTER] JOIN R2 ON <biểu thức>
WHERE <điều kiện>
Lý thuyết CSDL 117
Ví dụ 20
• Tìm mã và tên các nhân viên làm việc tại phòng ‘Nghien
cuu’
select manv,tennv
from nhanvien join phongban on phong=maphong
where tenphong =‘Nghien cuu’
Select nv.manv,tenda
From nhanvien nv join phancong pc on nv.manv=pc.manv
Join dean da on da.mada=pc.mada
Lý thuyết CSDL 118
Ví dụ 21
• Tìm họ tên các nhân viên và tên các đề án nhân viên
tham gia nếu có
select tennv,mada,tenda
From (select tennv,soda
from nhanvien nv left join phancong pc on
nv.manv=pc.manv) as a left join dean on
soda=mada
Lý thuyết CSDL 119
Kết luận
SELECT <danh sách các cột>
FROM <danh sách các bảng>
[WHERE <điều kiện>]
[GROUP BY <các thuộc tính gom nhóm>]
[HAVING <điều kiện trên nhóm>]
[ORDER BY <các thuộc tính sắp thứ tự>]
Lý thuyết CSDL 120
Nội dung chi tiết
• Giới thiệu
• Định nghĩa dữ liệu
• Cập nhật dữ liệu
• Truy vấn dữ liệu
• Tính đầy đủ của SQL
• Khung nhìn (view)
Lý thuyết CSDL 121
Tính đầy đủ của SQL
• Xem xét khả năng của SQL có thực hiện được tất cả các biểu thức
của các phép toán đại số quan hệ. Để thực hiện một biểu thức ta
thực hiện theo thứ tự từ các biểu thức con dần ra đến biểu thức toàn
bộ. Vậy để xét xem SQL có thể thực hiện được các biểu thức đại số
quan hệ ta chỉ cần xét lần lượt cho các phép toán cơ bản của đại số
quan hệ.
• Trong chương 3, ta đã có 5 phép toán cơ bản là hợp, hiệu, tích
Decac, chọn, chiếu của đại số quan hệ độc lập với nhau.
• Các phép toán khác của đại số quan hệ như nối tự nhiên, giao, nối
nửa, nối theta, chia đều có thể nhận được từ phép toán cơ bản trên.
• Vậy để SQL thực hiện được các phép toán đại số quan hệ, ta chỉ cần
cài đặt cho SQL thực hiện 5 phép toán cơ bản hợp, hiệu, tích Decac,
chọn, chiếu .
Lý thuyết CSDL 122
Tính đầy đủ của SQL (tt)
• Phép hợp:
Giả sử ta có 2 quan hệ r và s có cùng lược đồ
R={A1,A2,…,An}. Khi đó để tính T=r+s ta viết:
Insert into T
Select *
From r;
Tiếp theo là:
Insert into T
Select *
From s;
Lý thuyết CSDL 123
Tính đầy đủ của SQL (tt)
• Phép trừ:
Để tính T=r-s trước tiên chúng ta chèn r vào T
Insert into T
Select *
From r;
sau đó ta dùng câu lệnh xóa như sau:
Delete from T
Where (A1,..,An) in
(Select * from s)
Lý thuyết CSDL 124
Tính đầy đủ của SQL (tt)
• Tích Decac
Insert into T
Select r.*,s.*
From r,s
Lý thuyết CSDL 125
Tính đầy đủ của SQL (tt)
• Phép chọn T=r(E)
Insert into T
Select *
From r
Where E;
• Phép chiếu:
Giả sử X là tập con của R, X={A1,…,Ak}
T=r.X, ta có câu lệnh
Insert into T
Select A1,…,Ak
From r;
Lý thuyết CSDL 126
Nội dung chi tiết
• Giới thiệu
• Định nghĩa dữ liệu
• Cập nhật dữ liệu
• Truy vấn dữ liệu
• Tính đầy đủ của SQL
• Khung nhìn (view)
– Định nghĩa
– Truy vấn
– Cập nhật
Lý thuyết CSDL 127
Khung nhìn
• Bảng là một quan hệ được tổ chức lưu trữ vật lý trong
CSDL
• Khung nhìn cũng là một quan hệ
– Không được lưu trữ vật lý (bảng ảo)
– Không chứa dữ liệu
– Được định nghĩa từ những bảng khác
– Có thể truy vấn hay cập nhật thông qua khung nhìn
Lý thuyết CSDL 128
Khung nhìn (tt)
• Tại sao phải sử dụng khung nhìn?
– Che dấu tính phức tạp của dữ liệu
– Đơn giản hóa các câu truy vấn
– Hiển thị dữ liệu dưới dạng tiện dụng nhất
– An toàn dữ liệu
Lý thuyết CSDL 129
Định nghĩa khung nhìn
• Cú pháp
• Bảng ảo này có
– Danh sách thuộc tính trùng với các thuộc tính trong mệnh đề
SELECT
– Số dòng phụ thuộc vào điều kiện ở mệnh đề WHERE
– Dữ liệu được lấy từ các bảng ở mệnh đề FROM
CREATE VIEW <tên khung nhìn> AS
<câu truy vấn>
DROP VIEW <tên khung nhìn>
Lý thuyết CSDL 130
Ví dụ
CREATE VIEW NV_P5 AS
SELECT MANV, HODEM, TENVN
FROM NHANVIEN
WHERE PHONG=5
CREATE VIEW TONGLNG_SLNV_PB AS
SELECT MAPHONG, TENPHONG, COUNT(*) AS
SLNV, SUM(LUONG) AS TONGLNG
FROM NHANVIEN, PHONGBAN
WHERE PHONG=MAPHONG
GROUP BY MAPHONG ,TENPHONG
Lý thuyết CSDL 131
Truy vấn trên khung nhìn
• Tuy không chứa dữ liệu nhưng có thể thực hiện các câu
truy vấn trên khung nhìn
SELECT TENNV
FROM NV_P5
WHERE HODEM LIKE ‘Nguyen’
NV_P5  MANV,HODEM, TENNV (Phong=5 (NHANVIEN))
TENNV (HODEM=‘Nguyen’ (NV_P5))
Lý thuyết CSDL 132
Truy vấn trên khung nhìn (tt)
• Có thể viết câu truy vấn dữ liệu từ khung nhìn và bảng
SELECT HONV, TENNV, TENDA, THOIGIAN
FROM NV_P5, PHANCONG, DEAN
WHERE MANV=MA_NVIEN AND SODA=MADA
NV_P5  MANV,HONV, TENDEM, TENNV (PHG=5 (NHANVIEN))
TMP  NV_P5 MANV=MA_NVIEN PHONGBAN SODA=MADADEAN
TENNV,TENDA,THOIGIAN(TMP)
Lý thuyết CSDL 133
Ví dụ 18
• Tìm những phòng ban có lương trung bình cao nhất
CREATE VIEW LUONGTB_PHONG AS
SELECT TENPHONG,MAPHONG,AVG(LUONG) AS LUONGTB
FROM NHANVIEN,PHONGBAN
WHERE PHONG=MAPHONG
GROUP BY TENPHONG,MAPHONG
SELECT *
FROM LUONGTB_PHONG
WHERE LUONGTB =(
SELECT MAX(LUONGTB)
FROM LUONGTB_PHONG)
Lý thuyết CSDL 134
Cập nhật trên khung nhìn
• Có thể dùng các câu lệnh INSERT, DELETE và UPDATE
cho các khung nhìn đơn giản
– Khung nhìn được xây dựng trên 1 bảng và có khóa chính của
bảng
• Không thể cập nhật dữ liệu nếu
– Khung nhìn có dùng từ khóa DISTINCT
– Khung nhìn có sử dụng các hàm kết hợp
– Khung nhìn có mệnh đề SELECT mở rộng
– Khung nhìn được xây dựng từ bảng có RB trên cột
– Khung nhìn được xây dựng từ nhiều bảng
Lý thuyết CSDL 135
Cập nhật trên khung nhìn (tt)
• Sửa lại họ cho nhân viên mã ‘123456789’ ở phòng 5 là
‘Pham’
UPDATE NV_P5
SET HODEM=‘Pham’
WHERE MANV= ‘123456789’
Lý thuyết CSDL 136

More Related Content

Similar to Chuong6_NgonnguSQL.pdf

Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2pisu412
 
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)Hoa Le
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql. .
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sqlLiễu Hồng
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sqlVu Phong
 
Ngon ngu truy van sql
Ngon ngu truy van sqlNgon ngu truy van sql
Ngon ngu truy van sqlPhùng Duy
 
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)MasterCode.vn
 
Cơ sở dữ liệu SQL qua các vi du cu the.pptx
Cơ sở dữ liệu SQL qua các vi du cu the.pptxCơ sở dữ liệu SQL qua các vi du cu the.pptx
Cơ sở dữ liệu SQL qua các vi du cu the.pptxNguynNgcTn10
 
Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Vo Oanh
 
[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003
[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003
[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003Phạm Văn Hưng
 
Giao-Trinh-Oracle-SQL-PLSQL-Co-Ban.pdf
Giao-Trinh-Oracle-SQL-PLSQL-Co-Ban.pdfGiao-Trinh-Oracle-SQL-PLSQL-Co-Ban.pdf
Giao-Trinh-Oracle-SQL-PLSQL-Co-Ban.pdftuanbnonline
 
Sinh vienit.net --sinhvienit.net-giao-trinh-oracle-sql-plsql-co-ban
Sinh vienit.net --sinhvienit.net-giao-trinh-oracle-sql-plsql-co-banSinh vienit.net --sinhvienit.net-giao-trinh-oracle-sql-plsql-co-ban
Sinh vienit.net --sinhvienit.net-giao-trinh-oracle-sql-plsql-co-banSon Nguyen Ba
 
03-Indexes.pdf
03-Indexes.pdf03-Indexes.pdf
03-Indexes.pdfDngKen1
 
b34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdfb34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdfQuyVo27
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3pisu412
 

Similar to Chuong6_NgonnguSQL.pdf (20)

Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
 
Phan3
Phan3Phan3
Phan3
 
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql
 
Ngon ngu truy van sql
Ngon ngu truy van sqlNgon ngu truy van sql
Ngon ngu truy van sql
 
Com201 slide 4
Com201   slide 4Com201   slide 4
Com201 slide 4
 
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
 
Cơ sở dữ liệu SQL qua các vi du cu the.pptx
Cơ sở dữ liệu SQL qua các vi du cu the.pptxCơ sở dữ liệu SQL qua các vi du cu the.pptx
Cơ sở dữ liệu SQL qua các vi du cu the.pptx
 
Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2
 
Sql understanding
Sql understandingSql understanding
Sql understanding
 
[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003
[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003
[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003
 
Giao-Trinh-Oracle-SQL-PLSQL-Co-Ban.pdf
Giao-Trinh-Oracle-SQL-PLSQL-Co-Ban.pdfGiao-Trinh-Oracle-SQL-PLSQL-Co-Ban.pdf
Giao-Trinh-Oracle-SQL-PLSQL-Co-Ban.pdf
 
Sinh vienit.net --sinhvienit.net-giao-trinh-oracle-sql-plsql-co-ban
Sinh vienit.net --sinhvienit.net-giao-trinh-oracle-sql-plsql-co-banSinh vienit.net --sinhvienit.net-giao-trinh-oracle-sql-plsql-co-ban
Sinh vienit.net --sinhvienit.net-giao-trinh-oracle-sql-plsql-co-ban
 
03-Indexes.pdf
03-Indexes.pdf03-Indexes.pdf
03-Indexes.pdf
 
b34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdfb34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdf
 
04 ado
04 ado04 ado
04 ado
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3
 
View sp trigger_udf
View sp trigger_udfView sp trigger_udf
View sp trigger_udf
 

Recently uploaded

QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...ThunTrn734461
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhvanhathvc
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxnhungdt08102004
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdftohoanggiabao81
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxAnAn97022
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdfNQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdfNguyễn Đăng Quang
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfVyTng986513
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Nguyen Thanh Tu Collection
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................TrnHoa46
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdf
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptx
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdfNQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 

Chuong6_NgonnguSQL.pdf

  • 1. Lý thuyết CSDL 1 GI GIÁ ÁO VIÊN: O VIÊN: Đ ĐỖ Ỗ TH THỊ Ị MAI HƯ MAI HƯỜ ỜNG NG B BỘ Ộ MÔN: MÔN: C CÁ ÁC H C HỆ Ệ TH THỐ ỐNG THÔNG TIN NG THÔNG TIN KHOA: KHOA: CÔNG NGH CÔNG NGHỆ Ệ THÔNG TIN THÔNG TIN Email: dohuong@gmail.com Email: dohuong@gmail.com CƠ SỞ DỮ LIỆU
  • 2. Lý thuyết CSDL 2 CHƯƠNG 6 Ngôn ng Ngôn ngữ ữ SQL SQL
  • 3. Lý thuyết CSDL 3 Nội dung chi tiết • Giới thiệu • Định nghĩa dữ liệu • Truy vấn dữ liệu • Cập nhật dữ liệu • Tính đầy đủ của SQL • Khung nhìn (view)
  • 4. Lý thuyết CSDL 4 Giới thiệu • Ngôn ngữ Đại số quan hệ – Cách thức truy vấn dữ liệu – Khó khăn cho người sử dụng • SQL (Structured Query Language) – Ngôn ngữ cấp cao – 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) – Được gọi là SEQUEL – Được ANSI công nhận và phát triển thành chuẩn • SQL-86 • SQL-92 • SQL-99
  • 5. Lý thuyết CSDL 5 Giới thiệu (tt) • SQL gồm – Định nghĩa dữ liệu (DDL) – Thao tác dữ liệu (DML) – Định nghĩa khung nhìn – Ràng buộc toàn vẹn – Phân quyền và bảo mật – Đ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 ~ bộ Lý thuyết : Chuẩn SQL-92 Ví dụ : SQL Server
  • 6. Lý thuyết CSDL 6 Nội dung chi tiết • Giới thiệu • Định nghĩa dữ liệu – Kiểu dữ liệu – Các lệnh định nghĩa dữ liệu • Truy vấn dữ liệu • Cập nhật dữ liệu • Tính đầy đủ của SQL • Khung nhìn (view)
  • 7. Lý thuyết CSDL 7 Định nghĩa dữ liệu • Là ngôn ngữ mô tả – Lược đồ cho mỗi quan hệ – Miền giá trị tương ứng của từng thuộc tính – Ràng buộc toàn vẹn – Chỉ mục trên mỗi quan hệ • Gồm – CREATE TABLE (tạo bảng) – DROP TABLE (xóa bảng) – ALTER TABLE (sửa bảng) – CREATE DOMAIN / CREATE TYPE (tạo miền giá trị) – CREATE DATABASE – …
  • 8. Lý thuyết CSDL 8 Kiểu dữ liệu • Số (numeric) – INTEGER – SMALLINT – NUMERIC – DECIMAL – REAL – DOUBLE PRECISION – FLOAT
  • 9. Lý thuyết CSDL 9 Kiểu dữ liệu (tt) • Chuỗi ký tự (character string) – CHARACTER, CHARACTER(n) • Chuỗi bit (bit string) – BIT, BIT(x) • Ngày giờ (datetime) – DATE gồm ngày, tháng và năm – TIME gồm giờ, phút và giây – TIMESTAMP gồm ngày và giờ
  • 10. Lý thuyết CSDL 10 Lệnh tạo bảng • Để định nghĩa một bảng – Tên bảng – Các thuộc tính • Tên thuộc tính • Kiểu dữ liệu • Các ràng buộc toàn vẹn trên thuộc tính (RBTV) • Cú pháp CREATE TABLE <Tên_bảng> ( <Tên_cột> <Kiểu_dữ_liệu> [<RBTV>], <Tên_cột> <Kiểu_dữ_liệu> [<RBTV>], … [<RBTV>] )
  • 11. Lý thuyết CSDL 11 Ví dụ CSDL • Cho cơ sở dữ liệu CÔNGTY gồm các lược đồ: – NHANVIEN(MANV, HONV, TENNV, NS, GT, DCHI, LUONG, MA_NQL, PHONG) – PHONGBAN(MAPHONG, TENPHONG, TRPHONG, NG_NHANCHUC) – DEAN(MADA, TENDA, DD_DA, PHONG) – THANNHAN(MANV, TEN_TN, NS, GT, QUANHE) – NV_DEAN(MANV, MADA, SOGIO) – PHONGBAN_DD(MAPB, DD)
  • 12. Lý thuyết CSDL 12 Ví dụ - Tạo bảng CREATE TABLE NHANVIEN ( MANV CHAR(9), HODEM VARCHAR(30), TENNV VARCHAR(10), NS DATETIME, DCHI VARCHAR(50), GT CHAR(3), LUONG INT, MA_NQL CHAR(9), PHONG INT )
  • 13. Lý thuyết CSDL 13 Lệnh tạo bảng (tt) • <RBTV> – NOT NULL – NULL – UNIQUE – DEFAULT – PRIMARY KEY – FOREIGN KEY / REFERENCES – CHECK • Đặt tên cho RBTV CONSTRAINT <Ten_RBTV> <RBTV>
  • 14. Lý thuyết CSDL 14 Ví dụ - RBTV CREATE TABLE NHANVIEN ( HODEM VARCHAR(30) NOT NULL, TENNV VARCHAR(10) NOT NULL, MANV CHAR(9) PRIMARY KEY, NS DATETIME, DCHI VARCHAR(50), GT CHAR(3) CHECK (GT IN (‘Nam’, ‘Nu’)), LUONG INT DEFAULT (10000), MA_NQL CHAR(9), PHONG INT )
  • 15. Lý thuyết CSDL 15 Ví dụ - RBTV CREATE TABLE PHONGBAN ( TENPB VARCHAR(20) UNIQUE, MAPHONG INT NOT NULL, TRPHONG CHAR(9), NG_NHANCHUC DATETIME DEFAULT (GETDATE()) ) CREATE TABLE PHANCONG ( MA_NVIEN CHAR(9) FOREIGN KEY (MA_NVIEN) REFERENCES NHANVIEN(MANV), SODA INT REFERENCES DEAN(MADA), THOIGIAN DECIMAL(3,1) )
  • 16. Lý thuyết CSDL 16 Ví dụ - Đặt tên cho RBTV CREATE TABLE NHANVIEN ( HODEM VARCHAR(30) CONSTRAINT NV_HODEM_NN NOT NULL, TENNV VARCHAR(10) NOT NULL, MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY, NS DATETIME, DCHI VARCHAR(50), GT CHAR(3) CONSTRAINT NV_GT_CHK CHECK (GT IN (‘Nam’, ‘Nu’)), LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (1000000), MA_NQL CHAR(9), PHONG INT )
  • 17. Lý thuyết CSDL 17 Ví dụ - Đặt tên cho RBTV CREATE TABLE PHANCONG ( MA_NVIEN CHAR(9), SODA INT, THOIGIAN DECIMAL(3,1), CONSTRAINT PC_MANVIEN_SODA_PK PRIMARY KEY (MA_NVIEN, SODA), CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN) REFERENCES NHANVIEN(MANV), CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA) REFERENCES DEAN(MADA) )
  • 18. Lý thuyết CSDL 18 Lệnh sửa bảng • Được dùng để – Thay đổi cấu trúc bảng – Thay đổi RBTV • Thêm cột • Xóa cột • Mở rộng cột ALTER TABLE <Tên_bảng> ADD COLUMN <Tên_cột> <Kiểu_dữ_liệu> [<RBTV>] ALTER TABLE <Tên_bảng> DROP COLUMN <Tên_cột> ALTER TABLE <Tên_bảng> ALTER COLUMN <Tên_cột> <Kiểu_dữ_liệu_mới>
  • 19. Lý thuyết CSDL 19 Lệnh sửa bảng (tt) • Thêm RBTV • Xóa RBTV ALTER TABLE <Tên_bảng> ADD CONSTRAINT <Ten_RBTV> <RBTV>, CONSTRAINT <Ten_RBTV> <RBTV>, … ALTER TABLE <Tên_bảng> DROP <Tên_RBTV>
  • 20. Lý thuyết CSDL 20 Ví dụ - Thay đổi cấu trúc bảng ALTER TABLE NHANVIEN ADD NGHENGHIEP CHAR(20) ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP ALTER TABLE NHANVIEN ALTER COLUMN NGHENGHIEP CHAR(50)
  • 21. Lý thuyết CSDL 21 Ví dụ - Thay đổi RBTV CREATE TABLE PHONGBAN ( TENPB VARCHAR(20), MAPHONG INT NOT NULL, TRPHONG CHAR(9), NG_NHANCHUC DATETIME ) ALTER TABLE PHONGBAN ADD CONSTRAINT PB_MAPHONG_PK PRIMARY KEY (MAPHONG), CONSTRAINT PB_TRPHONG FOREIGN KEY (TRPHONG) REFERENCES NHANVIEN(MANV), CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE()) FOR (NG_NHANCHUC), CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB)
  • 22. Lý thuyết CSDL 22 Lệnh xóa bảng • Đượ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 • Ví dụ DROP TABLE <Tên_bảng> DROP TABLE NHANVIEN DROP TABLE PHONGBAN DROP TABLE PHANCONG
  • 23. Lý thuyết CSDL 23 Lệnh xóa bảng (tt) NHANVIEN TENNV HONV TENDEM MANV NS DCHI GT LUON G MA_NQL PHO NG PHONGBAN TRPHO NG TENPHG MAPHO NG NG_NHANCHUC
  • 24. Lý thuyết CSDL 24 Lệnh tạo miền giá trị • Tạo ra một kiểu dữ liệu mới kế thừa những kiểu dữ liệu có sẳn • Cú pháp • Ví dụ CREATE DOMAIN <Tên_kdl_mới> AS <Kiểu_dữ_liệu> CREATE TYPE <Tên_kdl_mới> FROM <Kiểu_dữ_liệu> CREATE DOMAIN Kieu_Ten AS VARCHAR(30) CREATE TYPE Kieu_Ten FROM VARCHAR(30) not null
  • 25. Lý thuyết CSDL 25 Nội dung chi tiết • Giới thiệu • Định nghĩa dữ liệu • Cập nhật dữ liệu – Thêm (insert) – Xóa (delete) – Sửa (update) • Truy vấn dữ liệu • Tính đầy đủ của SQL • Khung nhìn (view)
  • 26. Lý thuyết CSDL 26 Lệnh INSERT • Dùng để thêm 1 hay nhiều dòng vào bảng • Để thêm dữ liệu – Tên quan hệ – Danh sách các thuộc tính cần thêm dữ liệu – Danh sách các giá trị tương ứng
  • 27. Lý thuyết CSDL 27 Lệnh INSERT (tt) • Cú pháp (thêm 1 dòng) INSERT INTO <tên bảng>(<danh sách các thuộc tính>) VALUES (<danh sách các giá trị>)
  • 28. Lý thuyết CSDL 28 Ví dụ INSERT INTO NHANVIEN(HODEM, TENNV, MANV) VALUES (‘Le Van’, ‘Tuyen’, ‘635635635’) INSERT INTO NHANVIEN VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, ’12/30/1952’, ’98 HV’, ‘Nam’, ‘37000’, 4) INSERT INTO NHANVIEN(HONV, TENDEM, TENNV, MANV, DCHI) VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, NULL)
  • 29. Lý thuyết CSDL 29 Lệnh INSERT (tt) • Nhận xét – Thứ tự các giá trị phải trùng với thứ tự các cột – Có thể thêm giá trị NULL ở những thuộc tính không là khóa chính và NOT NULL ở những thuộc tính là khóa chính hoặc có RBTV là NOT NULL – Câu lệnh INSERT sẽ gặp lỗi nếu vi phạm RBTV • Khóa chính • Tham chiếu • NOT NULL - các thuộc tính có ràng buộc NOT NULL bắt buộc phải có giá trị
  • 30. Lý thuyết CSDL 30 Lệnh INSERT (tt) • Cú pháp (thêm nhiều dòng) INSERT INTO <tên bảng>(<danh sách các thuộc tính>) <câu truy vấn con>
  • 31. Lý thuyết CSDL 31 Ví dụ CREATE TABLE THONGKE_PB ( TENPHONG VARCHAR(20), SL_NV INT, LUONG_TC INT ) INSERT INTO THONGKE_PB(TENPHONG, SL_NV, LUONG_TC) SELECT TENPHONG, COUNT(MANV), SUM(LUONG) FROM NHANVIEN, PHONGBAN WHERE PHONG=MAPHONG GROUP BY TENPHONG
  • 32. Lý thuyết CSDL 32 Lệnh DELETE • Dùng để xóa các dòng của bảng • Cú pháp DELETE FROM <tên bảng> [WHERE <điều kiện>]
  • 33. Lý thuyết CSDL 33 Ví dụ DELETE FROM NHANVIEN WHERE HODEM=‘Tran Van’ DELETE FROM NHANVIEN WHERE MANV=‘345345345’ DELETE FROM NHANVIEN
  • 34. Lý thuyết CSDL 34 Lệnh DELETE (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 chỉ định điều kiện ở mệnh đề WHERE, tất cả các dòng trong bảng sẽ bị xóa – Lệnh DELETE có thể gây ra vi phạm RB tham chiếu • Không cho xóa • Xóa luôn những dòng có giá trị đang tham chiếu đến – CASCADE • Đặt NULL cho những giá trị tham chiếu
  • 35. Lý thuyết CSDL 35 Lệnh DELETE (tt) TENNV HONV NGSINH DCHI PHAI LUONG PHG Tung Nguyen 12/08/1955 638 NVC Q5 Nam 40000 5 Hung Nguyen 09/15/1962 Ba Ria VT Nam 38000 5 33344555 5 98798798 7 MANV MA_NQL 88866555 5 33344555 5 TENLO T Thanh Manh Hang Bui 07/19/1968 33 NTH Q1 Nu 38000 4 99988777 7 98765432 1 Ngoc Nhu Le 07620/195 1 219 TD Q3 Nu 43000 4 98765432 1 88866555 5 Quynh Vinh Pham 11/10/1945 450 TV HN Nam 55000 1 88866555 5 NULL Van SODA THOIGIAN MA_NVIEN 10 10.0 33344555 5 20 20.0 88866555 5 30 20.0 98765432 1 1 20.0 45345345 3 Tam Tran 07/31/1972 543 MTL Q1 Nu 25000 5 45345345 3 33344555 5 Thanh Quang Tran 04/08/1969 980 LHP Q5 Nam 25000 4 98798798 7 98765432 1 Hong 10 35.0 98798798 7 30 5.0 98798798 7
  • 36. Lý thuyết CSDL 36 Lệnh DELETE (tt) TENNV HONV NGSINH DCHI PHAI LUONG PHG Tung Nguyen 12/08/1955 638 NVC Q5 Nam 40000 Hung Nguyen 09/15/1962 Ba Ria VT Nam 38000 33344555 5 98798798 7 MANV MA_NQL 88866555 5 33344555 5 TENLO T Thanh Manh Hang Bui 07/19/1968 33 NTH Q1 Nu 38000 4 99988777 7 98765432 1 Ngoc Nhu Le 07620/195 1 219 TD Q3 Nu 43000 4 98765432 1 88866555 5 Quynh Vinh Pham 11/10/1945 450 TV HN Nam 55000 1 88866555 5 NULL Van Tam Tran 07/31/1972 543 MTL Q1 Nu 25000 5 5 5 45345345 3 33344555 5 Thanh Quang Tran 04/08/1969 980 LHP Q5 Nam 25000 4 98798798 7 98765432 1 Hong NULL NULL NULL 05/22/1988 333445555 Nghien cuu 5 NG_NHANCHU C MA_NVIEN 01/01/1995 06/19/1981 987987987 888665555 TENPHG MAPHG Dieu hanh 4 Quan ly 1
  • 37. Lý thuyết CSDL 37 Lệnh UPDATE • Dùng để thay đổi giá trị của thuộc tính cho các dòng của bảng • Cú pháp UPDATE <tên bảng> SET <tên thuộc tính>=<giá trị mới>, <tên thuộc tính>=<giá trị mới>, … [WHERE <điều kiện>]
  • 38. Lý thuyết CSDL 38 Ví dụ UPDATE NHANVIEN SET NGSINH=’08/12/1965’ WHERE MANV=‘333445555’ UPDATE NHANVIEN SET LUONG=LUONG*1.1
  • 39. Lý thuyết CSDL 39 Ví dụ 25 • Với đề án có mã số 10, hãy thay đổi nơi thực hiện đề án thành ‘Vung Tau’ và phòng ban phụ trách là phòng 5 UPDATE DEAN SET DIADIEM_DA=’Vung Tau’, PHONG=5 WHERE MADA=10
  • 40. Lý thuyết CSDL 40 Lệnh UPDATE • Nhận xét – Những dòng thỏa điều kiện tại mệnh đề WHERE sẽ được cập nhật giá trị mới – Nếu không chỉ định điều kiện ở mệnh đề WHERE, tất cả các dòng trong bảng sẽ bị cập nhật – Lệnh UPDATE có thể gây ra vi phạm RB tham chiếu • Không cho sửa • Sửa luôn những dòng có giá trị đang tham chiếu đến – CASCADE
  • 41. Lý thuyết CSDL 41 Nội dung chi tiết • Giới thiệu • Định nghĩa dữ liệu • Cập nhật dữ liệu • Truy vấn dữ liệu – Truy vấn cơ bản – Tập hợp, so sánh tập hợp và truy vấn lồng – Hàm kết hợp và gom nhóm – Một số kiểu truy vấn khác • Tính đầy đủ của SQL • Khung nhìn (view)
  • 42. Lý thuyết CSDL 42 Truy vấn dữ liệu • Là ngôn ngữ rút trích dữ liệu thỏa một số điều kiện nào đó • Dựa trên – Cho phép 1 bảng có nhiều dòng trùng nhau Phép toán ĐSQH Một số bổ sung 
  • 43. Lý thuyết CSDL 43 Truy vấn cơ bản • Gồm 3 mệnh đề – <danh sách các cột> • Tên các cột cần được hiển thị trong kết quả truy vấn – <danh sách các bảng> • Tên các bảng liên quan đến câu truy vấn – <điều kiện> • Biểu thức boolean xác định dòng nào sẽ được rút trích • Nối các biểu thức: AND, OR, và NOT • Phép toán:  ,  ,  ,  ,  , , LIKE và BETWEEN SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện>
  • 44. Lý thuyết CSDL 44 Truy vấn cơ bản (tt) SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện>    SELECT L FROM R WHERE C L (C (R)) • SQL và ĐSQH
  • 45. Lý thuyết CSDL 45 Ví dụ SELECT * FROM NHANVIEN WHERE PHONG=5 Lấy tất cả các cột của quan hệ kết quả TENNV HONV NS DCHI GT LUONG PHO NG Tung Nguyen 12/08/1955 638 NVC Q5 Nam 40000 5 Hung Nguyen 09/15/1962 Ba Ria VT Nam 38000 5 333445555 987987987 MANV MA_NQL 888665555 333445555 TENDEM Thanh Manh
  • 46. Lý thuyết CSDL 46 Mệnh đề SELECT SELECT MANV, HONV, TENDEM, TENNV FROM NHANVIEN WHERE PHONG=5 AND GT=‘Nam’ TENNV HONV Tung Nguyen Hung Nguyen TENDEM Thanh Manh 333445555 987987987 MANV
  • 47. Lý thuyết CSDL 47 Mệnh đề SELECT (tt) SELECT MANV, HONV AS HO, TENDEM AS ‘TEN DEM’, TENNV AS TEN FROM NHANVIEN WHERE PHONG=5 AND GT=‘Nam’ TEN HO Tung Nguyen Hung Nguyen TEN DEM Thanh Manh 333445555 987987987 MANV Tên bí danh
  • 48. Lý thuyết CSDL 48 Mệnh đề SELECT (tt) SELECT MANV, HONV + ‘ ’ + TENDEM + ‘ ’ + TENNV AS ‘HO TEN’ FROM NHANVIEN WHERE PHONG=5 AND GT=‘Nam’ HO TEN Nguyen Thanh Tung Nguyen Manh Hung 333445555 987987987 MANV Mở rộng
  • 49. Lý thuyết CSDL 49 Mệnh đề SELECT (tt) SELECT MANV, LUONG*1.1 AS ‘LUONG10%’ FROM NHANVIEN WHERE PHONG=5 AND GT=‘Nam’ LUONG10% 33000 27500 333445555 987987987 MANV Mở rộng
  • 50. Lý thuyết CSDL 50 Mệnh đề SELECT (tt) SELECT LUONG FROM NHANVIEN WHERE PHONG=5 AND GT=‘Nam’ Loại bỏ các dòng trùng nhau - Tốn chi phí - Người dùng muốn thấy LUONG 30000 25000 25000 38000 LUONG 30000 25000 38000 SELECT DISTINCT LUONG FROM NHANVIEN WHERE PHONG=5 AND GT=‘Nam’
  • 51. Lý thuyết CSDL 51 Ví dụ • Cho biết MANV và TENNV làm việc ở phòng ‘Nghien cuu’
  • 52. Lý thuyết CSDL 52 Mệnh đề WHERE SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE TENPHONG=‘Nghien cuu’ AND Biểu thức logic TRUE TRUE PHONG=MAPHONG
  • 53. Lý thuyết CSDL 53 Mệnh đề WHERE (tt) SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE (TENPHONG=‘Nghien cuu’ OR TENPHONG=‘Quan ly’) AND GT=‘Nam’ AND PHONG=MAPHONG Độ ưu tiên
  • 54. Lý thuyết CSDL 54 Mệnh đề WHERE (tt) SELECT MANV, TENNV FROM NHANVIEN WHERE LUONG>20000 AND LUONG<30000 BETWEEN SELECT MANV, TENNV FROM NHANVIEN WHERE LUONG BETWEEN 20000 AND 30000
  • 55. Lý thuyết CSDL 55 Mệnh đề WHERE (tt) NOT BETWEEN SELECT MANV, TENNV FROM NHANVIEN WHERE LUONG NOT BETWEEN 20000 AND 30000
  • 56. Lý thuyết CSDL 56 Mệnh đề WHERE (tt) SELECT MANV, TENNV FROM NHANVIEN WHERE DCHI LIKE ‘Nguyen _ _ _ _’ LIKE SELECT MANV, TENNV FROM NHANVIEN WHERE DCHI LIKE ‘Nguyen %’ Chuỗi bất kỳ Ký tự bất kỳ
  • 57. Lý thuyết CSDL 57 Mệnh đề WHERE (tt) SELECT MANV, TENNV FROM NHANVIEN WHERE HONV LIKE ‘Nguyen’ NOT LIKE SELECT MANV, TENNV FROM NHANVIEN WHERE HONV NOT LIKE ‘Nguyen’
  • 58. Lý thuyết CSDL 58 Mệnh đề WHERE (tt) SELECT MANV, TENNV FROM NHANVIEN WHERE DCHI LIKE ‘% Nguyens_%’ ESCAPE ‘s’ ESCAPE ‘Nguyen_’ WHERE ColumnA LIKE '%5/%%' ESCAPE '/'
  • 59. Lý thuyết CSDL 59 Mệnh đề WHERE (tt) Ngày giờ SELECT MANV, TENNV FROM NHANVIEN WHERE NGSINH BETWEEN ‘1955-12-08’ AND ‘1966-07-19’
  • 60. Lý thuyết CSDL 60 Mệnh đề WHERE (tt) NULL – Sử dụng trong trường hợp • Không biết (value unknown) • Không thể áp dụng (value inapplicable) • Không tồn tại (value withheld) – 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 • x + 3 cho ra kết quả là NULL • x + 3 là một biểu thức không hợp lệ trong SQL – 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 • x = 3 cho ra kết quả là UNKNOWN • x = 3 là một so sánh không hợp lệ trong SQL
  • 61. Lý thuyết CSDL 61 Mệnh đề WHERE (tt) NULL SELECT MANV, TENNV FROM NHANVIEN WHERE MA_NQL IS NULL SELECT MANV, TENNV FROM NHANVIEN WHERE MA_NQL IS NOT NULL
  • 62. Lý thuyết CSDL 62 WHERE TRUE Mệnh đề FROM SELECT MANV, MAPHONG FROM NHANVIEN, PHONGBAN Không sử dụng mệnh đề WHERE MAPHONG 1 4 333445555 333445555 MANV 5 1 987987987 987987987 333445555 4 5 987987987 … …
  • 63. Lý thuyết CSDL 63 Mệnh đề FROM (tt) SELECT TENPHONG, DIADIEM FROM PHONGBAN, DDIEM_PHG WHERE MAPHONG=MAPHONG Tên bí danh SELECT TENPHONG, DIADIEM FROM PHONGBAN AS PB, DDIEM_PHG AS DD WHERE PB.MAPHONG=DD.MAPHONG 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
  • 64. Lý thuyết CSDL 64 Ví dụ 1 • Với những đề án ở ‘Ha Noi’, cho biết mã đề án, mã phòng, tên phòng chủ trì đề án, họ tên trưởng phòng cùng với ngày sinh và địa chỉ của người ấy
  • 65. Lý thuyết CSDL 65 Ví dụ 2 • Tìm họ tên của nhân viên phòng số 5 có tham gia vào đề án “Sản phẩm X” với số giờ làm việc trên 10 giờ
  • 66. Lý thuyết CSDL 66 Ví dụ 3 • Tìm họ tên của từng nhân viên và người phụ trách trực tiếp nhân viên đó
  • 67. Lý thuyết CSDL 67 Ví dụ 4 • Tìm họ tên của những nhân viên được “Nguyen Thanh Tung” phụ trách trực tiếp
  • 68. Lý thuyết CSDL 68 Mệnh đề ORDER BY • Dùng để hiển thị kết quả câu truy vấn theo một thứ tự nào đó • Cú pháp – ASC: tăng (mặc định) – DESC: giảm SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện> ORDER BY <danh sách các cột>
  • 69. Lý thuyết CSDL 69 Mệnh đề ORDER BY (tt) • Ví dụ SELECT MA_NVIEN, SODA FROM PHANCONG ORDER BY MA_NVIEN DESC, SODA SODA 10 30 99988777 7 99988777 7 MA_NVIEN 10 30 98798798 7 98765432 1 98798798 7 10 20 98765432 1 30 98765432 1
  • 70. Lý thuyết CSDL 70 Nội dung chi tiết • Giới thiệu • Định nghĩa dữ liệu • Truy vấn dữ liệu – Truy vấn cơ bản – Tập hợp, so sánh tập hợp và truy vấn lồng – Hàm kết hợp và gom nhóm – Một số dạng truy vấn khác • Cập nhật dữ liệu • Tính đầy đủ của SQL • Khung nhìn (view)
  • 71. Lý thuyết CSDL 71 Phép toán tập hợp trong SQL • SQL có cài đặt các phép toán – Hợp (UNION) – Giao (INTERSECT) – Trừ (EXCEPT) • Kết quả trả về là tập hợp – Loại bỏ các bộ trùng nhau – Để giữ lại các bộ trùng nhau • UNION ALL
  • 72. Lý thuyết CSDL 72 Phép toán tập hợp trong SQL (tt) • Cú pháp SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện> UNION [ALL] SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện> SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện> INTERSECT SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện> SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện> EXCEPT SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện>
  • 73. Lý thuyết CSDL 73 Ví dụ 5 • Cho biết các mã đề án có – 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’
  • 74. Lý thuyết CSDL 74 Ví dụ 6 • Tìm nhân viên có người thân cùng tên và cùng giới tính
  • 75. Lý thuyết CSDL 75 Ví dụ 7 • Tìm những nhân viên không có thân nhân nào
  • 76. Lý thuyết CSDL 76 Truy vấn lồng SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE TENPHG=‘Nghien cuu’ AND PHONG=MAPHONG SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <so sánh tập hợp> ( SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện>) Câu truy vấn ngoài (Outer query) Câu truy vấn trong (Subquery)
  • 77. Lý thuyết CSDL 77 Truy vấn lồng (tt) • Các câu lệnh SELECT có thể lồng nhau ở nhiều mức • Câu truy vấn con thường trả về một tập các giá trị • Các câu truy vấn trong trong cùng một mệnh đề WHERE được kết hợp bằng phép nối logic • Mệnh đề WHERE của câu truy vấn ngoài – <biểu thức> <so sánh tập hợp> <truy vấn con> – So sánh tập hợp thường đi cùng với một số toán tử • IN, NOT IN • ALL • ANY hoặc SOME – Kiểm tra sự tồn tại • EXISTS • NOT EXISTS
  • 78. Lý thuyết CSDL 78 Truy vấn lồng (tt) • Có 2 loại truy vấn lồng – Lồng phân cấp • Mệnh đề WHERE của truy vấn trong không tham chiếu đến thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn ngoài • Khi thực hiện, câu truy vấn trong sẽ được thực hiện trước – Lồng tương quan • Mệnh đề WHERE của truy vấn trong tham chiếu ít nhất một thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn ngoài • Khi thực hiện, câu truy vấn trong sẽ được thực hiện nhiều lần, mỗi lần tương ứng với một bộ của truy vấn ngoài
  • 79. Lý thuyết CSDL 79 Ví dụ - Lồng phân cấp SELECT MANV, TENNV FROM NHANVIEN WHERE PHONG IN ( SELECT MAPHONG FROM DIADIEM_PHG WHERE DIADIEM=‘TP HCM’ ) (1, 5) SELECT MANV, TENNV FROM NHANVIEN, DIADIEM_PHG WHERE DIADIEM=‘TP HCM’ AND PHONG=MAPHONG
  • 80. Lý thuyết CSDL 80 Ví dụ 4 • Tìm họ tên của những nhân viên được “Nguyen Thanh Tung” phụ trách trực tiếp
  • 81. Lý thuyết CSDL 81 Ví dụ 7 • Tìm những nhân viên không có thân nhân nào
  • 82. Lý thuyết CSDL 82 Ví dụ 8 • Tìm những nhân viên có lương lớn hơn lương của ít nhất một nhân viên phòng 4
  • 83. Lý thuyết CSDL 83 Ví dụ 9 • Tìm những nhân viên có lương lớn hơn lương của tất cả nhân viên phòng 4
  • 84. Lý thuyết CSDL 84 Ví dụ 10 • Tìm những trưởng phòng có tối thiểu một thân nhân
  • 85. Lý thuyết CSDL 85 Ví dụ - Lồng tương quan SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE TENPHONG=‘Nghien cuu’ AND PHONG=MAPHONG SELECT MANV, TENNV FROM NHANVIEN WHERE EXISTS ( SELECT * FROM PHONGBAN WHERE TENPHONG=‘Nghien cuu’ AND PHONG=MAPHONG )
  • 86. Lý thuyết CSDL 86 Ví dụ 6 • Tìm nhân viên có người thân cùng tên và cùng giới tính
  • 87. Lý thuyết CSDL 87 Ví dụ 7 • Tìm những nhân viên không có thân nhân nào
  • 88. Lý thuyết CSDL 88 Ví dụ 8 • Tìm những nhân viên có lương lớn hơn lương của ít nhất một nhân viên phòng 4
  • 89. Lý thuyết CSDL 89 Ví dụ 10 • Tìm những trưởng phòng có tối thiểu một thân nhân
  • 90. Lý thuyết CSDL 90 Nhận xét IN và EXISTS • IN – <tên cột> IN <câu truy vấn trong> – Thuộc tính ở mệnh đề SELECT của truy vấn trong phải có cùng kiểu dữ liệu với thuộc tính ở mệnh đề WHERE của truy vấn ngoài • EXISTS – Không cần có thuộc tính, hằng số hay biểu thức nào khác đứng trước – Không nhất thiết liệt kê tên thuộc tính ở mệnh đề SELECT của truy vấn trong – Những câu truy vấn có IN đều có thể chuyển thành câu truy vấn có EXISTS
  • 91. Lý thuyết CSDL 91 Phép chia trong SQL • RS là tập các giá trị ai trong R sao cho không có giá trị bi nào trong S làm cho bộ (ai, bi) không tồn tại trong R A B   a a  a  a  a  a  a  a C D   a b  a  a  b  a  b  b E 1 3 1 1 1 1 1 1 R D E a S b 1 1 A B C  a   a  RS ai bi
  • 92. Lý thuyết CSDL 92 Phép chia trong SQL (tt) • Sử dụng NOT EXISTS để biểu diễn 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 ))
  • 93. Lý thuyết CSDL 93 Ví dụ 11 • Tìm tên các nhân viên được phân công làm tất cả các đề án – Tìm tên các nhân viên mà không có đề án nào là không được 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 ra TENNV
  • 94. Lý thuyết CSDL 94 Ví dụ 11 (tt) • Tìm tên các nhân viên được phân công làm tất cả các đề án Select * From nhanvien where manv in( SELECT r1.manv FROM PHANCONG R1 WHERE not exists( SELECT MADA FROM DEAN S WHERE not EXISTS ( SELECT * FROM PHANCONG R2 WHERE R2.SODA=S.MADA and r1.manv=r2.manv) ) )
  • 95. Lý thuyết CSDL 95 Nội dung chi tiết • Giới thiệu • Định nghĩa dữ liệu • Truy vấn dữ liệu – Truy vấn cơ bản – Tập hợp, so sánh tập hợp và truy vấn lồng – Hàm kết hợp và gom nhóm – Một số dạng truy vấn khác • Cập nhật dữ liệu • Tính đầy đủ của SQL • Khung nhìn (view)
  • 96. Lý thuyết CSDL 96 Hàm kết hợp • COUNT – COUNT(*) đếm số dòng – COUNT(<tên thuộc tính>) đếm số giá trị khác NULL của thuộc tính – COUNT(DISTINCT <tên thuộc tính>) đếm số giá trị khác nhau và khác NULL của thuộc tính • MIN • MAX • SUM • AVG • Các hàm kết hợp được đặt ở mệnh đề SELECT
  • 97. Lý thuyết CSDL 97 Ví dụ 12 • Tìm tổng lương, lương cao nhất, lương thấp nhất và lương trung bình của các nhân viên select sum(luong) as tongluong,max(luong) luong_max,min(luong) luong_min ,avg(luong) luongTB from nhanvien
  • 98. Lý thuyết CSDL 98 Ví dụ 13 • Cho biết số lượng nhân viên của phòng ‘Nghien cuu’
  • 99. Lý thuyết CSDL 99 Ví dụ 14 • Cho biết số lượng nhân viên của từng phòng ban SL_NV 5 4 3 3 PHONG 1 1 TENNV HONV NGSINH DCHI PHAI LUONG PHO NG Tung Nguyen 12/08/1955 638 NVC Q5 Nam 40000 5 Hung Nguyen 09/15/1962 Ba Ria VT Nam 38000 5 33344555 5 98798798 7 MANV MA_NQL 88866555 5 33344555 5 TENLO T Thanh Manh Tam Tran 07/31/1972 543 MTL Q1 Nu 25000 5 Hang Bui 07/19/1968 33 NTH Q1 Nu 38000 4 45345345 3 99988777 7 33344555 5 98765432 1 Thanh Ngoc Nhu Le 07620/195 1 219 TD Q3 Nu 43000 4 98765432 1 88866555 5 Quynh Quang Tran 04/08/1969 980 LHP Q5 Nam 25000 4 Vinh Pham 11/10/1945 450 TV HN Nam 55000 1 98798798 7 88866555 5 98765432 1 NULL Hong Van
  • 100. Lý thuyết CSDL 100 Gom nhóm • Cú pháp • Sau khi gom nhóm – Mỗi nhóm các bộ sẽ có cùng giá trị tại các thuộc tính gom nhóm SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện> GROUP BY <danh sách các cột gom nhóm>
  • 101. Lý thuyết CSDL 101 Ví dụ 14 • Cho biết số lượng nhân viên của từng phòng ban
  • 102. Lý thuyết CSDL 102 Ví dụ 15 • Với mỗi nhân viên cho biết mã số, họ tên, số lượng đề án và tổng thời gian mà họ tham gia SODA THOIGIAN 1 32.5 2 7.5 123456789 123456789 MA_NVIEN 2 10.0 3 10.0 333445555 333445555 10 10.0 333445555 20 20.0 10 35.0 888665555 987987987 30 5.0 987987987 30 20.0 987654321 20 15.0 987654321 1 20.0 453453453 2 20.0 453453453
  • 103. Lý thuyết CSDL 103 Ví dụ 16 • Cho biết những nhân viên tham gia từ 2 đề án trở lên SODA THOIGIAN 1 32.5 2 7.5 12345678 9 12345678 9 MA_NVIEN 2 10.0 3 10.0 33344555 5 33344555 5 10 10.0 33344555 5 20 20.0 10 35.0 88866555 5 98798798 7 30 5.0 98798798 7 30 20.0 98765432 1 20 15.0 98765432 1 1 20.0 45345345 3 2 20.0 45345345 3 bị loại ra
  • 104. Lý thuyết CSDL 104 Điều kiện trên nhóm • Cú pháp SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện> GROUP BY <danh sách các cột gom nhóm> HAVING <điều kiện trên nhóm>
  • 105. Lý thuyết CSDL 105 Ví dụ 16 • Cho biết những nhân viên tham gia từ 2 đề án trở lên
  • 106. Lý thuyết CSDL 106 Ví dụ 17 • Cho biết những phòng ban (TENPHONG) có lương trung bình của các nhân viên lớn hơn 2tr
  • 107. Lý thuyết CSDL 107 Nhận xét • Mệnh đề GROUP BY – Các thuộc tính trong mệnh đề SELECT (trừ những thuộc tính trong các hàm kết hợp) phải xuất hiện trong mệnh đề GROUP BY • Mệnh đề HAVING – Sử dụng các hàm kết hợp trong mệnh đề SELECT để kiểm tra một số điều kiện nào đó – Chỉ kiểm tra điều kiện trên nhóm, không là điều kiện lọc trên từng bộ – Sau khi gom nhóm điều kiện trên nhóm mới được thực hiện
  • 108. Lý thuyết CSDL 108 Nhận xét (tt) • Thứ tự thực hiện câu truy vấn có mệnh đề GROUP BY và HAVING – (1) Chọn ra những dòng thỏa điều kiện trong mệnh đề WHERE – (2) Những dòng này sẽ được gom thành nhiều nhóm tương ứng với mệnh đề GROUP BY – (3) Áp dụng các hàm kết hợp cho mỗi nhóm – (4) Bỏ qua những nhóm không thỏa điều kiện trong mệnh đề HAVING – (5) Rút trích các giá trị của các cột và hàm kết hợp trong mệnh đề SELECT
  • 109. Lý thuyết CSDL 109 Ví dụ 18 • Tìm những phòng ban có lương trung bình cao nhất
  • 110. Lý thuyết CSDL 110 Ví dụ 19 • Tìm 3 nhân viên có lương cao nhất select top 3 * from nhanvien order by luong desc
  • 111. Lý thuyết CSDL 111 Ví dụ 11 • Tìm tên các nhân viên được phân công làm tất cả các đề án
  • 112. Lý thuyết CSDL 112 Nội dung chi tiết • Giới thiệu • Định nghĩa dữ liệu • Truy vấn dữ liệu – Truy vấn cơ bản – Tập hợp, so sánh tập hợp và truy vấn lồng – Hàm kết hợp và gom nhóm – Một số dạng truy vấn khác • Cập nhật dữ liệu • Tính đầy đủ của SQL • Khung nhìn (view)
  • 113. Lý thuyết CSDL 113 Một số dạng truy vấn khác • Truy vấn con ở mệnh đề FROM • Điều kiện kết ở mệnh đề FROM – Phép kết tự nhiên – Phép kết ngoài
  • 114. Lý thuyết CSDL 114 Truy vấn con ở mệnh đề FROM • Kết quả trả về của một câu truy vấn phụ là một bảng – Bảng trung gian trong quá trình truy vấn – Không có lưu trữ thật sự • Cú pháp SELECT <danh sách các cột> FROM R1, R2, (<truy vấn con>) AS tên_bảng WHERE <điều kiện>
  • 115. Lý thuyết CSDL 115 Ví dụ 18 • Tìm những phòng ban có lương trung bình cao nhất Select phong, avg(luong) From nhanvien Group by phong Having avg(luong)= (Select max(luong_tb) From (Select phong,avg(luong) as luong_tb From nhanvien Group by phong) as p )
  • 116. Lý thuyết CSDL 116 Điều kiện kết ở mệnh đề FROM • Kết bằng • Kết ngoài SELECT <danh sách các cột> FROM R1 [INNER] JOIN R2 ON <biểu thức> WHERE <điều kiện> SELECT <danh sách các cột> FROM R1 LEFT|RIGHT [OUTER] JOIN R2 ON <biểu thức> WHERE <điều kiện>
  • 117. Lý thuyết CSDL 117 Ví dụ 20 • Tìm mã và tên các nhân viên làm việc tại phòng ‘Nghien cuu’ select manv,tennv from nhanvien join phongban on phong=maphong where tenphong =‘Nghien cuu’ Select nv.manv,tenda From nhanvien nv join phancong pc on nv.manv=pc.manv Join dean da on da.mada=pc.mada
  • 118. Lý thuyết CSDL 118 Ví dụ 21 • Tìm họ tên các nhân viên và tên các đề án nhân viên tham gia nếu có select tennv,mada,tenda From (select tennv,soda from nhanvien nv left join phancong pc on nv.manv=pc.manv) as a left join dean on soda=mada
  • 119. Lý thuyết CSDL 119 Kết luận SELECT <danh sách các cột> FROM <danh sách các bảng> [WHERE <điều kiện>] [GROUP BY <các thuộc tính gom nhóm>] [HAVING <điều kiện trên nhóm>] [ORDER BY <các thuộc tính sắp thứ tự>]
  • 120. Lý thuyết CSDL 120 Nội dung chi tiết • Giới thiệu • Định nghĩa dữ liệu • Cập nhật dữ liệu • Truy vấn dữ liệu • Tính đầy đủ của SQL • Khung nhìn (view)
  • 121. Lý thuyết CSDL 121 Tính đầy đủ của SQL • Xem xét khả năng của SQL có thực hiện được tất cả các biểu thức của các phép toán đại số quan hệ. Để thực hiện một biểu thức ta thực hiện theo thứ tự từ các biểu thức con dần ra đến biểu thức toàn bộ. Vậy để xét xem SQL có thể thực hiện được các biểu thức đại số quan hệ ta chỉ cần xét lần lượt cho các phép toán cơ bản của đại số quan hệ. • Trong chương 3, ta đã có 5 phép toán cơ bản là hợp, hiệu, tích Decac, chọn, chiếu của đại số quan hệ độc lập với nhau. • Các phép toán khác của đại số quan hệ như nối tự nhiên, giao, nối nửa, nối theta, chia đều có thể nhận được từ phép toán cơ bản trên. • Vậy để SQL thực hiện được các phép toán đại số quan hệ, ta chỉ cần cài đặt cho SQL thực hiện 5 phép toán cơ bản hợp, hiệu, tích Decac, chọn, chiếu .
  • 122. Lý thuyết CSDL 122 Tính đầy đủ của SQL (tt) • Phép hợp: Giả sử ta có 2 quan hệ r và s có cùng lược đồ R={A1,A2,…,An}. Khi đó để tính T=r+s ta viết: Insert into T Select * From r; Tiếp theo là: Insert into T Select * From s;
  • 123. Lý thuyết CSDL 123 Tính đầy đủ của SQL (tt) • Phép trừ: Để tính T=r-s trước tiên chúng ta chèn r vào T Insert into T Select * From r; sau đó ta dùng câu lệnh xóa như sau: Delete from T Where (A1,..,An) in (Select * from s)
  • 124. Lý thuyết CSDL 124 Tính đầy đủ của SQL (tt) • Tích Decac Insert into T Select r.*,s.* From r,s
  • 125. Lý thuyết CSDL 125 Tính đầy đủ của SQL (tt) • Phép chọn T=r(E) Insert into T Select * From r Where E; • Phép chiếu: Giả sử X là tập con của R, X={A1,…,Ak} T=r.X, ta có câu lệnh Insert into T Select A1,…,Ak From r;
  • 126. Lý thuyết CSDL 126 Nội dung chi tiết • Giới thiệu • Định nghĩa dữ liệu • Cập nhật dữ liệu • Truy vấn dữ liệu • Tính đầy đủ của SQL • Khung nhìn (view) – Định nghĩa – Truy vấn – Cập nhật
  • 127. Lý thuyết CSDL 127 Khung nhìn • Bảng là một quan hệ được tổ chức lưu trữ vật lý trong CSDL • Khung nhìn cũng là một quan hệ – Không được lưu trữ vật lý (bảng ảo) – Không chứa dữ liệu – Được định nghĩa từ những bảng khác – Có thể truy vấn hay cập nhật thông qua khung nhìn
  • 128. Lý thuyết CSDL 128 Khung nhìn (tt) • Tại sao phải sử dụng khung nhìn? – Che dấu tính phức tạp của dữ liệu – Đơn giản hóa các câu truy vấn – Hiển thị dữ liệu dưới dạng tiện dụng nhất – An toàn dữ liệu
  • 129. Lý thuyết CSDL 129 Định nghĩa khung nhìn • Cú pháp • Bảng ảo này có – Danh sách thuộc tính trùng với các thuộc tính trong mệnh đề SELECT – Số dòng phụ thuộc vào điều kiện ở mệnh đề WHERE – Dữ liệu được lấy từ các bảng ở mệnh đề FROM CREATE VIEW <tên khung nhìn> AS <câu truy vấn> DROP VIEW <tên khung nhìn>
  • 130. Lý thuyết CSDL 130 Ví dụ CREATE VIEW NV_P5 AS SELECT MANV, HODEM, TENVN FROM NHANVIEN WHERE PHONG=5 CREATE VIEW TONGLNG_SLNV_PB AS SELECT MAPHONG, TENPHONG, COUNT(*) AS SLNV, SUM(LUONG) AS TONGLNG FROM NHANVIEN, PHONGBAN WHERE PHONG=MAPHONG GROUP BY MAPHONG ,TENPHONG
  • 131. Lý thuyết CSDL 131 Truy vấn trên khung nhìn • Tuy không chứa dữ liệu nhưng có thể thực hiện các câu truy vấn trên khung nhìn SELECT TENNV FROM NV_P5 WHERE HODEM LIKE ‘Nguyen’ NV_P5  MANV,HODEM, TENNV (Phong=5 (NHANVIEN)) TENNV (HODEM=‘Nguyen’ (NV_P5))
  • 132. Lý thuyết CSDL 132 Truy vấn trên khung nhìn (tt) • Có thể viết câu truy vấn dữ liệu từ khung nhìn và bảng SELECT HONV, TENNV, TENDA, THOIGIAN FROM NV_P5, PHANCONG, DEAN WHERE MANV=MA_NVIEN AND SODA=MADA NV_P5  MANV,HONV, TENDEM, TENNV (PHG=5 (NHANVIEN)) TMP  NV_P5 MANV=MA_NVIEN PHONGBAN SODA=MADADEAN TENNV,TENDA,THOIGIAN(TMP)
  • 133. Lý thuyết CSDL 133 Ví dụ 18 • Tìm những phòng ban có lương trung bình cao nhất CREATE VIEW LUONGTB_PHONG AS SELECT TENPHONG,MAPHONG,AVG(LUONG) AS LUONGTB FROM NHANVIEN,PHONGBAN WHERE PHONG=MAPHONG GROUP BY TENPHONG,MAPHONG SELECT * FROM LUONGTB_PHONG WHERE LUONGTB =( SELECT MAX(LUONGTB) FROM LUONGTB_PHONG)
  • 134. Lý thuyết CSDL 134 Cập nhật trên khung nhìn • Có thể dùng các câu lệnh INSERT, DELETE và UPDATE cho các khung nhìn đơn giản – Khung nhìn được xây dựng trên 1 bảng và có khóa chính của bảng • Không thể cập nhật dữ liệu nếu – Khung nhìn có dùng từ khóa DISTINCT – Khung nhìn có sử dụng các hàm kết hợp – Khung nhìn có mệnh đề SELECT mở rộng – Khung nhìn được xây dựng từ bảng có RB trên cột – Khung nhìn được xây dựng từ nhiều bảng
  • 135. Lý thuyết CSDL 135 Cập nhật trên khung nhìn (tt) • Sửa lại họ cho nhân viên mã ‘123456789’ ở phòng 5 là ‘Pham’ UPDATE NV_P5 SET HODEM=‘Pham’ WHERE MANV= ‘123456789’