You are on page 1of 42

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GTVT

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI TẬP LỚN


HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Tên đề tài:

QUẢN LÝ SINH VIÊN

GIÁO VIÊN HƯỚNG DẪN: NGUYỄN THỊ KIM HUỆ


NHÓM SINH VIÊN THỰC HIỆN: TỔNG ĐĂNG VƯƠNG
THÂN VĂN HOÀNG
VŨ QUANG TUẤN
NGUYỄN VĂN CHIẾN
NGUYỄN ĐÌNH NGHĨA
LỚP: 71DCTT22

HÀ NỘI 06-2022
MỤC LỤC
I. Mô hình cơ sở dữ liệu........................................................................................3
1.1. Bảng KHOA (KHOA).................................................................................3
1.2. Bảng GIANGVIEN (Giảng Viên)...............................................................3
1.3. Bảng LOP (Lớp)..........................................................................................3
1.4. Bảng SINHVIEN (Sinh Viên).....................................................................3
1.5. Bảng MONHOC (Môn Học).......................................................................4
1.6. Bảng DIEMTHI (Điểm Thi).......................................................................4
II. Mô Hình Liên Kết Thực Thể (Diagram)......................................................5
III. Thiết Lập Cơ Sở Dữ Liệu...............................................................................5
3.1. Bảng KHOA.................................................................................................5
3.2. Bảng GIANGVIEN......................................................................................5
3.3. Bảng LOP.....................................................................................................5
3.4. Bảng SINHVIEN.........................................................................................6
3.5. Bảng MONHOC..........................................................................................6
3.6. Bảng DIEMTHI...........................................................................................6
IV. Chèn Dữ Liệu Vào Các Bảng.........................................................................6
4.1. Chèn Bảng KHOA.......................................................................................6
4.2. Chèn Bảng GIANGVIEN............................................................................7
4.3. Chèn Bảng LOP...........................................................................................7
4.4. Chèn Bảng SINHVIEN...............................................................................8
4.5. Chèn Bảng MONHOC..............................................................................10
4.6. Chèn Bảng DIEMTHI...............................................................................11
V. Bài Tập VIEW..................................................................................................25
1. Các môn học mà sinh viên đã thi lại lần 2..................................................25
2. Tạo View điểm trung bình của từng sinh viên...........................................26
3. Tạo view điểm trung bình cao nhất của từng lớp......................................28
4. Tạo view sinh viên có điểm trung bình dưới 5...........................................28
IV. Bài Tập Thống Kê............................................................................................29

2
1. Liệt kê thông tin các sinh viên có chữ “thị”...............................................29
2. Liệt kê các sinh viên có cùng quê................................................................29
3. Trung bình điểm thi của các môn...............................................................30
4. Tính điểm trung bình của môn học có mã môn là ‘MH2’........................30
5. Các môn học mà sinh viên đã thi lại lần 2..................................................31
6. Tính điểm trung bình và xếp loại của từng sinh viên................................31
7. Tìm điểm trung bình cao nhất của từng lớp..............................................33
8. Tìm các sinh viên có điểm trung bình dưới 5.............................................33
V. Bài tập Thủ tục (5 câu).....................................................................................34
1. Tạo câu thủ tục thêm sinh viên....................................................................34
2. Thủ tục sửa sinh viên....................................................................................34
3. Câu thủ tục tính điểm trung bình sinh viên dựa vào mã sinh viên..........35
4. Thủ tục tìm sinh viên....................................................................................35
5. Lấy thông tin sinh viên theo mã sinh viên..................................................35
VI. Bài tập bẫy lỗi (5 câu)......................................................................................36
1. Đảm bảo ngày sinh không được vượt quá ngày hiện tại...........................36
2. Môn học không có số tín chỉ âm..................................................................36
3. Không có cột trống trong các trường dữ liệu bắt buộc trong bảng
SINHVIEN...........................................................................................................37
4. Không được xoá dữ liệu trong bảng DIEMTHI........................................38
5. Giá trị cột TenKhoa trong bảng không chứa kí tự đặc biệt.....................38

3
I. Mô hình cơ sở dữ liệu
I.1. Bảng KHOA (KHOA)
Column Name Data Type Allow Nulls Note

MaKhoa
nvarchar(50) NOT NULL Mã Khoa
(Primary Key)

TenKhoa nvarchar(255) NOT NULL Tên Khoa

I.2. Bảng GIANGVIEN (Giảng Viên)

Column Name Data Type Allow Nulls Note

MaGiangVien Mã Giảng
nvarchar(50) NOT NULL
(Primary Key) Viên

MaKhoa nvarchar(50) NOT NULL Mã Khoa

Tên Giảng
TenGiangVien nvarchar(255) NOT NULL
Viên

Cơ Sở Đào
CoSoDaoTao nvarchar(255) NULL
Tạo

I.3. Bảng LOP (Lớp)

Column Name Data Type Allow Nulls Note

MaLop Mã Giảng
nvarchar(50) NOT NULL
(Primary Key) Viên

TenLop nvarchar(255) NOT NULL Tên Lớp

MaKhoa nvarchar(50) NOT NULL Mã Khoa

I.4. Bảng SINHVIEN (Sinh Viên)


4
Column Name Data Type Allow Nulls Note

MaSinhVien
nvarchar(50) NOT NULL Mã Sinh Viên
(Primary Key)

MaLop nvarchar(50) NOT NULL Mã Lớp

TenSinhVien nvarchar(255) NOT NULL Tên Sinh Viên

GioiTinh nvarchar(50) NOT NULL Giới Tính

NgaySinh date NULL Ngày Sinh

