Bài tập liên kết SQL với java

10 774 0
Bài tập liên kết SQL với java

Đang tải... (xem toàn văn)

Thông tin tài liệu

I Đề Tài Đề số 9: Một trường PTCS cần xây dựng hệ thống quản lý học sinh Trường có khối lớp từ lớp đến lớp Mỗi khối có lớp đặt tên gồm khối thứ tự để phân biệt lớp khối Chẳng hạn khối có lớp có tên lớp 7/1, 7/2, ,7/5 Thông tin cần lưu cho học sinh mã học sinh, tên học sinh, ngày sinh, phái Mỗi học sinh học lớp cần lưu thêm thông tin năm học Giả sử năm học không cho phép học sinh chuyển đổi lớp Mỗi khối lớp có môn học quy định Một năm học có học kỳ học kỳ Mỗi môn học kỳ, học sinh có điểm kiểm tra sau: không tối đa lần kiểm tra miệng, lần kiểm tra 15 phút, lần kiểm tra tiết lần thi học kỳ Để có thêm thông tin ghi vào học bạ, hệ thống cần lưu thông tin giáo viên chủ nhiệm giáo viên dạy môn mà sinh viên học năm học lớp (Trong năm học thay đổi giáo viên dạy giáo viên chủ nhiệm) Mỗi giáo viên dạy nhiều môn Trong năm học giáo viên không chủ nhiệm chủ nhiệm lớp II Code Tạo Database create database QLHS on primary (name=QLHS_data1,filename='D:\nhom9\QLHS_data1.mdf',size=10MB,maxsize=40 MB filegrowth=1MB) log on (name=QLHS_log,filename='D:\nhom9\QLHS_log.ldf',size=6MB,maxsize=8MB,file growth=1MB) Tạo Table Tao bang GIAOVIEN create table GIAOVIEN (MAGV nvarchar(10)not null,HOVATEN nvarchar(50),GIOITINH numeric,NGAYSINH datetime ,NOISINH nvarchar(50),QUEQUAN nvarchar(50),DIACHI nvarchar(50),SDT numeric ,CHUCVU nvarchar(30)) alter table GIAOVIEN add constraint pk_GV primary key(MAGV) GO Tao bang HOCSINH create table HOCSINH (MSHS nvarchar(10)not null,HOVATEN nvarchar(50),GIOITINH numeric,NGAYSINH datetime,NOISINH nvarchar(50),DIACHI nvarchar(50),QUEQUAN nvarchar(50),DANTOC nvarchar(50),TONGIAO nvarchar(10)) alter table HOCSINH add constraint pkV_HS primary key(MSHS) GO Tao bang HOCKY create table HOCKY (MAHK nvarchar(10)not null,NAMHOC numeric,GHICHU nvarchar(50)) alter table HOCKY add constraint pk_HK primary key(MAHK) GO Tao bang MONHOC create table MONHOC (MAMH nvarchar(10)not null,TENMONHOC nvarchar(50),THACHANH numeric, LYTHUYET numeric,MAHK nvarchar(10)not null) alter table MONHOC add constraint pk_MH primary key (MAMH) alter table MONHOC add constraint pk_MA foreign key(MAHK) references HOCKY (MAHK) GO Tao bang LOP create table LOP (MALOP nvarchar(10)not null,TENLOP nvarchar(10),SISO numeric) alter table LOP add constraint pk_L primary key(MALOP) GO Tao bang LICHGIANGDAY create table LICHGIANGDAY (MAGV nvarchar(10) not null,MAMH nvarchar(10)not null,MALOP nvarchar(10)not null,NGAY datetime,TENLOP nvarchar(10), TUTIET nvarchar(10),DENTIET nvarchar(10)) alter table LICHGIANGDAY add constraint pk_LGD primary key(MAGV,MAMH) alter table LICHGIANGDAY add constraint pk_Ma_LDG foreign key(MAGV) references GIAOVIEN (MAGV) alter table LICHGIANGDAY add constraint pk_Ma_MH foreign key(MAMH) references MONHOC (MAMH) alter table LICHGIANGDAY add constraint pk_Ma_B foreign key(MALOP) references LOP (MALOP) GO Tao bang BANGDIEM create table BANGDIEM (MSHS nvarchar(10)not null,MAMH nvarchar(10)not null,KTRAMIENG numeric, KTRA15 numeric,KTRA1TIET numeric,KTRAHOCKY numeric) alter table BANGDIEM add constraint pk_BD primary key(MSHS,MAMH) alter table BANGDIEM add constraint pk_Ms foreign key(MSHS) references HOCSINH (MSHS) alter table BANGDIEM add constraint pk_JBD foreign key(MAMH) references MONHOC (MAMH) Nhập Liệu nhap bang GIAOVIEN insert into GIAOVIEN values ('gv001', 'vo kim thong',0,convert(datetime, '12/02/1979',103), 'dak lak','dak lak','tp hcm',0988333222,'giao vien') insert into GIAOVIEN values ('gv002', 'ngo quang liem',0, convert(datetime, '12/12/1979',103), 'ninh thuan','ninh thuan','tp hcm',0988333223,'giao vien') insert into GIAOVIEN values ('gv003', 'nguyen thi an',1, convert(datetime, '10/02/1979',103), 'binh thuan','binh thuan','tp hcm',0988333224,'giao vien') insert into GIAOVIEN values ('gv004', 'tran thinh',0, convert(datetime, '09/02/1979',103), 'thai binh','thai binh ','tp hcm',0988333225,'hieu pho') insert into GIAOVIEN values ('gv005', 'lam hong diem',1, convert(datetime, '05/07/1979',103), 'phu yen','ca mau','tp hcm',0988333226,'hieu truong') go nhap bang HOCSINH insert into HOCSINH values ('hs001', 'nguyen lan anh',1, convert(datetime, '05/08/2000',103), 'binh thuan','tp hcm','binh thuan','kinh','khong') insert into HOCSINH values ('hs002', 'tran van an',0, convert(datetime, '04/02/1999',103), 'ca mau','tp hcm','ca mau','dao','thien chua') insert into HOCSINH values ('hs003', 'lam thi teo',1, convert(datetime, '09/03/1998',103), 'binh thuan','tp hcm','ca mau','ede','tin lanh') insert into HOCSINH values ('hs004', 'nguyen quoc long',0, convert(datetime, '06/07/1997',103), 'thai nguyen','tp hcm','thai nguyen','bana','nho giao') insert into HOCSINH values ('hs005', 'lam hong diem',1, convert(datetime, '05/08/1997',103), 'binh thuan','tp hcm','ca mau','tay','phat giao') go nhap bang HOCKY insert into HOCKY values (01,2010,null) insert into HOCKY values (02,2010,null) insert into HOCKY values (03,2011,null) insert into HOCKY values (04,2011,null) insert into HOCKY values (05,2012,null) go nhap bang MONHOC insert into MONHOC values ('mh01','toan',30,40,02) insert into MONHOC values ('mh02','van',10,20,05) insert into MONHOC values ('mh03','ly',25,30,01) insert into MONHOC values ('mh04','hoa',30,35,03) insert into MONHOC values ('mh05','tin',20,25,04) go nhap bang BANGDIEM insert into BANGDIEM values ('hs001','mh01',6,8,9,8) insert into BANGDIEM values ('hs002','mh02',7,9,5,7) insert into BANGDIEM values ('hs003','mh03',2,9,7,6) insert into BANGDIEM values ('hs004','mh04',7,9,4,7) insert into BANGDIEM values ('hs005','mh05',3,8,9,5) go nhap bang LOP insert into LOP values (01,'lop6',50) insert into LOP values (02,'lop7',40) insert into LOP values (03,'lop8',45) insert into LOP values (04,'lop9',42) insert into LOP values (05,'lop9A',48) go nhap bang LICHGIANGDAY insert into LICHGIANGDAY '02/09/2011',103),'6',1,5) insert into LICHGIANGDAY '02/09/2011',103),'6',6,10) insert into LICHGIANGDAY '03/09/2011',103),'7',6,10) insert into LICHGIANGDAY '04/09/2011',103),'8',2,4) insert into LICHGIANGDAY '05/09/2011',103),'9a',7,9) insert into LICHGIANGDAY '06/09/2011',103),'9b',1,3) values ('gv001','mh01',01,convert(datetime, values ('gv001','mh02',01,convert(datetime, values ('gv002','mh02',02,convert(datetime, values ('gv003','mh03',03,convert(datetime, values ('gv004','mh04',04,convert(datetime, values ('gv005','mh05',05,convert(datetime, III Mô Hình Quan Hệ IV View Hien danh sach cac hoc sinh co noi sinh o Binh Thuan create view cau1 as select mshs,hovaten,ngaysinh,dantoc,tongiao,diachi,noisinh from hocsinh where noisinh like 'binh thuan' select*from cau1select *from cau1 Xuat nhung nguoi lam chuc vu la giao vien create view cau2 as select magv,hovaten,gioitinh,chucvu,diachi,sdt from giaovien where chucvu like 'giao vien' select*from cau2 Lay hoc sinh co diem thi hoc ki gioi create view cau3 as select hocsinh.mshs,hovaten,KTRAHOCKY from hocsinh,bangdiem where hocsinh.mshs=bangdiem.mshs and ktrahocky >=8 or ktrahocky >=10 select*from cau3 In nhung giao vien day lop create view cau4 as select lichgiangday.magv,hovaten,ngay,tenlop from lichgiangday,giaovien where lichgiangday.magv=giaovien.magv and tenlop like '9%' select*from cau4 Xem chi tiet create view cau5 as select lichgiangday.tenlop,siso,namhoc,tenmonhoc from lop,hocky,monhoc,lichgiangday where hocky.mahk=monhoc.mahk and lop.malop=lichgiangday.malop and lichgiangday.mamh= monhoc.mamh select*from cau5 V PROCEDURE Tinh tong diem cua cac hoc sinh create procedure tongdiem as select hs.MSHS,HOVATEN,MAMH,SUM((KTRAMIENG+KTRA15+KTRA1TIET*2+ KTRAHOCKy*3)/7) AS TONG_diem from bangdiem bd,hocsinh hs where bd.mshs = hs.mshs group by hs.MSHS,HOVATEN,MAMH exec tongdiem Lay danh sach cua hoa sinh co tong diem cao nhat create procedure tongdiem1 as select hs.MSHS,HOVATEN,MAMH,SUM((KTRAMIENG+KTRA15+KTRA1TIET*2+ KTRAHOCKy*3)/7) AS TONG_DIEM from bangdiem bd,hocsinh hs where bd.mshs = hs.mshs group by hs.MSHS,HOVATEN,MAMH having SUM((KTRAMIENG+KTRA15+KTRA1TIET*2+KTRAHOCKy*3)/7)>=all (select SUM((KTRAMIENG+KTRA15+KTRA1TIET*2+KTRAHOCKy*3)/7) from bangdiem bd,hocsinh hs where bd.mshs = hs.mshs group by hs.MSHS,HOVATEN,MAMH) exec tongdiem1 Lay danh sach giao vien co thang la tham so truyen vao create procedure dsthang @thang datetime as select MAGV,HOVATEN,NGAYSINH,SDT from giaovien gv where month(ngaysinh) = @thang exec dsthang 02 Lay danh sach hoc sinh voi dantoc la tham so truyen vao create procedure dstg @tg nvarchar(10) as select MSHS,HOVATEN,NGAYSINH,DANTOC,TONGIAO,(case GIOITINH when then 'Nu' when then 'Nam' end) AS GIOITINH from hocsinh where dantoc = @tg exec dstg 'kinh' Lay danh sach hoc sinh voi gioitinh la tham so truyen vao create procedure dsgt @gt nvarchar(10) as select MSHS,HOVATEN,NGAYSINH,DANTOC,TONGIAO,(case GIOITINH when then 'Nu' when then 'Nam' end) as GIOITINH from hocsinh where gioitinh = @gt exec dsgt VI TRIGGER Tạo trigger để không cho phép xoá lúc nhiều học sinh create trigger t1 on hocsinh for delete as if (select count(*) from deleted)>1 begin raiserror('khong the xoa cung luc nhieu hoc sinh',16,1) rollback transaction End delete from hocsinh where mshs = 'hs001' and mshs = 'hs002' Tao trigger khong cho phep tenlop trung ten create trigger t2 on lop for insert as declare @tenlop nvarchar(10) select @tenlop = tenlop from inserted if (select count (*) from lop where tenlop=@tenlop)>1 begin print'trung ten lop!!!' rollback end insert into LOP values (06,'lop8',45) Tao trigger khong cho nhap diem ktramieng >10 create trigger t3 on bangdiem for insert as declare @ktramieng numeric select @ktramieng = ktramieng from inserted if (@ktramieng>10) begin print'nhap lon hon 10' rollback transaction end insert into BANGDIEM values ('hs002','mh01',11,8,9,8) Tao trigger nhap ten giao vien phai lon hon ki tu create trigger t4 on giaovien for insert as declare @cdten int select @cdten = len(inserted.hovaten) from inserted if @cdten1) begin print 'Khong xoa duoc vi co du lieu' rollback transaction end delete from hocsinh where mshs = 'hs001' Tao tu dong thay doi theo lich gian giang day create trigger t6 on lichgiangday after insert,delete,update as begin update sisohs set siso=(select count(lichgiangday.malop) from lichgiangday inner join lop on lichgiangday.malop=lop.malop where soluonghs.malop=lichgiangday.malop) end Ten lop khong duoc it hon hai ki tu create trigger t7 on lop for insert, update as begin declare @siso int declare @lop nvarchar(10) select @lop=malop from inserted select @siso= count(tenlop) from lop where @lop= malop if @siso>2 ROLLBACK TRANSACTION End Them giao vien co tuoi

Ngày đăng: 07/12/2016, 15:51

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan