Phan3
-
Upload
khacthuong2008 -
Category
Documents
-
view
367 -
download
1
Transcript of Phan3
![Page 1: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/1.jpg)
www.elarion.com
CƠ SỞ DỮ LiỆU
LARION_TDT@internship_03
Never stop improving quality
Phần 3: Ngôn ngữ truy vấn SQL
![Page 2: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/2.jpg)
Giới thiệu ngôn ngữ truy vấn SQL
• Khái niệm:
Là một loại ngôn ngữ máy tính phổ biến dùng dể tạo, thêm, xóa, sửa và lấy dữ liệu từ một hệ quản trị cơ sở dữ liệu .
Do IBM nghiên cứu . Ra đời vào năm 1970.
Được ANSI và ISO tiếp tục phát triển.
• Các phiên bản SQL:
Năm Phiên bản
1986 SQL-86
1992 SQL-92
1999 SQL1999
![Page 3: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/3.jpg)
Các thao tác trên SQL
• Các thao tác trên SQL:
Mô tả dữ liệu.
Thao tác dữ liệu.
Truy vấn dữ liệu.
![Page 4: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/4.jpg)
Mô tả dữ liệu
• Mô tả dữ liệu:
Lệnh Tạo CSDL.
Lệnh Tạo bảng.
Lệnh Xóa bảng
Lệnh Thêm cột
Lệnh Xóa cột
Lệnh Sửa Cột
Lệnh Tạo khóa chính
Lệnh Tạo khóa ngoại
Lệnh Tạo ràng buộc miền giá trị
Lệnh Tạo ràng buộc duy nhất
Lệnh Tạo chỉ mục
![Page 5: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/5.jpg)
Lệnh tạo CSDL
• Lệnh tạo CSDL:
Cú pháp: CREATE DATABASE <tên database>
VD: CREATE DATABASE LARION_TDT
![Page 6: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/6.jpg)
Lệnh tạo bảng
• Lệnh tạo bảng:
Cú pháp: CREATE TABLE <tên bảng>
( <tên cột 1><kiểu dữ liệu 1> [NOT NULL]
…) VD: CREATE TABLE SINHVIEN
(MSSV char(4) not null,
HOLOT varchar(20) not null,
TEN varchar(10) not null,
PHAI bit,
NGAYSINH datetime)
SINHVIEN
MSSV HOLOT TEN PHAI NGAYSINH
![Page 7: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/7.jpg)
Lệnh xóa bảng & lệnh thêm cột
• Lệnh xóa bảng:
Cú pháp: DROP TABLE <tên bảng>;
VD: DROP TABLE SINHVIEN;
• Lệnh thêm cột:
Cú pháp: ALTER TABLE <tên bảng>
ADD <tên cột> <kiểu dữ liệu> [NOT NULL]; VD:
ALTER TABLE SINHVIEN
ADD DOANVIEN bit;
SINHVIEN
MSSV HOLOT TEN PHAI NGAYSINH DOANVIEN
![Page 8: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/8.jpg)
Lệnh xóa cột
• Lệnh xóa cột:
Cú pháp:
ALTER TABLE <tên bảng>
DROP COLUMN <tên cột>;
VD: ALTER TABLE SINHVIEN
DROP COLUMN DOANVIEN;
SINHVIEN
MSSV HOLOT TEN PHAI NGAYSINH
![Page 9: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/9.jpg)
Lệnh sửa cột
• Lệnh sửa cột:
Cú pháp:
ALTER TABLE <tên bảng>
ALTER COLUMN <tên cột> <kiểu dữ liệu>;
VD: ALTER TABLE SINHVIEN
ALTER COLUMN NGAYSINH SmallDateTime;
![Page 10: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/10.jpg)
Lệnh tạo khóa chính
• Lệnh tạo khóa chính
Cú pháp: ALTER TABLE <tên bảng>
ADD CONTRAINT <tên ràng buộc>
PRIMARY KEY (danh sách cột);
Lưu ý:
Tên ràng buộc là duy nhất. Các cột trong danh sách tên cột phải có thuộc tính NOT
NULL. VD: ALTER TABLE SINHVIEN ADD CONTRAINT KC_SV
PRIMARY KEY (MSSV);
SINHVIEN
MSSV HOLOT TEN PHAI NGAYSINH
![Page 11: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/11.jpg)
Lệnh tạo khóa ngoại
• Lệnh tạo khóa ngoại:
Cú pháp: ALTER TABLE <tên bảng>
ADD CONSTRAINT <tên ràng buộc>
FOREIGN KEY (danh sách cột)
REFERENCES <tên bảng> (danh sách cột);
VD: ALTER TABLE SINHVIEN ADD CONSTRAINT KN_SV FOREIGN KEY (MSSV) REFERENCES DSLOP(MSSV)
SINHVIEN
MSSV HOLOT TEN PHAI NGAYSINH MALOP
DSLOP
MALOP TENLOP NIENKHOA
![Page 12: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/12.jpg)
Lệnh tạo ràng buộc về miền giá trị
• Lệnh tạo ràng buộc về miền giá trị:
Cú pháp: ALTER TABLE <tên bảng>
ADD CONSTRAINT <tên ràng buộc> CHECK (điều kiện);
VD: ALTER TABLE SINHVIEN ADD CONSTRAINT KT_NGAYSINH CHECK (YEAR(NGAYSINH) BETWEEN 1980 AND 1990);
Khi thêm bộ:
hệ thống sẽ báo lỗi do có ràng buộc năm sinh .
SINHVIEN
MSSV HOLOT TEN PHAI NGAYSINH
080091T Nguyễn Tiến Thành 1 09/09/1990
0900501 Huỳnh Phúc Điền 1 07/07/1991
070021T Nguyễn Ngọc Bình 0 24/12/1979
![Page 13: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/13.jpg)
Lệnh tạo ràng buộc duy nhất
• Lệnh tạo ràng buộc duy nhất:
Cú pháp:ALTER TABLE <tên bảng>
ADD CONSTRAINT <tên ràng buộc>UNIQUE (danh sách tên cột);
VD: ALTER TABLE SINHVIEN
ADD CONSTRAINT DN_NGAYSINH UNIQUE (NGAYSINH);
Khi thêm bộ
Hệ thống sẽ báo lỗi do đã có ràng buộc ngày sinh
SINHVIEN
MSSV HOLOT TEN PHAI NGAYSINH
080091T Nguyễn Tiến Thành 1 09/09/1990
090025T Đặng Hồng Hạnh 0 07/07/1991
0900501 Huỳnh Phúc Điền 1 07/07/1991
![Page 14: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/14.jpg)
Lệnh tạo chỉ mục
• Lệnh tạo chỉ mục:
Tạo chỉ mục để lưu thứ tự sắp xếp các bản ghi theo giá trị tăng dần các cột
Nên tạo chỉ mục cho các bảng có nhiều bản ghi và ít được cập nhật
Cú pháp: CREATE INDEX <tên index>
ON <tên bảng> (<cột 1,<cột 2>,..);
VD: CREATE INDEX CM_HOLOT
ON SINHVIEN (HOLOT);
CREATE INDEX CM_TENON SINHVIEN (TEN);
![Page 15: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/15.jpg)
Lệnh xóa chỉ mục
• Lệnh xóa chỉ mục:
Dùng xóa một chỉ mục đã tạo trước đó.
Cú pháp: DROP INDEX <tên index>;
VD:
DROP INDEX CM_HOLOT;
DROP INDEX CM_HOLOT;
![Page 16: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/16.jpg)
Thao tác với dữ liệu
• Các thao tác với dữ liệu:
Lệnh thêm mẫu tin
Lệnh xóa mẫu tin
Lệnh cập nhật mẫu tin
![Page 17: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/17.jpg)
Lệnh thêm mẫu tin
• Lệnh thêm mẫu tin:
Cú pháp: INSERT INTO <tên bảng>(<tên cột 1>,..)
VALUES (<biểu thức 1>,…);
Nếu các biểu thức sau VALUES đúng thứ tự trong bảng thì các cột sau INTO có thể được bỏ qua.
VD:INSERT INTO SINHVIEN (MSSV,HOLOT,TEN,PHAI,NGAYSINH) VALUES (’080099T’,’Hồ Thái’,’Bảo’,’1’,’06/01/1990’);
hoặc INSERT INTO SINHVIEN VALUES (’080099T’,’Hồ Thái’,’Bảo’,’1’,’06/01/1990’);
SINHVIEN
MSSV HOLOT TEN PHAI NGAYSINH
080099T Hồ Thái Bảo 1 06/01/1990
![Page 18: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/18.jpg)
Lệnh xóa mẫu tin (1/2)
• Lệnh xóa mẫu tin:
Cú pháp: DELETE FROM <tên bảng>
WHERE <điều kiện>;
Ngữ nghĩa: các mẫu tin thỏa mệnh đề where sẽ bị xóa khỏi bảng. Nếu không có where thì tất cả mẫu tin sẽ bị xóa
VD: cho Table Môn học
MONHOC
MAMON TENMON KHOAHOC
TH101 Tin học đại cương 2008
TH308 Cấu trúc dữ liệu 2009
DA102 Đồ án 1 2009
![Page 19: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/19.jpg)
Lệnh xóa mẫu tin (2/2)
Yêu cầu: xóa các môn học có KHOAHOC là 2008.
Câu lệnh: DELETE FROM MONHOC
WHERE KHOAHOC=‘2008’;
Kết quả:
MONHOC
MAMON TENMON KHOAHOC
TH308 Cấu trúc dữ liệu 2009
DA102 Đồ án 1 2009
TH101 Tin học đại cương 2008
![Page 20: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/20.jpg)
Lệnh cập nhật mẫu tin (1/2)
• Lệnh cập nhật mẫu tin:
Cú pháp: UPDATE <tên bảng>
SET <tên cột 1> = <biểu thức 1>,
…
WHERE <điều kiện>;
Giá trị các cột của các mẫu tin thỏa điều kiện WHERE sẽ được thay thế bằng các giá trị <biểu thức 1>,… tương ứng.
Nếu không có WHERE thì tất cả các mẫu tin của bảng sẽ được sửa đổi.
VD: <Xem trang sau>
![Page 21: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/21.jpg)
Lệnh cập nhật mẫu tin (2/2)
VD: cho bảng BANGDIEM môn Automat như sau:
Yêu cầu : tăng cho sinh viên mỗi người 1 điểm
Câu lệnh: UPDATE BANGDIEM SET DIEM=DIEM+1;
Kết quả:
BANGDIEM
MSSV DIEM
070011T 5
080130T 6
081307T 6
BANGDIEM
MSSV DIEM
070111T 6
080130T 7
081307T 7
![Page 22: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/22.jpg)
Truy vấn dữ liệu
• Truy vấn dữ liệu:
Cú pháp tổng quát
Phát biểu SELECT với *
Phát biểu SELECT với AS
Phát biểu SELECT với TOP N
Phát biểu SELECT với DISTINCT
Mệnh đề WHERE
Mệnh đề ORDER BY
Mệnh đề GROUP BY
Mệnh đề HAVING
Truy vấn từ nhiều bảng
Truy vấn con
![Page 23: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/23.jpg)
Cú pháp tổng quát
• Cú pháp tổng quát:
SELECT <danh sách cột>
FROM <danh sách bảng>
WHERE <điều kiện>
GROUP BY <tên cột>
HAVING <điều kiện cho GROUP BY>
ORDER BY <danh sách cột>
![Page 24: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/24.jpg)
Phát biểu SELECT *
• Phát biểu SELECT với * :
Dấu * dùng để đại diện cho tất cả các cột
Cú pháp: SELECT * FROM <tên bảng>;
VD: 2 câu truy vấn sau cho cùng kết quả:
Câu tổng quát: SELECT MSSV,DIEM
FROM BANGDIEM; Câu có dấu * : SELECT * FROM BANGDIEM;
BANGDIEM
MSSV DIEM
070011T 5
080130T 6
![Page 25: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/25.jpg)
Phát biểu SELECT với AS
• Phát biểu SELECT với AS:
Dùng đặt lại tên cột khi hiển thị kết quả
Cú pháp: SELECT <tên cột> AS <tên muốn hiển thị>
VD: Yêu cầu đổi tên hiển thị của cột DIEM thành DIEMTHI
Câu lệnh: SELECT DIEM AS DIEMTHI FROM BANGDIEM
BANGDIEM
MSSV DIEM
070011T 5
080130T 6
MSSV DIEMTHI
070011T 5
080130T 6
![Page 26: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/26.jpg)
Phát biểu SELECT với TOP N
• Phát biểu SELECT với TOP N:
Cho phép lấy ra N mẫu tin từ một bảng.
Cú pháp: SELECT TOP <N> * FROM <tên bảng>
VD: Cho bảng sau, lấy ra 2 mẫu tin đầu tiên.
Câu lệnh: SELECT TOP 2 * FROM BANGDIEM
BANGDIEM
MSSV DIEM
070111T 6
080130T 7
081307T 7
MSSV DIEM
070111T 6
080130T 7
![Page 27: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/27.jpg)
Phát biểu SELECT với DISTINCT
• Phát biểu SELECT với DISTINCT:
Khi kết quả trả về có nhiều mẫu tin trùng nhay, để chỉ lấy 1 mẫu tin ta dùng DISTINCT.
Cú pháp: SELECT DISTINCT <tên cột> FROM <tên bảng>
VD: Cho bảng sau cho biết có những lớp nào
Câu lệnh: SELECT DISTINCT MALOP FROM DANHSACHSV
Kết quả:
DANHSACHSV
MSSV MALOP TENSV
080206K 08KK1D Hồ Hoài Anh
080016Q 08QT1D Lưu Hương Giang
080123Q 08QT1D Hoàng Thùy Linh
MALOP
08KK1D
08QT1D
![Page 28: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/28.jpg)
Mệnh đề WHERE (1/2)
• Mệnh đề WHERE:
Dùng để đặt điều kiện trích dữ liệu.
Các toán tử của mệnh đề WHERE:
So sánh: >, <, >=, <=, =, <>Logic: And, Or, NotBETWEEN … AND …: lấy giá trong 1 vùng.LIKE: so sánh gần giống IN: phép so sánh trong 1 tập hơp, danh sách. IS NULL (IS NOT NULL) : kiểm tra giá trị có rỗng hay
khôngEXISTS: trả về TRUE nếu có ít nhất 1 mẫu tin tồn tại
VD: <Xem trang sau>
![Page 29: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/29.jpg)
Mệnh đề WHERE (2/2)
VD: Cho bảng sau, Tìm các sinh viên có ngày sinh từ 01/06/1990 đến 31/12/1990
Câu lệnh: SELECT * FROM SINHVIEN WHERE NGAYSINH BETWEEN ‘01/06/1990’ AND ’31/12/1990’;
SINHVIEN
MSSV HOTEN NGAYSINH QUEQUAN
080777K Nguyễn Quốc Đạt 20/10/1990 Đồng Tháp
080302A Nguyễn Lan Anh 01/01/1990 Vũng Tàu
080096T Cao Minh Tiến 03/10/1990 Hồ Chí Minh
MSSV HOTEN NGAYSINH QUEQUAN
080777K Nguyễn Quốc Đạt 20/10/1990 Đồng Tháp
![Page 30: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/30.jpg)
Mệnh đề ORDER BY
• Mệnh đề ORDER BY:
Sắp xếp kết quả theo thứ tự mong muốn Cú pháp: ORDER BY <danh sách cột> [ASC|DESC] Với ASC sắp tăng dần hoặc DESC sắp xếp giảm dần. VD: Cho bảng sau:
Yêu cầu: Trích ra danh sách sinh viên sắp xếp tăng dần Câu lệnh: SELECT * FROM SINHVIEN ORDER BY MSSV ASC
MSSV HOTEN NGAYSINH QUEQUAN
080777K Nguyễn Quốc Đạt 20/10/1990 Đồng Tháp
080096T Cao Minh Tiến 03/10/1990 Hồ Chí Minh
MSSV HOTEN NGAYSINH QUEQUAN
080096T Cao Minh Tiến 03/10/1990 Hồ Chí Minh
080777K Nguyễn Quốc Đạt 20/10/1990 Đồng Tháp
![Page 31: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/31.jpg)
Mệnh đề GROUP BY (1/2)
• Mệnh đề GROUP BY:
Nhóm dữ liệu theo từng nhóm để thực hiện các phép toán thống kê
Cú pháp: GROUP BY <danh sách tên cột>
Một số hàm thông dụng dùng với GROUP BY:
AVG: tính giá trị trung bình.MIN: tính giá trị nhỏ nhất.MAX: tính giá trị lớn nhất.COUNT: đếm số phần tử.SUM: tính tổng các phần tử
VD: <Xem trang sau>
![Page 32: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/32.jpg)
Mệnh đề GROUP BY (2/2)
VD: Cho bảng sau, cho biết số lượng sinh viên từng lớp
Câu lệnh:
SELECT MALOP, COUNT(*) AS SOLUONG
FROM SINHVIEN
GROUP BY MALOP Kết quả:
DANHSACHKHENTHUONG
MSSV MALOP TENSV PHAI XEPLOAI
080010A 08AV1D Bùi Long Hải Nam Giỏi
080120Q 08QT2D Hồ Minh Tâm Nữ Giỏi
080133Q 08QT2D Đoàn Thế Vinh Nam Khá
080361T 08TN1D Đặng Long Đế Nam Khá
MALOP SOLUONG
08AV1D 1
08QT2D 2
08TN1D 1
![Page 33: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/33.jpg)
Mệnh đề HAVING
• Mệnh đề HAVING:
Đặt điều kiện sau khi đã nhóm dữ liệu bằng mệnh đề GROUP BY
VD: trích danh sách các lớp có từ 2 sinh viên được thưởng
Câu lệnh:
SELECT MALOP, COUNT(*) AS SOSV
FROM SINHVIEN
GROUP BY MALOP
HAVING COUNT (*)>=2;
DANHSACHKHENTHUONG
MALOP MSSV TENSV PHAI XEPLOAI
08AV1D 080010A Bùi Long Hải Nam Giỏi
08QT2D 080120Q Hồ Minh Tâm Nữ Giỏi
08QT2D 080133Q Đoàn Thế Vinh Nam Khá
MALOP SOSV
08QT2D 2
![Page 34: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/34.jpg)
Truy vấn từ nhiều bảng (1/2)
• Truy vấn từ nhiều bảng:
Khi thông tin cần lấy ra có từ nhiều bản khác nhau cần thực hiện truy vấn từ nhiều bảng.
Nếu cần kết n bảng thì cần có n-1 điều kiện kết.
Các tên cột cùng có ở nhiều bảng cần ghi theo dạng [Tên bảng].[Tên cột]
Có thể sử dụng tên tắt của các bản.
VD: Trích ra MSSV,HOTEN,MALOP,TENLOP của các sinh viên .
<Xem tiếp trang sau>
![Page 35: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/35.jpg)
Truy vấn từ nhiều bảng (2/2)
Câu lệnh:
SELECT MSSV,TENSV,MALOP,TENLOP
FROM SINHVIEN S, LOP L
WHERE S.MALOP = L.MALOP; Kết quả:
SINHVIEN
MSSV TENSV PHAI MALOP
080010A Bùi Long Hải Nam 08AV1D
080120Q Hồ Minh Tâm Nữ 08QT1D
080133Q Đoàn Thế Vinh Nam 08QT1D
LOP
MALOP TENLOP
08AV1D Anh Văn
08QT1D Quản Trị
08TH1D Tin Học
08KK1D Kế Toán
MSSV TENSV MALOP TENLOP
080010A Bùi Long Hải 08AV1D Anh Văn
080120Q Hồ Minh Tâm 08QT1D Quản Trị
080133Q Đoàn Thế Vinh 08QT1D Quản Trị
![Page 36: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/36.jpg)
Truy vấn con (1/2)
• Truy vấn con:
Được sử dụng khi cần kết quả từ một câu truy vấn khác gọi là truy vấn con.
Khi thực hiện truy vấn con sẽ được thực hiện trước rồi lấy kết quả để thực hiện truy vấn lớn.
Cú pháp:
SELECT <danh sách cột>
FROM <danh sách bảng>
WHERE <điều kiện>
… <tên cột>IN (NOT IN, =, <>,…)
(SELECT <danh sách cột>
FROM <danh sách bảng>
WHERE <điều kiện>);
![Page 37: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/37.jpg)
Truy vấn con (2/2)
VD: Lấy ra danh sách những sinh viên có điểm toán cao nhất
Câu lệnh:
SELECT MSSV,TENSV,DIEM
FROM DIEMTOAN
WHERE DIEM=( SELECT MAX(DIEM)
FROM DIEMTOAN);
DIEMTOAN
MSSV TENSV DIEM
080010A Bùi Long Hải 9
080120Q Hồ Minh Tâm 10
080133Q Đoàn Thế Vinh 9
MSSV TENSV DIEM
080120Q Hồ Minh Tâm 10
![Page 38: Phan3](https://reader033.fdocuments.net/reader033/viewer/2022052905/558718f3d8b42a876d8b467b/html5/thumbnails/38.jpg)
Tài liệu tham khảo
• Giáo trình CSDL , ThS.Lê Thị Ngọc Thảo - ĐH Tôn Đức Thắng.