QueQuan nvarchar(255) NULL Quê Quán

I.5. Bảng MONHOC (Môn Học)

Column Name Data Type Allow Nulls Note

MaMonHoc
nvarchar(50) NOT NULL Mã Môn Học
(Primary Key)

TenMonHoc nvarchar(50) NOT NULL Tên Môn Học

SoTinChi int NOT NULL Số Tín Chỉ

I.6. Bảng DIEMTHI (Điểm Thi)

Column Name Data Type Allow Nulls Note

MaSinhVien
nvarchar(50) NOT NULL Mã Sinh Viên
(Primary Key)

MaMonHoc
nvarchar(50) NOT NULL Mã Môn Học
(Primary Key)

5
DiemThi float NULL Điểm Thi

LanThi int NOT NULL Lần Thi

II. Mô Hình Liên Kết Thực Thể (Diagram)

III. Thiết Lập Cơ Sở Dữ Liệu


III.1. Bảng KHOA
CREATE TABLE KHOA(
MaKhoa nvarchar(50) NOT NULL,
CONSTRAINT pk_khoa PRIMARY KEY(MaKhoa),
TenKhoa nvarchar(255) NOT NULL
);
III.2. Bảng GIANGVIEN
CREATE TABLE GIANGVIEN(
MaGiangVien nvarchar(50) NOT NULL,
CONSTRAINT pk_giangvien PRIMARY KEY(MaGiangVien),
MaKhoa nvarchar(50) NOT NULL,
TenGiangVien nvarchar(255) NOT NULL,
CoSoDaoTao nvarchar(255) NULL,
CONSTRAINT fk_giangvien_khoa FOREIGN KEY(MaKhoa)
REFERENCES KHOA(MaKhoa) ON DELETE CASCADE ON UPDATE CASCADE
);
III.3. Bảng LOP
6
CREATE TABLE LOP(
MaLop nvarchar(50) NOT NULL,
CONSTRAINT pk_lop PRIMARY KEY(MaLop),
TenLop nvarchar(255) NOT NULL,
MaKhoa nvarchar(50) NOT NULL,
CONSTRAINT fk_lop_khoa FOREIGN KEY(MaKhoa)
REFERENCES KHOA(MaKhoa) ON DELETE CASCADE ON UPDATE CASCADE
);
III.4. Bảng SINHVIEN
CREATE TABLE SINHVIEN(
MaSinhVien nvarchar(50) NOT NULL,
CONSTRAINT pk_sinhvien PRIMARY KEY(MaSinhVien),
MaLop nvarchar(50) NOT NULL,
TenSinhVien nvarchar(255) NOT NULL,
GioiTinh nvarchar(50) NOT NULL,
NgaySinh DATE,
QueQuan nvarchar(255) NULL,
CONSTRAINT fk_sinhvien_lop FOREIGN KEY(MaLop)
REFERENCES LOP(MaLop) ON DELETE CASCADE ON UPDATE CASCADE
);
III.5. Bảng MONHOC
CREATE TABLE MONHOC(
MaMonHoc nvarchar(50) NOT NULL,
CONSTRAINT pk_monhoc PRIMARY KEY(MaMonHoc),
TenMonHoc nvarchar(50) NOT NULL,
SoTinChi int NOT NULL
);
III.6. Bảng DIEMTHI
CREATE TABLE DIEMTHI(
MaSinhVien nvarchar(50) NOT NULL,
MaMonHoc nvarchar(50) NOT NULL,
CONSTRAINT pk_diemthi PRIMARY KEY(MaSinhVien, MaMonHoc),
DiemThi float NULL,
LanThi int NOT NULL,
CONSTRAINT fk_diemthi_sinhvien FOREIGN KEY(MaSinhVien)
REFERENCES SINHVIEN(MaSinhVien) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_diemthi_monhoc FOREIGN KEY(MaMonHoc)
REFERENCES MONHOC(MaMonHoc) ON DELETE CASCADE ON UPDATE CASCADE
);
IV. Chèn Dữ Liệu Vào Các Bảng
IV.1. Chèn Bảng KHOA
INSERT INTO KHOA(MaKhoa,TenKhoa)
VALUES
('CNTT',N'Công Nghệ Thông Tin'),
('CT',N'Công Trình'),
('NN',N'Ngôn Ngữ'),
('MKT',N'Marketing'),
('CK',N'Cơ Khí');

Kết quả:

7
IV.2. Chèn Bảng GIANGVIEN
INSERT INTO GIANGVIEN(MaGiangVien, TenGiangVien, MaKhoa, CoSoDaoTao)
VALUES
('GV_CNTT1',N'Nguyễn Thị Kim Huệ','CNTT',N'Hà Nội'),
('GV_CNTT2',N'Lê Chí Luận','CNTT',N'Hà Nội'),
('GV_CT1',N'Vũ Thành Long','CT',N'Vĩnh Phúc'),
('GV_CT2',N'Hoàng Thị Hương Giang','CT',N'Hà Nội'),
('GV_NN1',N'Vũ Thanh Giang','NN',N'Hà Nội'),
('GV_NN2',N'Lê Tuyết Nhung','NN',N'Vĩnh Phúc'),
('GV_MKT1',N'Kiều Mạnh','MKT',N'Hà Nội'),
('GV_MKT2',N'Phạm Thị Thu Hằng','MKT',N'Hà Nội'),
('GV_CK1',N'Nguyễn Quang Anh','CK',N'Hà Nội'),
('GV_CK2',N'Lê Quang Thắng','CK',N'Vĩnh Phúc'),
('GV_CK3',N'Nguyễn Tuấn Hải','CK',N'Hà Nội');

Kết quả:

IV.3. Chèn Bảng LOP


INSERT INTO LOP(MaLop, TenLop, MaKhoa)
VALUES
('L_TT1','71KTT21','CNTT'),
('L_TT2','71KTT22','CNTT'),
('L_CT1','71KCT11','CT'),
('L_CT2','71KCT12','CT'),
('L_NN1','71KNN30','NN'),
('L_NN2','71KNN31','NN'),
('L_MKT1','71MKT41','MKT'),
8
('L_MKT2','71MKTT42','MKT'),
('L_CK1','71KCT51','CK'),
('L_CK2','71KCT52','CK');

Kết quả:

IV.4. Chèn Bảng SINHVIEN


INSERT INTO SINHVIEN(MaSinhVien, MaLop, TenSinhVien, GioiTinh, NgaySinh, QueQuan)
VALUES
('71DCTT001','L_TT1',N'Tống Đăng Vương','Nam','02/12/2002',N'Hưng Yên'),
('71DCTT002','L_TT1',N'Vũ Quang Tuấn','Nam','04/16/2002',N'Nam Định'),
('71DCTT003','L_TT1',N'Nguyễn Đình Nghĩa','Nam','02/05/2002',N'Bắc Ninh'),
('71DCTT004','L_TT1',N'Nguyễn Văn Chiến','Nam','09/01/2002',N'Thái Bình'),
('71DCTT005','L_TT1',N'Thân Văn Hoàng','Nam','02/10/2002',N'Hà Tĩnh'),
('71DCTT006','L_TT2',N'Đỗ Đình Giang','Nam','03/08/2002',N'Nam Định'),
('71DCTT007','L_TT2',N'Đặng Nhật Anh','Nam','12/02/2002',N'Hà Nội'),
('71DCTT008','L_TT2',N'Vũ Việt Dũng','Nam','04/25/2002',N'Hà Nội'),
('71DCTT009','L_TT2',N'Lê Thị Hương Ly',N'Nữ','06/20/2002',N'Thanh Hoá'),
('71DCTT010','L_TT2',N'Hoàng Minh Công','Nam','02/07/2002',N'Vĩnh Phúc'),
('71DCTT011','L_CT1',N'Nguyễn Hoàng Long','Nam','03/03/2002',N'Bắc Ninh'),
('71DCTT012','L_CT1',N'Nguyễn Thị Trúc',N'Nữ','04/01/2002',N'Hà Nội'),
('71DCTT013','L_CT1',N'Lê Đức Thuận','Nam','06/29/2002',N'Hà Nội'),
('71DCTT014','L_CT1',N'Đào Huy Nhật Minh','Nam','10/12/2002',N'Hà Nội'),
('71DCTT015','L_CT1',N'Đỗ Xuân Vũ','Nam','01/01/2002',N'Lạng Sơn'),
('71DCTT016','L_CT2',N'Nguyễn Đức Anh Quân','Nam','11/15/2002',N'Cao Bằng'),
('71DCTT017','L_CT2',N'Đỗ Lê Khánh Vy',N'Nữ','01/21/2002',N'Hà Nam'),
('71DCTT018','L_CT2',N'Nguyễn Thu Hà',N'Nữ','05/30/2002',N'Hà Nội'),
('71DCTT019','L_CT2',N'Nguyễn Văn Huy','Nam','07/13/2002',N'Hà Nội'),
('71DCTT020','L_CT2',N'Phạm Thị Hồng Vân',N'Nữ','08/20/2002',N'Ninh Bình'),
('71DCTT021','L_NN1',N'Lê Hải Nam','Nam','03/14/2002',N'Yên Bái'),
('71DCTT022','L_NN1',N'Đỗ Nhật Dương',N'Nữ','04/22/2002',N'Hưng Yên'),
('71DCTT023','L_NN1',N'Trần Thị Huệ',N'Nữ','06/06/2002',N'Hưng Yên'),
('71DCTT024','L_NN1',N'Trần Thị Vân Trang',N'Nữ','04/14/2002',N'Lai Châu'),
('71DCTT025','L_NN1',N'Nguyễn Đức Thắng','Nam','08/24/2002',N'Hưng Yên'),
('71DCTT026','L_NN2',N'Đỗ Kim Phúc','Nam','09/12/2002',N'Quảng Ninh'),
('71DCTT027','L_NN2',N'Lê Anh Sơn','Nam','12/01/2002',N'Hải Phòng'),
('71DCTT028','L_NN2',N'Trịnh Anh Thạch','Nam','05/07/2002',N'Nghệ An'),
('71DCTT029','L_NN2',N'Nguyễn Lê Trung Thành','Nam','02/03/2002',N'Hà Nội'),
('71DCTT030','L_NN2',N'Nguyễn Thế Bảo','Nam','08/29/2002',N'Bắc Giang'),
('71DCTT031','L_MKT1',N'Nguyễn Thị Phương Anh',N'Nữ','06/11/2002',N'Bắc Ninh'),
('71DCTT032','L_MKT1',N'Trần Thị Tuyết',N'Nữ','06/15/2002',N'Hưng Yên'),
('71DCTT033','L_MKT1',N'Tô Trường An Trung','Nam','05/22/2002',N'Quảng Ninh'),

9
('71DCTT034','L_MKT1',N'Mùng Chí Bảo','Nam','09/07/2002',N'Hải Dương'),
('71DCTT035','L_MKT1',N'Lê Xuân Ngọc','Nam','02/24/2002',N'Yên Bái'),
('71DCTT036','L_MKT2',N'Đỗ Thị Thu Hà',N'Nữ','01/26/2002',N'Sơn La'),
('71DCTT037','L_MKT2',N'Vũ Mai Hương',N'Nữ','07/13/2002',N'Thái Bình'),
('71DCTT038','L_MKT2',N'Phạm Văn Tân','Nam','03/19/2002',N'Hà Nội'),
('71DCTT039','L_MKT2',N'Cao Xuân Hoàng','Nam','08/25/2002',N'Hà Giang'),
('71DCTT040','L_MKT2',N'Đỗ Quốc Hùng','Nam','10/15/2002',N'Hoà Bình'),
('71DCTT041','L_CK1',N'Trần Thanh Tâm',N'Nữ','12/24/2002',N'Ninh Bình'),
('71DCTT042','L_CK1',N'Nguyễn Thị Chi',N'Nữ','03/23/2002',N'Hải Dương'),
('71DCTT043','L_CK1',N'Tạ Thị Hồng Nhung',N'Nữ','04/23/2002',N'Nam Định'),
('71DCTT044','L_CK1',N'Nguyễn Anh Tuấn','Nam','04/12/2002',N'Hưng Yên'),
('71DCTT045','L_CK1',N'Trịnh Tùng Anh','Nam','03/17/2002',N'Hoà Bình'),
('71DCTT046','L_CK2',N'Đào Quang Huy','Nam','05/16/2002',N'Hải Phòng'),
('71DCTT047','L_CK2',N'Lại Vân Anh',N'Nữ','08/11/2002',N'Thái Bình'),
('71DCTT048','L_CK2',N'Hồng Kim Bảo','Nam','05/11/2002',N'Vĩnh Phúc'),
('71DCTT049','L_CK2',N'Lâm Chấn Khang','Nam','08/04/2002',N'Hà Nội'),
('71DCTT050','L_CK2',N'Nguyễn Thanh Hưng','Nam','12/05/2002',N'Hưng Yên');

Kết quả:

10
IV.5. Chèn Bảng MONHOC
INSERT INTO MONHOC(MaMonHoc, TenMonHoc, SoTinChi)
VALUES
('MH1',N'Công Nghệ Phần Mềm',3),
('MH2',N'Ngôn Ngữ Anh',4),
('MH3',N'Java',4),
('MH4',N'Hệ Quản Trị CSDL',2),
('MH5',N'Xây Dựng Hệ Thống IoT',3),
('MH6',N'Kiến Trúc Và Thiết Kế Phần Mềm',3);

Kết quả:

11
IV.6. Chèn Bảng DIEMTHI
INSERT INTO DIEMTHI(MaSinhVien,MaMonHoc,DiemThi,LanThi)
VALUES
('71DCTT001','MH1',8.0,1),
('71DCTT001','MH2',8.3,1),
('71DCTT001','MH3',7.5,1),
('71DCTT001','MH4',6.0,1),
('71DCTT001','MH5',5.5,2),
('71DCTT001','MH6',8.0,1),
('71DCTT002','MH1',7.0,1),
('71DCTT002','MH2',6.3,1),
('71DCTT002','MH3',4.5,1),
('71DCTT002','MH4',6.0,1),
('71DCTT002','MH5',5.5,2),
('71DCTT002','MH6',7.5,1),
('71DCTT003','MH1',6.25,1),
('71DCTT003','MH2',8.3,1),
('71DCTT003','MH3',7.5,1),
('71DCTT003','MH4',6.5,1),
('71DCTT003','MH5',5.0,2),
('71DCTT003','MH6',7.5,1),
('71DCTT004','MH1',8.25,1),
('71DCTT004','MH2',9.0,1),
('71DCTT004','MH3',7.5,1),
('71DCTT004','MH4',8.5,1),
('71DCTT004','MH5',6.0,1),
('71DCTT004','MH6',5.5,1),
('71DCTT005','MH1',6.25,1),
('71DCTT005','MH2',6.0,1),
('71DCTT005','MH3',4.5,1),
('71DCTT005','MH4',3.5,1),
('71DCTT005','MH5',4.0,1),
('71DCTT005','MH6',6.5,1),
('71DCTT006','MH1',5.5,2),
('71DCTT006','MH2',3.0,1),
('71DCTT006','MH3',2.5,1),
('71DCTT006','MH4',7.5,1),
('71DCTT006','MH5',6.0,1),
('71DCTT006','MH6',5.5,1),
('71DCTT007','MH1',8.0,1),
('71DCTT007','MH2',9.0,1),
('71DCTT007','MH3',10,1),
('71DCTT007','MH4',8.5,1),
('71DCTT007','MH5',6.5,1),
('71DCTT007','MH6',4.5,1),
12
('71DCTT008','MH1',4.25,1),
('71DCTT008','MH2',3.0,1),
('71DCTT008','MH3',6.5,2),
('71DCTT008','MH4',2.5,1),
('71DCTT008','MH5',1.0,1),
('71DCTT008','MH6',8.5,1),
('71DCTT009','MH1',5.25,1),
('71DCTT009','MH2',6.0,1),
('71DCTT009','MH3',7.0,1),
('71DCTT009','MH4',8.0,1),
('71DCTT009','MH5',6.75,1),
('71DCTT009','MH6',3.5,1),
('71DCTT010','MH1',5.25,1),
('71DCTT010','MH2',5.0,1),
('71DCTT010','MH3',4.5,1),
('71DCTT010','MH4',5.75,1),
('71DCTT010','MH5',6.25,1),
('71DCTT010','MH6',3.5,1),
('71DCTT011','MH1',4.5,1),
('71DCTT011','MH2',6.25,1),
('71DCTT011','MH3',7.75,1),
('71DCTT011','MH4',6.5,1),
('71DCTT011','MH5',3.75,1),
('71DCTT011','MH6',2.5,1),
('71DCTT012','MH1',8.25,1),
('71DCTT012','MH2',9.0,1),
('71DCTT012','MH3',7.5,1),
('71DCTT012','MH4',7.5,1),
('71DCTT012','MH5',6.5,2),
('71DCTT012','MH6',7.5,1),
('71DCTT013','MH1',8.25,1),
('71DCTT013','MH2',9.0,1),
('71DCTT013','MH3',9.5,1),
('71DCTT013','MH4',8.5,1),
('71DCTT013','MH5',8.75,1),
('71DCTT013','MH6',7.5,1),
('71DCTT014','MH1',8.5,1),
('71DCTT014','MH2',5.75,1),
('71DCTT014','MH3',8.0,1),
('71DCTT014','MH4',6.5,1),
('71DCTT014','MH5',6.25,1),
('71DCTT014','MH6',8.5,1),
('71DCTT015','MH1',7.5,1),
('71DCTT015','MH2',6.75,1),
('71DCTT015','MH3',7.0,1),
('71DCTT015','MH4',7.5,1),
('71DCTT015','MH5',5.75,1),
('71DCTT015','MH6',8.5,1),
('71DCTT016','MH1',8.25,1),
('71DCTT016','MH2',8.0,1),
('71DCTT016','MH3',8.5,1),
('71DCTT016','MH4',8.5,1),
('71DCTT016','MH5',9.0,1),
('71DCTT016','MH6',8.5,1),
('71DCTT017','MH1',5.5,1),
('71DCTT017','MH2',6.25,1),
('71DCTT017','MH3',6.5,1),
('71DCTT017','MH4',5.75,1),
('71DCTT017','MH5',6.75,1),

