Upload
lethuan
View
217
Download
0
Embed Size (px)
Citation preview
Các ngôn ngữ dữ liệu
đối với mô hình quan hệ
`
Nguyễn Thị Oanh [email protected]
Bộ môn Hệ thống thông tin (http://is.hust.edu.vn/)
Viện CNTT&TT
Trường Đại học Bách Khoa Hà Nội
2
CSDL
CSDL
Ứng dụng Hệ
CSDL
Hệ QTCSDL
- Định nghĩa DL
- Thao tác DL
is.hust.edu.vn
3
Nội dung
Đặt vấn đề
Giới thiệu một số ngôn ngữ và phân loại
So sánh và đánh giá
Ngôn ngữ truy vấn bậc cao SQL (Structured Query
LLanguage)
Định nghĩa dữ liệu
Truy vấn dữ liệu
Kết luận
is.hust.edu.vn
4
Đặt vấn đề
Mục đích của ngôn ngữ dữ liệu
Tại sao có nhiều ngôn ngôn ngữ dữ liệu?
Ngôn ngữ cấp thấp vs. Ngôn ngữ cấp cao?
is.hust.edu.vn
MSSV HoTen QueQuan ...
1108 Trần Hoài Hà nội
3936 Vũ An Hải phòng
8507 Ng. Anh Hải phòng
8452 Hoàng Bảo Bắc Ninh
Tìm tên của các sinh viên có quê quán Hải Phòng
Tìm các bộ của bảng Sinhvien có QueQuan = “Hải Phòng”
Đưa ra các giá trị của thuộc tính Hoten của các bộ này
5
Ví dụ
Sinhvien
is.hust.edu.vn
MSMH tenMH soHT ...
21 CTDL> 3
23 CSDL 4
29 VB 2
18 Đại số 3
Ví dụ (2)
Tìm các sinh viên đăng ký
môn học có mã số 21
Tìm các giá trị MaSV trong
bảng Dangky có trường
MSMH tương ứng là 21
Đưa các bộ của bảng
Sinhvien có MSSV trong
các giá trị tìm thấy ở trên
MSSV HoTen QueQuan ...
1108 Trần Hoài Hà nội
3936 Vũ An Hải phòng
8507 Ng. Anh Hải phòng
8452 Hoàng Bảo Bắc Ninh
Sinhvien
MaSV MSMH kyHoc ...
3936 21 20161
1108 23 20162
8507 21 20161
Đangky
Monhoc
6 6 is.hust.edu.vn
MSSV HoTen QueQuan ...
1108 Trần Hoài Hà nội
3936 Vũ An Hải phòng
8507 Ng. Anh Hải phòng
8452 Hoàng Bảo Bắc Ninh
7
Ví dụ (2)
MaSV MSMH kyHoc ...
3936 21 20161
1108 23 20162
8507 21 20161
Sinhvien
Đangky
MSMH tenMH soHT ...
21 CTDL> 3
23 CSDL 4
29 VB 2
18 Đại số 3
Monhoc
Sinhvien(MSSV, hoTen, ngaySinh, gioiTinh, queQuan, noiCuTru, maLop )
Monhoc(MSMH, tenMH, soHT, maKhoaQL)
Đangky(MaSV, MSMH, kyHoc, diemQT, diemCK)
is.hust.edu.vn
8
Phân loại ngôn ngữ truy vấn
Ngôn ngữ cấp thấp
Đại số quan hệ
1 câu hỏi = 1 tập các phép toán trên các quan hệ
Được biểu diễn bởi một biểu thức đại số (quan hệ)
Tính toán vị từ
1 câu hỏi = 1 mô tả của các bộ mong muốn
Được đặc tả bởi một vị từ mà các bộ phải thoả mãn
Phân biệt 2 lớp:
ngôn ngữ tính toán vị từ biến bộ
ngôn ngữ tính toán vị từ biến miền
Ngôn ngữ cấp cao
SQL
QBE
is.hust.edu.vn
Ngôn ngữ SQL
10
SQL (Structured Query Language)
1975: SEQUEL
System-R
1976: SEQUEL2
1978/79: SQL
System-R
1986: chuẩn SQL-86
1989: chuẩn SQL-89
1992: chuẩn SQL-92 (SQL2): major revision
1999: chuẩn SQL-99 (SQL3): thêm đệ quy, triggers,
hàm, …
SQL:2003 , SQL:2006, SQL:2008, SQL:2011,
SQL:2016 is.hust.edu.vn
11
Các thành phần của SQL
Ngôn ngữ mô tả dữ liệu (Data Definition Language)
Cấu trúc các bảng CSDL
Các mối liên hệ của dữ liệu
Quy tắc, ràng buộc áp đặt lên dữ liệu
Ngôn ngữ thao tác dữ liệu (Data Manipulation Language)
Thêm, xoá, sửa và truy vấn dữ liệu trong CSDL
Ngôn ngữ quản lý dữ liệu (Data Control Language)
Thay đổi cấu trúc của các bảng dữ liệu
Khai báo bảo mật thông tin
Quyền hạn của người dùng trong khai thác CSDL
is.hust.edu.vn
12
Định nghĩa dữ liệu với SQL
Các thông tin được định nghĩa bao gồm
Sơ đồ quan hệ
Kiểu dữ liệu hay miền giá trị của mỗi thuộc tính
Các ràng buộc toàn vẹn
Các chỉ số đối với mỗi bảng
Thông tin an toàn và uỷ quyền đối với mỗi bảng
Cấu trúc lưu trữ vật lý của mỗi bảng trên đĩa
Được biểu diễn bởi các lệnh định nghĩa dữ liệu
is.hust.edu.vn
13
Cú pháp
Tạo bảng
CREATE TABLE tab(
col1 type1(size1)[NOT NULL], ...,
col2 type2(size2)[NOT NULL], ...,
.....
[CONSTRAINT <constraint name> <constraint type> clause]
...
)
Xoá bảng DROP TABLE tab
is.hust.edu.vn
14
Quy ước đặt tên và kiểu dữ liệu
Quy ước đặt tên
32 ký tự: chữ cái, số, dấu _
Kiểu dữ liệu (SQL-92)
CHAR(n)
VARCHAR(n)
Int
Smallint
Numeric(p,d)
Real, double
float(n)
Date
time
is.hust.edu.vn
15
Kiểu ràng buộc
Ràng buộc toàn vẹn (RBTV) về giá trị miền
CONSTRAINT <name>
CHECK <condition>
RBTV về khoá chính
CONSTRAINT <name> PRIMARY KEY (fk1,fk2,…)
RBTV về khoá ngoại hay phụ thuộc tồn tại
CONSTRAINT <name> FOREIGN KEY (fk1,fk2,…)
REFERENCES tab(k1,k2, …)
is.hust.edu.vn
16
Thêm/xoá/sửa cột của các bảng
Thêm
ALTER TABLE <tên bảng>
ADD COLUMN <tên cột> <kiểu dữ liệu> [NOT NULL]
Xoá
ALTER TABLE <tên bảng>
DROP COLUMN <tên cột>
Sửa
ALTER TABLE <tên bảng>
CHANGE COLUMN <tên cột> <kiểu dữ liệu mới>
is.hust.edu.vn
17
Thêm/xóa các ràng buộc
Thêm
ALTER TABLE <tên bảng>
ADD CONSTRAINT <tên ràng buộc> <kiểu ràng buộc>
Xóa
ALTER TABLE <tên bảng>
DROP CONSTRAINT <tên ràng buộc>
is.hust.edu.vn
18
Ví dụ
CREATE TABLE Sinhvien(
MSSV char(10) NOT NULL,
HoTen varchar(30) NOT NULL,
QueQuan varchar(30),
CONSTRAINT key_Stud
PRIMARY KEY MSSV
);
CREATE TABLE Dangky(
MaSV char(10) NOT NULL,
MSSH varchar(5) NOT NULL,
CONSTRAINT pk_dky
PRIMARY KEY (MaSV, MSSV, kyHoc),
CONSTRAINT fk1_dky
FOREIGN KEY (MaSV) REFERENCES Sinhvien(MSSV)
);
MSSV HoTen QueQuan
1108 Trần Hoài Hà nội
3936 Vũ An Hải phòng
8507 Ng. Anh Hải phòng
8452 Hoàng Bảo Bắc Ninh
MaSV MSMH kyHoc
3936 21 20161
1108 23 20162
8507 21 20161
Sinhvien
Đangky
is.hust.edu.vn
19
Thao tác dữ liệu với SQL
Các thao tác chính với dữ liệu
Thêm : INSERT …
Xóa: DELETE …
Sửa (Cập nhật): UPDATE …
Tìm kiếm (truy vấn) dữ liệu: SELECT …
Được biểu diễn bởi các lệnh thao tác dữ liệu
is.hust.edu.vn
20
Các câu lệnh cập nhật dữ liệu
Thêm
INSERT INTO table[(col1,col2,…)]
VALUES (exp1,exp2,…)
INSERT INTO table[(col1,col2,…)]
SELECT col1,col2, …
FROM tab1, tab2, …
WHERE <dieu_kien>
Ví dụ
INSERT INTO Sinhvien(MSSV, HoTen, QueQuan)
VALUES (“1179”, “Trần Đức”, “Hanoi”)
is.hust.edu.vn
21
Các câu lệnh cập nhật dữ liệu (2)
Xoá
DELETE FROM table
WHERE cond_exp;
Sửa
UPDATE table
SET col1 = exp1,
col2=exp2,
…
colN=expN
WHERE cond_exp;
Ví dụ
DELETE FROM Sinhvien
WHERE QueQuan = ‘‘Hà Nam’’;
UPDATE Sinhvien
SET QueQuan = ‘‘Hà nội’’
WHERE QueQuan = ‘‘Hanoi’’; is.hust.edu.vn
22
Cú pháp câu lệnh truy vấn SQL
SELECT [DISTINCT] <bt1>, <bt2>, …
FROM <bang1>,<bang2>, …
[WHERE <dieu kien chon>]
[GROUP BY <tt1>, <tt2>, …
[HAVING <dieu kien in ket qua>]]
[ORDER BY <tt1>|<bieu thuc so 1> [ASC|DESC]]
is.hust.edu.vn
23
Truy vấn đơn giản trên 1 bảng
Tìm thông tin từ các cột của bảng
SELECT ColumnName, ColumnName, ...
FROM TableName
SELECT *
FROM TableName
Ví dụ
SELECT HoTen
FROM Sinhvien Kết quả
)(SinhvienHoten
MSSV HoTen QueQuan ...
1108 Trần Hoài Hà nội
3936 Vũ An Hải phòng
8507 Ng. Anh Hải phòng
8452 Hoàng Bảo Bắc Ninh
Sinhvien
HoTen
Trần Hoài
Vũ An
Ng. Anh
Hoàng Bảo is.hust.edu.vn
24
Truy vấn với điều kiện lựa chọn
Chọn các bản ghi (dòng) SELECT ColumnName,ColumnName, ...
FROM TableName
WHERE condition_expression;
Ví dụ SELECT *
FROM Sinhvien
WHERE QueQuan = « Hải Phòng » ;
)("Phòng Hai" SinhvienQueQuan
MSSV HoTen QueQuan ...
1108 Trần Hoài Hà nội
3936 Vũ An Hải phòng
8507 Ng. Anh Hải phòng
8452 Hoàng Bảo Bắc Ninh
Sinhvien
MSSV HoTen QueQuan ...
3936 Vũ An Hải phòng
8507 Ng. Anh Hải phòng
Kết quả
is.hust.edu.vn
25
Biểu diễn điều kiện lựa chọn
Các phép toán quan hệ: =, !=, <, >, <=, >=
attr =100
Các phép toán logic: NOT, AND, OR
attr < 10 OR attr >100
Phép toán phạm vi: BETWEEN, IN, LIKE
Kiểu dữ liệu số
attr BETWEEN val1 AND val2 (attr>=val1) and attr<=val2)
attr IN (val1, val2, ...) (attr=val1) or (attr=val2) or ...
Kiểu dữ liệu xâu
LIKE: sử dụng đối sánh mẫu xâu với các ký tự _ (hoặc ?, %)
(thay thế cho 1 ký tự bất kỳ), % (hoặc *) (thay thế cho 1 xâu ký
tự bất kỳ):
attr LIKE ‘’_CS’’
attr LIKE ‘’%CS%’’ is.hust.edu.vn
26
Truy vấn phức tạp trên nhiều bảng
Điều kiện kết nối
SELECT T1.C1,T1.C2,T2.C1,T2.C4, ...
FROM T1, T2
WHERE condition_expression
Ví dụ: đưa ra danh sách mã sinh vien, họ tên sinh
viên, quê quán, mã môn học mà các sinh viên đã
đăng ký
SELECT MSSV, Hoten, QueQuan,MSMH
FROM Sinhvien, Dangky
WHERE MSSV = MaSV
is.hust.edu.vn
Truy vấn phức tạp trên nhiều bảng SELECT * FROM Sinhvien, Dangky WHERE MSSV = MaSV
is.hust.edu.vn
MSSV HoTen Que
Quan
MaSV MSMH
kyHoc
1108 Trần Hoài Hà nội 1108 23 20162
3936 Vũ An Hải
phòng
3936 21 20161
8507 Ng. Anh Hải
phòng
8507 21 20161
MSSV =MaSV
MSSV HoTen Que
Quan
1108 Trần Hoài Hà nội
3936 Vũ An Hải
phòng
8507 Ng. Anh Hải
phòng
8452 Hoàng Bảo
Bắc
Ninh
MaSV MS
MH
kyHoc
3936 21 20161
1108 23 20162
8507 21 20161
Đangky Kết quả
Sinhvien
MSSV HoTen Que
Quan
MSMH
1108 Trần Hoài Hà nội 23
3936 Vũ An Hải
phòng
21
8507 Ng. Anh Hải
phòng
21
Kết quả Đưa ra danh sách mã sinh vien, họ tên
sinh viên, quê quán, mã môn học mà
các sinh viên đã đăng ký
SELECT MSSV, Hoten, QueQuan,MSMH
FROM Sinhvien, Dangky
WHERE MSSV = MaSV
28
Bài tập
Đưa ra danh sách các môn học mà tên của môn
học chứa cụm ‘‘DS’’
Viết câu lệnh SQL đưa ra danh sách các sinh viên
đăng ký các môn học có mã 23 hoặc 21
Viết câu lệnh SQL đưa ra danh sách tên sinh viên
học môn ‘‘Database’’ hoặc môn ‘‘VB’’
Đưa ra danh sách các môn học mà sinh viên có mã
số 8507 đã đăng ký trong học kỳ 20161
Đưa ra danh sách các môn học được quản lý bởi
Viện (Khoa) Công nghệ thông tin và truyền thông.
is.hust.edu.vn
29
Sinhvien(MSSV, hoTen, ngaySinh, gioiTinh, queQuan, noiCuTru, maLop )
Monhoc(MSMH, tenMH, soHT, maKhoaQL)
Đangky(MaSV, MSMH, kyHoc, diemQT, diemCK)
MSSV HoTen QueQuan ...
1108 Trần Hoài Hà nội
3936 Vũ An Hải phòng
8507 Ng. Anh Hải phòng
8452 Hoàng Bảo Bắc Ninh
MaSV MSMH kyHoc ...
3936 21 20161
1108 23 20162
8507 21 20161
Sinhvien
Đangky
MSMH tenMH soHT ...
21 CTDL> 3
23 CSDL 4
29 VB 2
18 Đại số 3
Monhoc
is.hust.edu.vn
30
Sinhvien(MSSV, hoTen, ngaySinh, gioiTinh, queQuan, noiCuTru, maLop )
Monhoc(MSMH, tenMH, soHT, maKhoaQL)
Đangky(MaSV, MSMH, kyHoc, diemQT, diemCK)
MH_GV(MSMH, tenGV)
Khoa(MaKhoa, tenKhoa, tenTruongKhoa)
Lop(MaLop, tenLop, tenGVCN, maKhoaQL, MSLopTruong)
is.hust.edu.vn
31
Phép toán đổi tên
Từ khoá AS : <bt> [as] <ten_thay_the>
SELECT c1 [as] name1, c2 [as] name2
FROM TableName
Ví dụ: đưa ra danh sách mã sinh viên, tên sinh viên
và tên môn học mà sinh viên đó tham gia
SELECT MSSV , Hoten,
TenMH as « Tên môn học»
FROM Sinhvien, Dangky, Monhoc
WHERE (MSSV= MaSV)
AND (Dangky.MSMH = Monhoc.MSMH)
Lưu ý: ten_thay_the cho cột được dùng trong mệnh đề ORDER BY
chứ KHÔNG dùng được trong WHERE hay HAVING
is.hust.edu.vn
32
Sử dụng biến bộ trong SQL
Sử dụng từ khoá AS trong mệnh đề FROM
<ten_bang> [as] <ten_thay_the>
Ví dụ
SELECT MSSV, sv.Hoten, mh.TenMH as « Tên môn học »
FROM Sinhvien as sv, Dangky as dk, Monhoc as mh
WHERE (MSSV = MaSV) and (dk.MSMH = mh.MSMH)
Từ khoá AS : optional
SELECT MSSV, sv.Hoten, mh.TenMH « Tên môn học »
FROM Sinhvien sv, Dangky dk, Monhoc mh
WHERE (MSSV = MaSV) and (dk.MSMH = mh.MSMH)
is.hust.edu.vn
33
Loại trừ các bản ghi trùng nhau
Từ khoá DISTINCT
SELECT DISTINCT <bt1>, <bt2>, …
FROM <bang1>,<bang2>, …
Ví dụ: đưa ra danh sách các tỉnh thành
(QueQuan) của các sinh viên trong trường. Mỗi
giá trị chỉ hiện thị một lần
SELECT DISTINCT QueQuan
FROM SinhVien
is.hust.edu.vn
34
Tìm kiếm có sắp xếp
Sắp xếp các bản ghi kết quả theo một thứ tự cho trước
SELECT <bt1>, <bt2>, …
FROM <bang1>,<bang2>, …
[WHERE <dieu kien chon>]
ORDER BY <tt1>|<bieu thuc so 1> [ASC|DESC]
Ví dụ: đưa ra danh sách tên các sinh viên theo thứ tự tăng dần
SELECT Name
FROM Student
ORDER BY Name ASC
is.hust.edu.vn
35
Phân nhóm các bản ghi kết quả
Phân nhóm các bản ghi kết quả theo giá trị của 1
hoặc nhiều thuộc tính
SELECT <bt1>, <bt2>, …
FROM <bang1>,<bang2>, …
[WHERE <dieu kien chon>]
GROUP BY <tt1>, <tt2>, …
Ví dụ đưa ra tên thành phố và số lượng sinh viên
tương ứng đến từ các thành phố đó
SELECT QueQuan, Count(MSSV)
FROM Sinhvien
GROUP BY QueQuan
is.hust.edu.vn
36
Điều kiện hiển thị các bản ghi kết quả
Lựa chọn các bản ghi kết quả để hiển thị
SELECT <bt1>, <bt2>, …
FROM <bang1>,<bang2>, …
[WHERE <dieu kien chon>]
GROUP BY <bt1>, <bt2>
HAVING <dieu kien in ket qua>
Ví dụ: đưa ra tên các thành phố có nhiều hơn 3
sinh viên
SELECT QueQuan, COUNT(MSSV)
FROM Sinhvien
GROUP BY QueQuan
HAVING COUNT(MSSV) > 3
is.hust.edu.vn
37
Các phép toán tập hợp
UNION, MINUS, INTERSECT
Ví dụ: đưa ra danh sách tên các môn học không có
sinh viên nào tham dự
SELECT DISTINCT TenMH
FROM Monhoc
MINUS
SELECT DISTINCT TenMH
FROM Dangky, Monhoc
WHERE Dangky.MSMH = Monhoc.MSMH
is.hust.edu.vn
38
Các câu truy vấn lồng nhau
Là trường hợp các câu truy vấn (con) được viết
lồng nhau
Thường được sử dụng với để
Kiểm tra thành viên tập hợp (IN)
So sánh tập hợp (>ALL, >=ALL, <ALL,<=ALL,=ALL, NOT
IN,SOME, .. )
Kiểm tra các bảng rỗng (EXISTS hoặc NOT EXISTS)
Các truy vấn con lồng nhau thông qua mệnh đề
WHERE
is.hust.edu.vn
39
Các câu truy vấn lồng nhau (…)
Đưa ra mã số sinh viên học đã đăng ký cả 2 môn có mã “21” và
“45”:
SELECT DISTINCT MaSV FROM Dangky
WHERE MSMH = “21”
AND MaSV IN (SELECT MaSV FROM Dangky
WHERE MSMH = “45”);
Đưa ra tên của môn học có số học trình lớn nhất:
SELECT tenMH FROM Monhoc
WHERE soHT ≥ ALL(SELECT soHT FROM Monhoc)
Sinhvien(MSSV, hoTen, ngaySinh, gioiTinh, queQuan, noiCuTru, maLop )
Monhoc(MSMH, tenMH, soHT, maKhoaQL)
Đangky(MaSV, MSMH, kyHoc, diemQT, diemCK)
is.hust.edu.vn
40
Các hàm thư viện
Hàm tính toán trên nhóm các bản ghi
MAX/MIN
SUM
AVG
COUNT
is.hust.edu.vn
41
Các hàm thư viện (2)
Đưa ra điểm quá trình lớn nhất, nhỏ nhất, trung
bình của các sinh viên học môn có mã số “21”:
SELECT max(diemQT), min(diemQT), avg(diemQT)
FROM Dangky
WHERE MSMH = “21”
Đưa ra tên của môn học có số học trình lớn nhất:
SELECT tenMH FROM Monhoc
WHERE soHT = (SELECT max(soHT) FROM Monhoc)
is.hust.edu.vn
42
Các hàm thư viện (3)
Hàm tính toán trên bản ghi
Hàm toán học: ABS, SQRT, LOG, EXP, SIGN, ROUND
Hàm xử lý xâu ký tự: LEN, LEFT, RIGHT, MID
Hàm xử lý thời gian: DATE, DAY, MONTH, YEAR, HOUR,
MINUTE, SECOND
Hàm chuyển đổi kiểu giá trị: FORMAT
is.hust.edu.vn
43
Ví dụ khác
CSDL: S(sid, sname, size, city)
P(pid, pname, color, weight, city)
SP(sid, pid, quantity)
Đưa ra mã số của các hãng cung ứng đồng thời 2
mặt hàng P1 và P2:
SELECT DISTINCT sid FROM SP
WHERE pid = ‘P1’
AND sid IN (SELECT sid FROM SP WHERE pid = ‘P2’);
Đưa ra tên của các hãng có số nhân viên đông
nhất:
SELECT sname FROM S
WHERE size ≥ ALL(SELECT size FROM S)
is.hust.edu.vn
44
Đưa ra tên của hãng S1 và tổng số mặt hàng mà hãng đó cung ứng
SELECT sname, SUM(quantity)
FROM S, SP
WHERE S.sid = SP.sid AND S.sid = ‘S1’
Đưa ra mã số các hãng cung ứng và số lượng trung bình các mặt
hàng được cung ứng bởi từng hãng
SELECT sid, AVG(quantity)
FROM SP
GROUP BY sid;
Đưa ra mã số các hãng cung ứng mà số lượng mặt hàng trung bình
được cung cấp bởi hãng đó là trong khoảng từ 75 đến 100
SELECT sid, AVG(quantity)
FROM SP
GROUP BY sid
HAVING AVG(quantity) BETWEEN 75 AND 100 is.hust.edu.vn
45
Bài tập
Viết các câu lệnh SQL biểu diễn các câu hỏi truy
vấn
Viết biểu thức đại số quan hệ tương đương với các
câu lệnh SQL
is.hust.edu.vn
46
Cho CSDL
Sinhvien(MSSV, hoTen, ngaySinh, gioiTinh, queQuan, noiCuTru, maLop )
Monhoc(MSMH, tenMH, soHT, maKhoaQL)
Đangky(MaSV, MSMH, kyHoc, diemQT, diemCK)
MH_GV(MSMH, tenGV)
Khoa(MaKhoa, tenKhoa, tenTruongKhoa)
Lop(MaLop, tenLop, tenGVCN, maKhoaQL, MSLopTruong)
Ghi chú: Khóa chính in đậm và gạch chân, khóa ngoài in nghiêng
is.hust.edu.vn
1) Đưa ra tên các môn học có số học trình lớn hơn 5.
2) Cho biết danh sách sinh viên thuộc lớp có tên “CNTT 2 K58”.
3) Đưa ra danh sách các sinh viên thuộc lớp có chứa từ “CNTT”.
4) Đưa ra danh sách sinh viên học môn “CSDL” học kỳ “20162” và
các điểm tương ứng gồm: điểm quá trình, điểm cuối kỳ và điểm
học phần. Giả sử điểm học phần được tính = trung bình cộng của
điểm quá trình và cuối kỳ.
5) Đưa ra các mã số sinh viên học môn học có mã số “09” học kỳ
20161 mà có điểm quá trình hoặc điểm cuối kỳ nhỏ hơn 3 hoặc
điểm học phần nhỏ hơn 4.
6) Đưa ra danh sách sinh viên đạt điểm cao nhất môn học có mã số
“21” trong học kỳ 20161.
7) Cho biết sinh viên nào đã đăng ký học cả 2 môn “Lập trình Java”
và môn “Lập trình nhúng”.
8) Đưa ra danh sách sinh viên đã đăng ký học ít nhất 1 trong 2 môn
“Lập trình Java” và “Lập trình hướng đối tượng”.
9) Môn học nào chưa từng được sinh viên nào đăng ký học. 47 is.hust.edu.vn
10) Đưa ra danh sách sinh viên và tuổi của các sinh viên có tuổi
nhiều hơn 25.
11) Đưa ra danh sách sinh viên sinh vào tháng 4 năm 1999.
12) Môn học nào có ít hơn 2 giáo viên phụ trách ?
13) Đưa ra danh sách các khoa và số lượng môn học quản lý
của từng khoa.
14) Đưa ra các môn học có số lượng đăng ký học kỳ 20172 ít
hơn 5.
15) Đưa ra danh sách các lớp và số lượng sinh viên tương ứng
của mỗi lớp. Sắp theo số lượng sinh viên giảm dần
16) Đưa ra danh sách các tỉnh thành và số lượng sinh viên đến
từ mỗi tỉnh thành.
17) Cho biết tỉnh thành nào có số lượng sinh viên lớn hơn 10
18) Cho biết tỉnh thành nào có số lượng sinh viên đông nhất
48 is.hust.edu.vn
49
Xử lý câu hỏi truy vấn
Câu lệnh SQL
Phân tích
cú pháp
(parser)
Biểu thức ĐSQH
Bộ tối ưu
(optimizer)
Biểu thức ĐSQH tối ưu
Bộ sinh mã
(code generator)
Chương trình tối ưu
is.hust.edu.vn
50 is.hust.edu.vn