LỜI NÓI ĐẦU Trong cuộc sống hiện nay,khoa học kĩ thuật ngày càng tiến bộ công nghệ phần mềm được ứng dụng rộng rãi trong tất cả mọi lĩnh vực,trong giáo dục việc ứng dụng các phần mềm này càng có ý nghĩa và rất cần thiết.Tin học hóa công tác quản lí giáo dục và xây dựng hệ thống thông tin quản lí giáo dục là một nhiệm vụ trọng tâm của bộ GD và ĐT trong chương trình tin học hóa quản lí hành chính nhà nước.Để chiển khai công tác tin học hóa quản lí nhà nước về giáo dục phổ thông bao gồm: cấp sở,cấp phòng và cấp trường, cục công nghệ thông tin – Bộ GT và ĐT đã nghiên cứu và triển khai xây dựng các hệ thống thông tin quản lí giáo dục và phần mềm quản lí giáo dục cho các cấp khác nhau một cách hoàn chỉnh.Hệ thống này không chỉ đơn thuần làm nhiệm vụ tổng hợp báo cáo thống kê,mà còn có thể quản lí cả các thông tin về chi tiết học sinh,điểm và giáo viên ở mỗi cấp quản lí phòng và sở.Hệ thống quan trọng đầu tiên la hệ thồng phần mềm quản lí điểm cho một trường THPT .Ngoài việc hỗ trợ các trường học quản lí ,quản lí các hoạt động giáo dục trong trường hiệu quả,hệ thống này còn có thể cung cấp thông tin giáo dục cho các cấp quản lí giáo dục cao hơn dưới dạng điện tử đã được chuẩn hóa.Ứng dụng phần mềm quản lí học sinh nhằm thực hiện tốt công tác quản lí học sinh của nhà trường. Trong khi thực hiện đề tài còn gặp nhiều thiếu xót rất mong thầy và các bạn góp ý để đề tài trở lên hoàn thiện hơn. Chúng em xin chân thành cảm ơn MỤC LỤC Contents LỜI NÓI ĐẦU 2 I. DANH MỤC CÁC BẢNG 7 II. MÔ HÌNH CHUNG 7 2.1 Mô hình cơ sở dữ liệu 7 2.2 Mô hình liên kết thực thể 8 III. THIẾT LẬP CƠ SỞ DỮ LIỆU 9 3.1 Dùng tay 9 IV. DÙNG SQL QUERY EDITOR 11 4.1 Tạo bảng DIEM 12 4.2 Tạo bảng HOCSINH 12 4.3 Tạo bảng LOP 13 4.4 Tạo bảng KHOI 13 4.5 Tạo bảng MON 13 4.6 Liên kết bảng 14 a. Bằng code 14 b. Bằng tay 15 V. NHẬP BẢN GHI 15 5.1 Bảng DIEM 15 5.2 Bảng HOCSINH 16 5.3 Bảng LOP 18 5.4 Bảng KHOI 19 5.5 Bảng MON 20 VI. CÁC CÂU LỆNH TRUY VẤN DỮ LIỆU 21 6.1 Lệnh sửa dữ liệu 21 6.2 Lệnh xóa cột 22 6.3 Lệnh thêm cột 23 6.4 Lệnh xóa cả hàng 24 VII. BÀI TẬP THỐNG KÊ 25 7.1 Tên học sinh có điểm trung bình cao nhất 25 7.2 Đưa ra họ tên học sinh mà có MALOP=’ML01’ 26 7.3 Hiển thị ra thông tin học sinh có tên bắt đầu bằng chữ P 27 7.4 Hiển thị ra thông tin của học sinh: MADIEM, MAMON, TENMON, HOCKI, DIEMTB, XEPLOAI mà có MAMON=’MM02’ 28 7.5 Hiển thị ra tất cả thông tin của học sinh và điểm của học sinh đó. 29 7.6 Hiển thị ra tất cả thông tin của học sinh có DIACHI ở HÀ NỘI và có MLOP là ML13 30 7.7 Hiển thị ra tất cả thông tin của HOCSINH mà có DIEMTB > 8 31 7.8 Hiển thị ra TOP 5 học sinh có DIEMTB > 8 32 VIII. BÀI TẬP VỚI VIEW 33 8.1 Tạo view 33 a. Tạo 1 view VW_HOSO gồm ( MAHS, MALOP, MAKHOI, NGAYSINH, HOTEN, DIACHI, GIOITINH ) để thống kê hồ sơ của học sinh. 33 b. Tạo 1 view VW_KETQUADIEM gồm ( MAHS, MALOP, MADIEM, HOTEN, DIEMTB, XEPLOAI ) để thống kê điểm của học sinh. 34 c. Tạo 1 view VW_RESULT gồm ( HOTEN, DIEMTB ) để đưa ra top 5 học sinh có điểm tb > 8 35 d. Tạo 1 view VW_COUT gồm ( MAHS, MALOP, HOTEN, NGAYSINH, DIACHI ) để đưa ra học sinh có địa chỉ ở Hà Nội 36 e. Tạo 1 view VW_MAXDIEM gồm ( HOTEN, DIEMTB, MAHS, MADIEM, DIACHI, MALOP) để đưa ra học sinh điểm TB cao nhất 37 8.2 Lệnh xóa view 38 8.3 Lệnh sửa view 38 IX. PROCEDURE 39 9.1 Tạo 1 stote procedure trong bảng HOCSINH để cập nhật bản ghi và thông báo lỗi nếu MAHS chưa có 39 9.2 Lấy thông tin của bảng HOCSINH 40 9.3 Thêm 1 học sinh 41 9.4 Hiển thị ra học sinh có MALOP=’ML04’ 42 9.5 Hiển thị ra học sinh có điểm trung bình thấp nhất 43 X. BÀI TẬP VỀ TRIGGER 44 10.1 Insert ( Thêm ) 44 a. Tạo bẫy lỗi Insert trong bảng HOCSINH để không cho phép người dùng nhập vào MAHS đã tồn tại trong cơ sở dữ liệu 44 b. Tạo bẫy lỗi Insert trong bảng DIEM để không cho phép người dùng nhập vào DIEMTB với số âm 45 c. Tạo bẫy lỗi Insert trong bảng LOP để không cho phép người dùng nhập vào MALOP đã tồn tại trong cơ sở dữ liệu 46 10.2 Sửa ( Update…set ) 47 10.3 Xóa ( Delete) 48 XI. CON TRỎ ( CURSOR ) 49 11.1 Tạo con trỏ hiển thị thông tin học sinh đầu tiên 49 11.2 Tạo con trỏ hiển thị thông tin học sinh có vị trí cuối cùng 50
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GTVT
KHOA CÔNG NGHỆ THÔNG TIN
-o0o -BÁO CÁO THỰC TẬP TỐT NGHIỆP
Tên đề tài:
QUẢN LÝ ĐIỂM CHO TRƯỜNG THPT
GIÁO VIÊN HƯỚNG DẪN: NGUYỄN THÁI SƠN
SINH VIÊN THỰC TẬP: TRẦN THỊ HƯƠNG
VŨ THỊ VÂN ANH NGUYỄN THỊ QUỲNH NGA LỚP: 65DCHT21
Năm học: 2016-2017
Trang 2LỜI NÓI ĐẦU
Trong cuộc sống hiện nay,khoa học kĩ thuật ngày càng tiến bộ công nghệ phần mềm được ứng dụng rộng rãi trong tất cả mọi lĩnh vực,trong giáo dục việc ứng dụng các phần mềm này càng có ý nghĩa và rất cần thiết.Tin học hóa công tác
quản lí giáo dục và xây dựng hệ thống thông tin quản lí giáo dục là một nhiệm vụ trọng tâm của bộ GD và ĐT trong chương trình tin học hóa quản lí hành chính nhà nước.Để chiển khai công tác tin học hóa quản lí nhà nước về giáo dục phổ thông bao gồm: cấp sở,cấp phòng và cấp
trường, cục công nghệ thông tin – Bộ GT và ĐT đã nghiên cứu và triển khai xây dựng các hệ thống thông tin quản lí giáo dục và phần mềm quản
lí giáo dục cho các cấp khác nhau một cách hoàn chỉnh.Hệ thống này không chỉ đơn thuần làm nhiệm vụ tổng hợp báo cáo thống kê,mà còn có thể quản lí cả các thông tin về chi tiết học sinh,điểm và giáo viên ở mỗi cấp quản lí phòng và sở.Hệ thống quan trọng đầu tiên la hệ thồng phần mềm quản lí điểm cho một trường THPT Ngoài việc hỗ trợ các trường học quản lí ,quản lí các hoạt động giáo dục trong trường hiệu quả,hệ thống này còn có thể cung cấp thông tin giáo dục cho các cấp quản lí giáo dục cao hơn dưới dạng điện tử đã được chuẩn hóa.Ứng dụng phần mềm quản lí học sinh nhằm thực hiện tốt công tác quản lí học sinh của nhà trường.
Trong khi thực hiện đề tài còn gặp nhiều thiếu xót rất mong thầy và các bạn góp ý để đề tài trở lên hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!!!
Trang 3MỤC LỤCContents
Trang 4ĐỀ TÀI: THIẾT KẾ DATABASE CHO ỨNG DỤNG QUẢN LÝ
ĐIỂM CHO TRƯỜNG THPT
Môn : Hệ Quản Trị Cơ Sở Dữ Liệu
Nhóm 4.
Dùng phiên bản SQL Server Management Studio
Trang 5II. MÔ HÌNH CHUNG
II.1 Mô hình cơ sở dữ liệu
- Bảng HOCSINH (lưu trữ thông tin học sinh)
- Bảng MONHOC (lưu trữ thông tin môn học)
- Bảng KHOI (lưu trữ thông tin khối)
Trang 6TENKHOI varchar 10 Tên khối
- Bảng LOP (lưu trữ thông tin lớp học)
- Bảng DIEM (lưu trữ thông tin điểm của sinh viên)
XEPLOAI nvarchar 50 Xếp loại của học sinh
II.2 Mô hình liên kết thực thể
Trang 7III. THIẾT LẬP CƠ SỞ DỮ LIỆU
III.1 Dùng tay
Bước 1:
Trang 8Bước 2:
Trang 9Chọn khóa chính
Lưu: Ctrl+S và nhấn OK để lưu lại
IV. DÙNG SQL QUERY EDITOR
Trang 10
IV.1 Tạo bảng DIEM
Create table DIEM(
MADIEM varchar(10),MAHS varchar(10),MAMON varchar(10),NAMHOC varchar(10),HOCKI int,
DIEMTB float,XEPLOAI nvarchar(50),Constraint pk_DIEM_MADIEM primary Key ( MADIEM)
Trang 11IV.2 Tạo bảng HOCSINH
Create table HOCSINH
(MAHS varchar(10),MALOP varchar(10),HOTEN nvarchar(50),NGAYSINH datetime,GIOITINH bit,
DIACHI nvarchar(50),GHICHU nvarchar(50),Constraint pk_HOCSINH_MAHS primary Key ( MAHS))
IV.3 Tạo bảng LOP
Create table LOP
(MALOP varchar(10),TENLOP nvarchar(50),MAKHOI varchar(10),Constraint pk_LOP_MALOP primary Key ( MALOP))
IV.4 Tạo bảng KHOI
Create table KHOI
(MAKHOI varchar(10),
Trang 12TENKHOI nvarchar(50),Constraint pk_LOP_KHOI primary Key ( MAKHOI ))
IV.5 Tạo bảng MON
Create table MON
( MAMON varchar(10), TENMON nvarchar(50), Constraint pk_LOP_MON primary Key ( MAMON) )
4.6 Liên kết bảng
a. Bằng code
* ALTER TABLE HOCSINH ADD CONSTRANT
FRK_HOCSINH_DIEM_MAHS FOREIGN KEY (MAHS)
REFERENCES DIEM (MAHS)
* ALTER TABLE MONHOC ADD CONSTRANT
FRK_MONHOC_DIEM_MAMON FOREIGN KEY (MAMON)
REFERENCES DIEM (MAMON)
* ALTER TABLE KHOI ADD CONSTRANT
FRK_KHOI_LOP_MAKHOI FOREIGN KEY (MAKHOI)
REFERENCES LOP (MAKHOI)
* ALTER TABLE HOCSINH ADD CONSTRANT
Trang 13FRK_HOCSINH_LOP_MAHS FOREIGN KEY (MALOP)
REFERENCES LOP (MALOP)
b. Bằng tay
V. NHẬP BẢN GHI
V.1 Bảng DIEM
Trang 14Insert into DIEM values(‘MD01’,’HS01’,’MM01’,’2015-2016’,1,8.9,N’Giỏi’)Insert into DIEM values(‘MD01’,’HS01’,’MM01’,’2015-2016’,1,8.9,N’Giỏi’)Insert into DIEM values(‘MD02’,’HS02’,’MM02’,’2015-2016’,1,9.0, N’Giỏi’)Insert into DIEM values(‘MD03’,’HS03’,’MM03’,’2015-2016’,2,7.1,N’Khá’)Insert into DIEM values(‘MD04’,’HS04’,’MM04’,’2015-2016’,2,3.2,N’Yếu’)Insert into DIEM values(‘MD05’,’HS05’,’MM05’,’2015-2016’1,6.0,’TB’)Insert into DIEM values(‘MD06’,’HS06’,’MM06’,’2014-2015’,2,4.1, N’Yếu’)Insert into DIEM values(‘MD07’,’HS07’,’MM07’,’2014-2015’,2,8.3, N’Giỏi’)Insert into DIEM values(‘MD08’,’HS08’,’MM08’,’2015-2016’,1,6.7, N’Khá’)Insert into DIEM values(‘MD09’,’HS09’,’MM09’,’2015-2016’,2 ,9.0, N’Giỏi’)Insert into DIEM values(‘MD10’,’HS10’,’MM10’,’2014-2015’,2 ,8.5, N’Giỏi’)Insert into DIEM values(‘MD11’,’HS11’,’MM11’,’2015-2016’,1 ,6.6, ’TB’)Insert into DIEM values(‘MD12’,’HS12’,’MM12’,’2015-2016’,1 ,7.7, N’Khá’)Insert into DIEM values(‘MD13’,’HS13’,’MM13’,’2015-2016’,2 ,6.9, ‘TB’)Insert into DIEM values(‘MD14’,’HS14’,’MM14’,’2015-2016’,2 ,5.2, ‘TB’)Insert into DIEM values(‘MD15’,’HS15’,’MM15’,’2014-2015’,2 ,8.6, N’Giỏi’)
MADIEM
MAHS
MAMON
NAMHOC
HOCKY
DIEMTB
XEPLOAI
Trang 15Insert into HOCSINH values(‘HS01’,’ML01’,N’Nguyễn Văn Nam,’12/07/1995’,1,N’Hà Nội’)
Insert into HOCSINH values(‘HS02’,’ML02’,N’Phạm Thị Hoa,’02/09/1995’,0,N’Hà Nam’)
Insert into HOCSINH values(‘HS03’,’ML03’,N’Trần Thị Thảo,’05/03/1996’,0,N’Hà Nội’)
Insert into HOCSINH values(‘HS04’,’ML04’,N’Phạm Mạnh Huy,’09/03/1996’,1,N’Băc Ninh’)
Insert into HOCSINH values(‘HS05’,’ML05’,N’Vũ Thị Lan,’03/01/1995’,0,N’HàTây’)
Insert into HOCSINH values(‘HS06’,’ML06’,N’Hoàng Thi Ánh,’05/11/1995’,0,’Hải Dương’)
Insert into HOCSINH values(‘HS07’,’ML07’,N’Vũ Thị Vân Anh,’13/08/1996’,0,N’Hà Nội’)
Insert into HOCSINH values(‘HS08’,’ML08’,N’Phạm Huy Khánh,’09/01/1997’,1,N’Hải Phòng ’)
Insert into HOCSINH values(‘HS09’,’ML09’,N’Đào Hương Giang’,
’03/07/1996’,0,N’Thái Bình’)Insert into HOCSINH values(‘HS010’,’ML10’,N’Trần Thị Hương,’12/04/1996’,0,N’Hải Dương’)
Insert into HOCSINH values(‘HS11’,’ML11’,N’Phạm Thị Quỳnh,’28/09/1995’,0,N’Hòa Bình ’)
Insert into HOCSINH values(‘HS12’,’ML12’,N’Phạm Văn Đạt,’08/08/1994’,1,N’Cà Mau’)
Insert into HOCSINH values(‘HS13’,’ML13’,N’Ngô Thu Huyền,’07/03/1995’,0,N’Hà Nội ’)
Insert into HOCSINH values(‘HS14’,’ML14’,N’Lê Anh Tú,’12/11/1996’,1,N’PhúThọ ’)
Insert into HOCSINH values(‘HS15’,’ML15’,N’Vũ Đình Sơn,’13/12/1997’,1,N’Hà Nam ’)
HS04 ML04 Phạm Mạnh Huy 09/03/1996 1 Bắc Ninh
Trang 16HS05 ML05 Vũ Thị Lan 03/01/1995 0 Hà TâyHS06 ML06 Hoàng Thị Ánh 05/11/1995 0 Hải Dương
HS08 ML08 Phạm Huy Khánh 09/01/1997 1 Hải PhòngHS09 ML09 Đào Hương Giang 03/07/1996 0 Thái BìnhHS10 ML10 Trần Thị Hương 12/04/1996 0 Hải DươngHS11 ML11 Phạm Thị Quỳnh 28/09/1995 0 Hòa Bình
Trang 19MM12 TM12
VI. CÁC CÂU LỆNH TRUY VẤN DỮ LIỆU
VI.1 Lệnh sửa dữ liệu
UPDATE tên bảngSET tên côt= giá trị cần đổiWHERE tên cột=giá trị
Ví dụ : Trong bảng HOCSINH, sửa tên thành Trần Thị Hương ở HS01
UPDATE HOCSINH
SET HOTEN=N’Trần Thị Hương’
WHERE MAHS=’HS01’
Trang 20VI.2 Lệnh xóa cột
ALTER TABLE table tên bảngDROP COLUMN tên cột cần xóa
Ví dụ: xóa cột HANHKIEM vừa tạo và show bản ghi ra màn hình chính
ALTER TABLE DIEMADD COLUMN NVARCHAR(50)DROP COLUMN HANHKIEMSELECT * FROM DIEM
Trang 21VI.3 Lệnh thêm cột
ALTER TABLE tên bảngADD tên cột ( thuộc tính cột )
Ví dụ: Thêm 1 cột HANHKIEM vào bảng DIEM
ALTER HANHKIEM NVARCHAR(50)SELECT * FROM DIEM
Trang 23VII. BÀI TẬP THỐNG KÊ
VII.1 Tên học sinh có điểm trung bình cao nhất
SELECT H.HOTEN, D.DIEMTBFROM DIEM D INNER JOIN HOCSINH H
ON H.MAHS=D.MAHS AND D.DIEMTB=(SELECT MAX(DIEMTB) FROM DIEM)
Trang 24GROUP BY H.HOTEN, D.DIEMTB
VII.2 Đưa ra họ tên học sinh mà có MALOP=’ML01’
SELECTHOTEN, L.MALOP
FROM HOCSINH H INNER JOIN DIEM D ON H.MALOP=L.MALOPWHERE L.MALOP=’ML01’
Trang 25VII.3 Hiển thị ra thông tin học sinh có tên bắt đầu bằng chữ P
SELECT *FROM HOCSINH HWHERE H.HOTEN LIKE ‘P%’
Trang 267.4 Hiển thị ra thông tin của học sinh: MADIEM, MAMON, TENMON,
HOCKI, DIEMTB, XEPLOAI mà có MAMON=’MM02’
SELECT MADIEM, D.MAMON, TENMON, NAMHOC, HOCKI, DIEMTB, XEPLOAI
FROM DIEM D JOIN HOCSINH H OND.MAHS=H.MAHS JOIN MON
ON D.MAMON=M.MAMONWHERE M.MAMON=’MM02’
Trang 277.5 Hiển thị ra tất cả thông tin của học sinh và điểm của học sinh đó.
SELECT HS.*,DIEMTBFROM HOCSINH HS JOIN DIEM D ON HS.MAHS=D.MAHS
Trang 287.6 Hiển thị ra tất cả thông tin của học sinh có DIACHI ở HÀ NỘI
và có MLOP là ML13
SELECT *FROM HOCSINH HS JOIN LOP L ON HS.MALOP=L.MALOPWHERE DIACHI=N’Hà Nội’ AND MALOP=’ML13’
Trang 297.7 Hiển thị ra tất cả thông tin của HOCSINH mà có DIEMTB > 8
SELECT H.HOTEN, D.DIEMTBFROM DIEM D INNER JOIN HOCSINH H ON H.MAHS=D.MAHS AND D.DIEMTB= (SELECT MAX(DIEMTB) FROM DIEM)
WHERE D.DIEMTB > 8
Trang 30GROUP BY H.HOTEN, D.DIEMTB.
7.8 Hiển thị ra TOP 5 học sinh có DIEMTB > 8
SELECT TOP 5 WITH TIES H.HOTEN, D.DIEMTBFROM DIEM D INNER JOIN HOCSINH H ON H.MAHS=D.MAHSWHERE D.DIEMTB > 8
Trang 31GROUP BY H.HOTEN, D.DIEMTBORDER BY H.HOTEN, D.DIEMTB.
VIII. BÀI TẬP VỚI VIEW
VIII.1 Tạo view
a. Tạo 1 view VW_HOSO gồm ( MAHS, MALOP, MAKHOI, NGAYSINH, HOTEN, DIACHI, GIOITINH ) để thống kê hồ sơ của học sinh.
CREATEVIEW VW_HOSO
Trang 32AS
SELECT HOCSINH.MAHS, LOP.MALOP, KHOI.MAKHOI, HOTEN,
NGAYSINH, DIACHI, GIOITINH
FROM DIEM INNER JOIN HOCSINH ON DIEM.MAHS=HOCSINH.MAHS
INNERJOIN LOP ON HOCSINH.MALOP=LOP.MALOP
INNERJOIN KHOI ON LOP.MAKHOI=KHOI.MAKHOI
SELECT*FROM VW_HOSO
b. Tạo 1 view VW_KETQUADIEM gồm ( MAHS, MALOP, MADIEM, HOTEN, DIEMTB, XEPLOAI ) để thống kê điểm của học sinh.
CREATEVIEW VW_KETQUADIEM
ASSELECT HOCSINH.MAHS, LOP.MALOP, HOTEN, DIEM.MADIEM,
DIEMTB, XEPLOAI
FROM DIEM INNERJOIN HOCSINH ON DIEM.MAHS=HOCSINH.MAHS
INNER JOIN LOP ON HOCSINH.MALOP=LOP.MALOP
SELECT *FROM VW_KETQUADIEM
Trang 33c. Tạo 1 view VW_RESULT gồm ( HOTEN, DIEMTB ) để đưa ra top 5 học sinh
có điểm tb > 8
CREATEVIEW VW_RESULT
AS
SELECT TOP 5 WITH TIES H.HOTEN, D.DIEMTB
FROM DIEM D INNER JOIN HOCSINH H ON H.MAHS=D.MAHS
WHERE D.DIEMTB > 8
GROUPBY H.HOTEN, D.DIEMTB
ORDER BY H.HOTEN, D.DIEMTB
SELECT*FROM VW_RESULT
Trang 34d. Tạo 1 view VW_COUT gồm ( MAHS, MALOP, HOTEN, NGAYSINH, DIACHI ) để đưa ra học sinh có địa chỉ ở Hà Nội
CREATEVIEW VW_COUT
ASSELECT HS.MAHS,L.MALOP,HOTEN,NGAYSINH,DIACHI
FROM HOCSINH HS JOIN LOP L ON HS.MALOP=L.MALOP
WHERE DIACHI=N'Hà Nội’
SELECT*FROM VW_COUT
Trang 35e. Tạo 1 view VW_MAXDIEM gồm ( HOTEN, DIEMTB, MAHS, MADIEM, DIACHI, MALOP) để đưa ra học sinh điểm TB cao nhất
CREATEVIEW VW_MAXDIEM
AS
SELECT H.HOTEN,D.DIEMTB,H.MAHS,D.MADIEM,H.DIACHI,H.MALOP
FROM DIEM D INNER JOIN HOCSINH H ON D.MAHS=H.MAHS
AND
DIEMTB=(SELECT MAX(DIEMTB)FROM DIEM)
GROUPBY D.DIEMTB,H.HOTEN,H.MAHS,H.DIACHI,D.MADIEM,H.MALOP
SELECT*FROM VW_MAXDIEM
Trang 36VIII.2 Lệnh xóa view
Ví dụ: Xóa VW_MAXDIEM
DROP VIEW VW_MAXDIEM
VIII.3 Lệnh sửa view
ALTER VIEW <Tên View> {(danh sách tên cột )} AS <Câu lệnh > SELECT FROM < Tên bảng >
Ví dụ:
ALTERVIEW VW_MAXDIEM
ASSELECT HOTEN
Trang 37FROM HOCSINH
SELECT HOTEN FROM VW_MAXDIEM
IX. PROCEDURE
IX.1Tạo 1 stote procedure trong bảng HOCSINH để cập nhật bản ghi
và thông báo lỗi nếu MAHS chưa có
CREATEPROCEDURE PRO_HS
IFNOTEXISTS (SELECT*FROM HOCSINH WHERE MAHS=@mahs)
PRINT (N'Mã học sinh chưa có')
ELSEUPDATE HOCSINH SET HOTEN=@hoten WHERE MAHS=@mahs
Trang 38ENDEXECUTE PRO_HS 'HS16',N'Phạm Huy Khánh','09/01/1997',N'Hải Phòng' SELECT*FROM HOCSINH;
IX.2Lấy thông tin của bảng HOCSINH
CREATEPROCEDURE PRO_HS
ASBEGINSELECT*FROM HOCSINH
ENDSELECT *FROM HOCSINH
Trang 39IX.3Thêm 1 học sinh
CREATEPROCEDURE PRO_THEM
Trang 40IFNOTEXISTS (SELECT*FROM HOCSINH WHERE MAHS=@mahs)
PRINT (N'Mã học sinh đã tồn tại')
ELSEINSERT INTO HOCSINH VALUES (@mahs, @malop, @hoten, @ngaysinh,
@gioitinh, @diachi,@ghichu)
END
EXECUTE PRO_THEM 'HS16','ML16',N'Trần Thanh Tuấn', '09/06/1996', 0,
N'Thanh Hóa', N'Cận nghèo SELECT *FROM HOCSINH;
IX.4Hiển thị ra học sinh có MALOP=’ML04’
CREATEPROCEDURE PRO_HS
ASBEGINSELECT MAHS,HOTEN,MALOP FROM HOCSINH WHERE MALOP='ML04'END
EXEC PRO_HS
Trang 41IX.5Hiển thị ra học sinh có điểm trung bình thấp nhất
CREATEPROCEDURE PRO_HS
ASBEGINSELECT H.HOTEN,D.DIEMTB,H.MAHS,D.MADIEM,H.DIACHI,H.MALOP
FROM DIEM D INNER JOIN HOCSINH H ON D.MAHS=H.MAHS
AND
DIEMTB=(SELECTMIN(DIEMTB) FROM DIEM)
Trang 42GROUP BY D.DIEMTB, H.HOTEN, H.MAHS, H.DIACHI, D.MADIEM,
H.MALOP
ENDEXEC PRO_HS
X. BÀI TẬP VỀ TRIGGER
X.1 Insert ( Thêm )
a. Tạo bẫy lỗi Insert trong bảng HOCSINH để không cho phép người dùng
nhập vào MAHS đã tồn tại trong cơ sở dữ liệu
CREATETRIGGER INSERTHS
Trang 43ON HOCSINH
FORINSERT
AS
DECLARE @mahs VARCHAR(10);
SELECT @mahs=MAHS FROM INSERTED;
IF(SELECTCOUNT(MAHS)FROM HOCSINH WHERE MAHS=@mahs)> 1;
DECLARE @DTB FLOAT;
SELECT @DTB=DIEMTB FROM INSERTED;
Trang 44IF(@DTB<0)
BEGINPRINTN'Không được nhập số âm';
ROLLBACKTRANSACTIONEND
c. Tạo bẫy lỗi Insert trong bảng LOP để không cho phép người dùng nhập vào MALOP đã tồn tại trong cơ sở dữ liệu
CREATETRIGGER ML
ON LOP
FORINSERTAS
DECLARE @ML VARCHAR(10);
SELECT @ML=MALOP FROM INSERTED;
IF(SELECTCOUNT(MALOP)FROM LOP WHERE MALOP=@ML)>1
Trang 45BEGINPRINTN'Mã lớp đã tồn tại';
ROLLBACKTRANSACTIONEND
IF ((SELECTCOUNT(TENKHOI)FROM KHOI WHERE
KHOI.TENKHOI=(SELECT INSERTED.TENKHOI FROM INSERTED))>1)
begin
PRINTN'Tên khối này đã tồn tại'
ROLLBACKTRANSACTION
Trang 46SET @ML =(SELECT MALOP FROM deleted);
DELETE FROM HOCSINH WHERE MALOP=@ML;
Trang 47XI. CON TRỎ ( CURSOR )
XI.1 Tạo con trỏ hiển thị thông tin học sinh đầu tiên
DECLARE CUR_DUYET SCROLL CURSORFOR
SELECT *FROM HOCSINH
OPEN CUR_DUYET
FETCHFIRSTFROM CUR_DUYET;/* hiển thị con trỏ ở hàng đầu tiên*/
CLOSE CUR_DUYET;/*đóng con trỏ*/
DEALLOCATE CUR_DUYET;/*xóa con trỏ*/
Trang 48XI.2 Tạo con trỏ hiển thị thông tin học sinh có vị trí cuối cùng
DECLARE CUR_DUYET SCROLL CURSORFOR
SELECT *FROM HOCSINH
OPEN CUR_DUYET
FETCHLAST FROM CUR_DUYET;/*hiển thị con trỏ ở hàng cuối cùng*/
CLOSE CUR_DUYET;/*đóng con trỏ*/
DEALLOCATE CUR_DUYET;/*xóa con trỏ*/