13
('71DCTT017','MH6',5.25,1),
('71DCTT018','MH1',8.25,1),
('71DCTT018','MH2',9.0,1),
('71DCTT018','MH3',7.5,1),
('71DCTT018','MH4',8.5,1),
('71DCTT018','MH5',10,1),
('71DCTT018','MH6',5.5,2),
('71DCTT019','MH1',8.0,1),
('71DCTT019','MH2',8.0,1),
('71DCTT019','MH3',8.5,1),
('71DCTT019','MH4',8.5,1),
('71DCTT019','MH5',7.0,1),
('71DCTT019','MH6',5.0,1),
('71DCTT020','MH1',8.0,1),
('71DCTT020','MH2',8.5,1),
('71DCTT020','MH3',7.75,1),
('71DCTT020','MH4',8.75,1),
('71DCTT020','MH5',7.25,1),
('71DCTT020','MH6',9.5,1),
('71DCTT021','MH1',6.25,1),
('71DCTT021','MH2',6.5,1),
('71DCTT021','MH3',6.5,1),
('71DCTT021','MH4',5.25,1),
('71DCTT021','MH5',6.25,1),
('71DCTT021','MH6',8.75,1),
('71DCTT022','MH1',7.5,1),
('71DCTT022','MH2',7.0,1),
('71DCTT022','MH3',8.5,1),
('71DCTT022','MH4',6.5,1),
('71DCTT022','MH5',6.75,1),
('71DCTT022','MH6',8.5,1),
('71DCTT023','MH1',8.25,1),
('71DCTT023','MH2',9.0,1),
('71DCTT023','MH3',7.5,1),
('71DCTT023','MH4',6.5,1),
('71DCTT023','MH5',8.25,1),
('71DCTT023','MH6',7.75,1),
('71DCTT024','MH1',8.25,1),
('71DCTT024','MH2',8.0,1),
('71DCTT024','MH3',8.75,1),
('71DCTT024','MH4',8.5,1),
('71DCTT024','MH5',9.0,1),
('71DCTT024','MH6',8.5,1),
('71DCTT025','MH1',7.5,1),
('71DCTT025','MH2',7.0,1),
('71DCTT025','MH3',7.75,1),
('71DCTT025','MH4',8.5,1),
('71DCTT025','MH5',8.0,1),
('71DCTT025','MH6',7.25,1),
('71DCTT026','MH1',6.25,1),
('71DCTT026','MH2',7.0,1),
('71DCTT026','MH3',8.5,1),
('71DCTT026','MH4',6.5,1),
('71DCTT026','MH5',6.75,2),
('71DCTT026','MH6',7.5,1),
('71DCTT027','MH1',8.0,1),
('71DCTT027','MH2',8.0,1),
('71DCTT027','MH3',7.25,1),
('71DCTT027','MH4',8.5,1),

14
('71DCTT027','MH5',9.0,1),
('71DCTT027','MH6',9.5,1),
('71DCTT028','MH1',10,1),
('71DCTT028','MH2',9.0,1),
('71DCTT028','MH3',7.5,1),
('71DCTT028','MH4',8.5,1),
('71DCTT028','MH5',6.0,1),
('71DCTT028','MH6',9.75,1),
('71DCTT029','MH1',8.25,1),
('71DCTT029','MH2',9.0,1),
('71DCTT029','MH3',10,1),
('71DCTT029','MH4',8.75,1),
('71DCTT029','MH5',6.0,1),
('71DCTT029','MH6',7.5,1),
('71DCTT030','MH1',7.25,1),
('71DCTT030','MH2',6.0,1),
('71DCTT030','MH3',6.5,1),
('71DCTT030','MH4',8.75,1),
('71DCTT030','MH5',6.25,1),
('71DCTT030','MH6',7.5,1),
('71DCTT031','MH1',3.25,1),
('71DCTT031','MH2',2.0,1),
('71DCTT031','MH3',7.25,1),
('71DCTT031','MH4',3.75,1),
('71DCTT031','MH5',5.0,1),
('71DCTT031','MH6',4.25,2),
('71DCTT032','MH1',6.25,1),
('71DCTT032','MH2',5.0,1),
('71DCTT032','MH3',7.25,1),
('71DCTT032','MH4',6.5,1),
('71DCTT032','MH5',6.75,1),
('71DCTT032','MH6',7.5,1),
('71DCTT033','MH1',8.25,1),
('71DCTT033','MH2',6.75,1),
('71DCTT033','MH3',7.25,1),
('71DCTT033','MH4',5.5,1),
('71DCTT033','MH5',9.0,1),
('71DCTT033','MH6',8.5,1),
('71DCTT034','MH1',8.25,1),
('71DCTT034','MH2',9.0,1),
('71DCTT034','MH3',7.5,1),
('71DCTT034','MH4',8.5,1),
('71DCTT034','MH5',8.0,1),
('71DCTT034','MH6',5.5,1),
('71DCTT035','MH1',8.25,1),
('71DCTT035','MH2',9.0,1),
('71DCTT035','MH3',8.5,1),
('71DCTT035','MH4',8.5,1),
('71DCTT035','MH5',10,1),
('71DCTT035','MH6',5.5,1),
('71DCTT036','MH1',8.5,1),
('71DCTT036','MH2',9.0,1),
('71DCTT036','MH3',7.5,1),
('71DCTT036','MH4',9.5,1),
('71DCTT036','MH5',6.0,1),
('71DCTT036','MH6',10,1),
('71DCTT037','MH1',8.25,1),
('71DCTT037','MH2',10,1),
('71DCTT037','MH3',7.5,1),

15
('71DCTT037','MH4',8.25,1),
('71DCTT037','MH5',6.75,1),
('71DCTT037','MH6',5.5,1),
('71DCTT038','MH1',8.25,1),
('71DCTT038','MH2',8.0,1),
('71DCTT038','MH3',6.25,1),
('71DCTT038','MH4',8.75,1),
('71DCTT038','MH5',9.0,1),
('71DCTT038','MH6',2.5,1),
('71DCTT039','MH1',6.25,1),
('71DCTT039','MH2',3.0,2),
('71DCTT039','MH3',5.5,1),
('71DCTT039','MH4',4.25,1),
('71DCTT039','MH5',8.0,1),
('71DCTT039','MH6',5.5,2),
('71DCTT040','MH1',9.25,1),
('71DCTT040','MH2',6.0,1),
('71DCTT040','MH3',7.75,1),
('71DCTT040','MH4',8.25,1),
('71DCTT040','MH5',9.0,1),
('71DCTT040','MH6',7.25,1),
('71DCTT041','MH1',5.25,1),
('71DCTT041','MH2',4.0,1),
('71DCTT041','MH3',8.5,1),
('71DCTT041','MH4',5.5,1),
('71DCTT041','MH5',6.75,1),
('71DCTT041','MH6',5.0,1),
('71DCTT042','MH1',8.5,1),
('71DCTT042','MH2',7.0,1),
('71DCTT042','MH3',5.5,1),
('71DCTT042','MH4',6.0,1),
('71DCTT042','MH5',6.5,1),
('71DCTT042','MH6',9.75,1),
('71DCTT043','MH1',7.25,1),
('71DCTT043','MH2',8.0,1),
('71DCTT043','MH3',8.5,1),
('71DCTT043','MH4',9.5,1),
('71DCTT043','MH5',4.0,1),
('71DCTT043','MH6',3.5,1),
('71DCTT044','MH1',5.25,1),
('71DCTT044','MH2',8.75,1),
('71DCTT044','MH3',6.5,1),
('71DCTT044','MH4',9.5,1),
('71DCTT044','MH5',3.75,1),
('71DCTT044','MH6',5.25,1),
('71DCTT045','MH1',8.0,1),
('71DCTT045','MH2',10,1),
('71DCTT045','MH3',7.75,1),
('71DCTT045','MH4',9.5,1),
('71DCTT045','MH5',6.5,1),
('71DCTT045','MH6',7.5,1),
('71DCTT046','MH1',8.85,1),
('71DCTT046','MH2',9.75,1),
('71DCTT046','MH3',7.0,1),
('71DCTT046','MH4',9.25,1),
('71DCTT046','MH5',8.0,1),
('71DCTT046','MH6',7.75,1),
('71DCTT047','MH1',2.5,1),
('71DCTT047','MH2',3.0,1),

16
('71DCTT047','MH3',4.75,1),
('71DCTT047','MH4',5.5,1),
('71DCTT047','MH5',6.0,1),
('71DCTT047','MH6',5.5,1),
('71DCTT048','MH1',8.25,1),
('71DCTT048','MH2',10,1),
('71DCTT048','MH3',7.5,1),
('71DCTT048','MH4',8.75,1),
('71DCTT048','MH5',6.0,1),
('71DCTT048','MH6',8.5,1),
('71DCTT049','MH1',6.0,2),
('71DCTT049','MH2',7.5,1),
('71DCTT049','MH3',5.5,1),
('71DCTT049','MH4',8.75,1),
('71DCTT049','MH5',8.25,1),
('71DCTT049','MH6',8.5,1),
('71DCTT050','MH1',8.0,1),
('71DCTT050','MH2',6.0,1),
('71DCTT050','MH3',8.5,1),
('71DCTT050','MH4',9.5,1),
('71DCTT050','MH5',4.0,2),
('71DCTT050','MH6',6.5,1);

Kết quả:

17
18
19
20
21
22
23
24
25
26
V. Bài Tập VIEW
1. Các môn học mà sinh viên đã thi lại lần 2
CREATE VIEW SinhVienThiLai AS
SELECT DIEMTHI.MaSinhVien,TenSinhVien, TenMonHoc, DiemThi, LanThi, SoTinChi FROM
DIEMTHI
INNER JOIN MONHOC ON MONHOC.MaMonHoc = DIEMTHI.MaMonHoc
INNER JOIN SINHVIEN ON SINHVIEN.MaSinhVien = DIEMTHI.MaSinhVien
WHERE LanThi = '2'

27
Kết quả:

2. Tạo View điểm trung bình của từng sinh viên


CREATE VIEW DiemTrungBinhSV AS
SELECT MaSinhVien, AVG(DiemThi) AS DiemTrungBinh
FROM DIEMTHI
GROUP BY MaSinhVien;

Kết quả:

28
29
3. Tạo view điểm trung bình cao nhất của từng lớp
CREATE VIEW DiemTrungBinhLop AS
SELECT l.MaLop, MAX(dt.DiemTrungBinh) AS DiemTrungBinhCaoNhat
FROM LOP l
JOIN SINHVIEN sv ON l.MaLop = sv.MaLop
JOIN DiemTrungBinhSV dt ON sv.MaSinhVien = dt.MaSinhVien
GROUP BY l.MaLop;

Kết quả:

4. Tạo view sinh viên có điểm trung bình dưới 5

30
CREATE VIEW SVDiemDuoi5 AS
SELECT sv.MaSinhVien,sv.TenSinhVien, sv.MaLop, dt.DiemTrungBinh
FROM SINHVIEN sv
JOIN DiemTrungBinhSV dt ON sv.MaSinhVien = dt.MaSinhVien
WHERE dt.DiemTrungBinh < 5;
Kết quả:

IV. Bài Tập Thống Kê


1. Liệt kê thông tin các sinh viên có chữ “thị”
select * from SINHVIEN
where TenSinhVien like N'%thị%'

Kết quả:

2. Liệt kê các sinh viên có cùng quê


select QueQuan, COUNT(QueQuan) as N'Số sinh viên'
from SINHVIEN
group by QueQuan

Kết quả:

31
3. Trung bình điểm thi của các môn
select MONHOC.MaMonHoc, avg(DiemThi)as N'Trung Bình', TenMonHoc from DIEMTHI
join MONHOC on MONHOC.MaMonHoc = DIEMTHI.MaMonHoc
group by MONHOC.MaMonHoc,TenMonHoc

Kết quả:

4. Tính điểm trung bình của môn học có mã môn là ‘MH2’


select DIEMTHI.MaMonHoc,MONHOC.TenMonHoc, avg(DiemThi) as N'Trung bình'
from DIEMTHI
join MONHOC on MONHOC.MaMonHoc = DIEMTHI.MaMonHoc
group by DIEMTHI.MaMonHoc,MONHOC.TenMonHoc
having DIEMTHI.MaMonHoc='MH2'
32
Kết quả:

5. Các môn học mà sinh viên đã thi lại lần 2


select DIEMTHI.MaSinhVien,TenSinhVien, TenMonHoc, DiemThi, LanThi, SoTinChi from
DIEMTHI
inner join MONHOC on MONHOC.MaMonHoc = DIEMTHI.MaMonHoc
inner join SINHVIEN on SINHVIEN.MaSinhVien = DIEMTHI.MaSinhVien
where LanThi = '2'

Kết quả:

6. Tính điểm trung bình và xếp loại của từng sinh viên
select DIEMTHI.MaSinhVien,SINHVIEN.TenSinhVien, round(avg(DiemThi),2)as N'Điểm
Trung Bình',
case
when round(avg(DiemThi),2) < 4.5 then N'Yếu'
when round(avg(DiemThi),2) >= 4.5
and round(avg(DiemThi),2) < 6.5 then 'Trung Bình'
when round(avg(DiemThi),2) >= 6.5
and round(avg(DiemThi),2) < 8 then 'Khá'
when round(avg(DiemThi),2) >=8 and round(avg(DiemThi),2) <=10 then N'Giỏi'
end as 'Xếp loại'
from DIEMTHI
full outer join SINHVIEN on SINHVIEN.MaSinhVien = DIEMTHI.MaSinhVien
where DIEMTHI.DiemThi >=0 and DIEMTHI.DiemThi <=10
group by DIEMTHI.MaSinhVien, SINHVIEN.TenSinhVien
order by DIEMTHI.MaSinhVien ASC
33
Kết quả:

34
7. Tìm điểm trung bình cao nhất của từng lớp
select diemtrungbinh.MaLop, max(diemtrungbinh.avg_diemthi) as N'Điểm Cao Nhất'
from( SELECT sv.MaLop, sv.TenSinhVien, AVG(dt.DiemThi) AS avg_diemthi
FROM SINHVIEN sv
JOIN DIEMTHI dt ON sv.MaSinhVien = dt.MaSinhVien
GROUP BY sv.MaLop, sv.TenSinhVien) as diemtrungbinh
group by MaLop

Kết quả:

8. Tìm các sinh viên có điểm trung bình dưới 5


SELECT TenSinhVien, round(AVG(DiemThi),2) AS DiemTrungBinh
35
FROM SINHVIEN
JOIN DIEMTHI ON SINHVIEN.MaSinhVien = DIEMTHI.MaSinhVien
GROUP BY TenSinhVien
HAVING AVG(DiemThi) < 5;

Kết quả:

V. Bài tập Thủ tục (5 câu)


1. Tạo câu thủ tục thêm sinh viên
CREATE PROCEDURE ThemSinhVien
@MaSinhVien nvarchar(50),
@MaLop nvarchar(50),
@TenSinhVien nvarchar(255),
@GioiTinh nvarchar(50),
@NgaySinh DATE,
@QueQuan nvarchar(255)
AS
BEGIN
INSERT INTO SINHVIEN(MaSinhVien,MaLop,TenSinhVien,GioiTinh,NgaySinh,QueQuan)
VALUES
(@MaSinhVien ,@MaLop ,@TenSinhVien,@GioiTinh ,@NgaySinh ,@QueQuan )
END
-Kiểm tra kết quả:
exec ThemSinhVien @MaSinhVien='71DCTT222',
@MaLop='L_CK1',
@TenSinhVien=N'Trần Hoàng Ngọc',
@GioiTinh='Nam',
@NgaySinh='2002-05-05',
@QueQuan=N'Bà Rịa'

Kết quả:

2. Thủ tục sửa sinh viên


CREATE PROCEDURE SuaSinhVien
@MaSinhVien nvarchar(50),
@MaLop nvarchar(50),
@TenSinhVien nvarchar(255),
@GioiTinh nvarchar(50),
@NgaySinh DATE,
@QueQuan nvarchar(255)
AS
BEGIN
UPDATE SINHVIEN
SET

36
TenSinhVien = @TenSinhVien
,GioiTinh = @GioiTinh
,NgaySinh = @NgaySinh
,QueQuan = @QueQuan
WHERE MaSinhVien = @MaSinhVien
END
-Kiểm tra kết quả:
exec SuaSinhVien @MaSinhVien='71DCTT222',
@MaLop='L_CK1',@TenSinhVien = N'Trần Hoàng Ngọc',
@GioiTinh= 'Nam',
@NgaySinh='2002-05-05',
@QueQuan=N'Tuyên Quang'

Kết quả:

3. Câu thủ tục tính điểm trung bình sinh viên dựa vào mã sinh viên
CREATE PROCEDURE DiemTrungBinh
@MaSinhVien nvarchar(50)
AS
BEGIN
SELECT AVG(DT.DiemThi) AS DiemTrungBinh
FROM DIEMTHI DT
WHERE DT.MaSinhVien = @MaSinhVien
END
-Kiểm tra kết quả:
exec DiemTrungBinh '71DCTT004'

-Kết quả:

4. Thủ tục tìm sinh viên


CREATE PROCEDURE SearchStudent
@TenSinhVien NVARCHAR(50)
AS
BEGIN
SELECT *
FROM SINHVIEN
WHERE TenSinhVien LIKE '%' + @TenSinhVien + '%';
END

-Kiểm tra kết quả


exec SearchStudent N'Đăng'

Kết quả:

37
5. Lấy thông tin sinh viên theo mã sinh viên
CREATE PROCEDURE Chitietsinhvien
@MaSinhVien nvarchar(50)
AS
BEGIN
SELECT *
FROM SINHVIEN
WHERE MaSinhVien = @MaSinhVien
END
-Kiểm tra kết quả:
exec Chitietsinhvien '71DCTT004'

-Kết quả

VI. Bài tập bẫy lỗi (5 câu)


1. Đảm bảo ngày sinh không được vượt quá ngày hiện tại
CREATE TRIGGER trg_KiemTraNgaySinh
ON SINHVIEN
FOR INSERT, UPDATE
AS
BEGIN
IF EXISTS (
SELECT *
FROM inserted
WHERE NgaySinh > GETDATE()
)
BEGIN
print N'Ngày sinh không được sau ngày hiện tại'
ROLLBACK TRANSACTION
END
END

Kết quả:

38
2. Môn học không có số tín chỉ âm
CREATE TRIGGER trg_KiemTraSoTinChi
ON MONHOC
FOR INSERT, UPDATE
AS
BEGIN
IF EXISTS (
SELECT *
FROM inserted
WHERE SoTinChi < 0
)
BEGIN
print N'Số tín chỉ của môn học không được âm'
ROLLBACK TRANSACTION
END
END

Kết quả:

39
3. Không có cột trống trong các trường dữ liệu bắt buộc trong bảng
SINHVIEN
CREATE TRIGGER KiemTraNull
ON SINHVIEN
FOR INSERT, UPDATE
AS
BEGIN
IF EXISTS (
SELECT *
FROM inserted
WHERE QueQuan IS NULL OR NgaySinh IS NULL
)
BEGIN
print N'Không được để trống trường dữ liệu'
ROLLBACK TRANSACTION
END
END

Kết quả:

4. Không được xoá dữ liệu trong bảng DIEMTHI


create trigger trg_xoa_DIEMTHI
on DIEMTHI
for delete
as
print N'KHông được xóa dữ liệu trong bảng điểm thi'
rollback transaction

Kết quả:

40
5. Giá trị cột TenKhoa trong bảng không chứa kí tự đặc biệt
CREATE TRIGGER trg_KiemTraTenKhoaNoSpecialCharacters
ON KHOA
FOR INSERT, UPDATE
AS
BEGIN
IF EXISTS (
SELECT *
FROM inserted
WHERE TenKhoa LIKE '%[^a-zA-Z0-9 ]%'
)
BEGIN
print N'Tên khoa không được chứa ký tự đặc biệt'
ROLLBACK TRANSACTION
END
END

Kết quả:

41
42

You might also like