1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

10 774 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 108 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tạo Table --Tao bang GIAOVIEN create table GIAOVIEN MAGV nvarchar10not null,HOVATEN nvarchar50,GIOITINH numeric,NGAYSINH datetime ,NOISINH nvarchar50,QUEQUAN nvarchar50,DIACHI nvarchar50

Trang 1

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ó 4 khối lớp

từ lớp 6 đến lớp 9 Mỗi khối có các lớp được đặt tên gồm khối và thứ tự để phân biệt các lớp trong cùng khối Chẳng hạn khối 7 có 5 lớp có các tên lớp 7/1, 7/2, ,7/5 Thông tin cần lưu cho học sinh là mã học sinh, tên học sinh, ngày sinh, phái Mỗi học sinh học lớp nào cần lưu thêm thông tin về năm học Giả sử trong một năm học không cho phép học sinh chuyển đổi lớp Mỗi khối lớp có các môn học quy định Một năm học có học kỳ 1 và học kỳ 2 Mỗi môn trong một học kỳ, một học sinh có các điểm kiểm tra như sau: không hoặc tối đa 3 lần kiểm tra miệng, 3 lần kiểm tra 15 phút, 2 lần kiểm tra 1 tiết và 1 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 và giáo viên dạy môn mà sinh viên học trong mỗi năm học của mỗi lớp (Trong một năm học không có sự thay đổi giáo viên dạy và giáo viên chủ nhiệm) Mỗi giáo viên có thể dạy nhiều môn Trong một năm học một giáo viên

có thể không chủ nhiệm hoặc chỉ chủ nhiệm một lớp.

II Code

1 Tạo Database

create database QLHS

on primary

(name=QLHS_data1,filename='D:\nhom9\QLHS_data1.mdf',size=10MB,maxsize=40

MB filegrowth=1MB)

logon

(name=QLHS_log,filename='D:\nhom9\QLHS_log.ldf',size=6MB,maxsize=8MB,file growth=1MB)

2 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))

altertable GIAOVIEN addconstraint pk_GV primarykey(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))

altertable HOCSINH addconstraint pkV_HS primarykey(MSHS)

GO

Tao bang HOCKY

create table HOCKY

Trang 2

(MAHK nvarchar(10)not null,NAMHOC numeric,GHICHU nvarchar(50))

altertable HOCKY addconstraint pk_HK primarykey(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)

altertable MONHOC addconstraint pk_MH primarykey (MAMH)

altertable MONHOC addconstraint pk_MA foreignkey(MAHK) references HOCKY (MAHK)

GO

Tao bang LOP

create table LOP

(MALOP nvarchar(10)not null,TENLOP nvarchar(10),SISO numeric)

altertable LOP addconstraint pk_L primarykey(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))

altertable LICHGIANGDAY addconstraint pk_LGD primarykey(MAGV,MAMH)

altertable LICHGIANGDAY addconstraint pk_Ma_LDG foreignkey(MAGV) references GIAOVIEN (MAGV)

altertable LICHGIANGDAY addconstraint pk_Ma_MH foreignkey(MAMH) references MONHOC (MAMH)

altertable LICHGIANGDAY addconstraint pk_Ma_B foreignkey(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)

altertable BANGDIEM add constraint pk_BD primarykey(MSHS,MAMH)

altertable BANGDIEM add constraint pk_Ms foreign key(MSHS) references HOCSINH (MSHS)

altertable BANGDIEM add constraint pk_JBD foreignkey(MAMH) references

MONHOC (MAMH)

3 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')

Trang 3

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 thanh 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

insertinto HOCKY values (01,2010,null)

insertinto HOCKY values (02,2010,null)

insertinto HOCKY values (03,2011,null)

insertinto HOCKY values (04,2011,null)

insertinto HOCKY values (05,2012,null)

go

nhap bang MONHOC

insertinto MONHOC values ('mh01','toan',30,40,02)

insertinto MONHOC values ('mh02','van',10,20,05)

insertinto MONHOC values ('mh03','ly',25,30,01)

insertinto MONHOC values ('mh04','hoa',30,35,03)

insertinto MONHOC values ('mh05','tin',20,25,04)

go

nhap bang BANGDIEM

insertinto BANGDIEM values ('hs001','mh01',6,8,9,8)

insertinto BANGDIEM values ('hs002','mh02',7,9,5,7)

insertinto BANGDIEM values ('hs003','mh03',2,9,7,6)

insertinto BANGDIEM values ('hs004','mh04',7,9,4,7)

insertinto BANGDIEM values ('hs005','mh05',3,8,9,5)

go

nhap bang LOP

insertinto LOP values (01,'lop6',50)

insertinto LOP values (02,'lop7',40)

insertinto LOP values (03,'lop8',45)

insertinto LOP values (04,'lop9',42)

insertinto LOP values (05,'lop9A',48)

go

nhap bang LICHGIANGDAY

Trang 4

insert into LICHGIANGDAY values ('gv001','mh01',01,convert(datetime, '02/09/2011',103),'6',1,5)

insert into LICHGIANGDAY values ('gv001','mh02',01,convert(datetime, '02/09/2011',103),'6',6,10)

insert into LICHGIANGDAY values ('gv002','mh02',02,convert(datetime, '03/09/2011',103),'7',6,10)

insert into LICHGIANGDAY values ('gv003','mh03',03,convert(datetime, '04/09/2011',103),'8',2,4)

insert into LICHGIANGDAY values ('gv004','mh04',04,convert(datetime, '05/09/2011',103),'9a',7,9)

insert into LICHGIANGDAY values ('gv005','mh05',05,convert(datetime, '06/09/2011',103),'9b',1,3)

III Mô Hình Quan Hệ

Trang 5

IV View

1 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

2 Xuat ra 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

Trang 6

3 Lay ra 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

4 In ra nhung giao vien day lop 9

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

5 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

1 Tinh tong diem cua cac hoc sinh

create procedure tongdiem

as

select

from bangdiem bd,hocsinh hs

where bd.mshs = hs.mshs

group by hs.MSHS,HOVATEN,MAMH

exec tongdiem

2 Lay ra danh sach cua hoa sinh co tong diem cao nhat

create procedure tongdiem1

as

select

from bangdiem bd,hocsinh hs

where bd.mshs = hs.mshs

group by hs.MSHS,HOVATEN,MAMH

Trang 7

SUM((KTRAMIENG+KTRA15+KTRA1TIET*2+KTRAHOCKy*3)/7)>=all (selectSUM((KTRAMIENG+KTRA15+KTRA1TIET*2+KTRAHOCKy* )/7) from bangdiem bd,hocsinh hs

where bd.mshs = hs.mshs

group by hs.MSHS,HOVATEN,MAMH)

exec tongdiem1

3 Lay ra danh sach giao vien co ngay 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

4 Lay ra 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 1 then 'Nu' when 0 then 'Nam' end) AS GIOITINH

from hocsinh

where dantoc = @tg

exec dstg 'kinh'

5 Lay ra 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 1 then 'Nu' when 0 then 'Nam' end) as GIOITINH

from hocsinh

where gioitinh = @gt

exec dsgt 1

VI TRIGGER

1 Tạo trigger để không cho phép xoá cùng lúc nhiều học sinh

create trigger t1

on hocsinh

fordelete

as

if (selectcount(*) from deleted)>1

begin

Trang 8

raiserror('khong the xoa cung luc nhieu hoc sinh',16,1) rollbacktransaction

End

delete from hocsinh where mshs = 'hs001' and mshs = 'hs002'

2 Tao trigger khong cho phep 2 tenlop trung ten

create trigger t2

on lop

forinsert

as

declare @tenlop nvarchar(10)

select @tenlop = tenlop from inserted

if (selectcount (*) from lop where tenlop=@tenlop)>1 begin

print'trung ten lop!!!' rollback

end

insertinto LOP values (06,'lop8',45)

3 Tao trigger khong cho nhap diem ktramieng >10

create trigger t3

on bangdiem

forinsert

as

declare @ktramieng numeric select @ktramieng = ktramieng from inserted

if (@ktramieng>10) begin

print'nhap lon hon 10' rollbacktransaction end

insertinto BANGDIEM values ('hs002','mh01',11,8,9,8)

4 Tao trigger nhap ten giao vien phai lon hon 1 ki tu

create trigger t4

on giaovien

forinsert

as

declare @cdten int select @cdten = len(inserted.hovaten) from inserted

if @cdten<=1 begin

print'Ten khong hop le,moi nhap lai!!!' rollbacktransaction

Trang 9

insertinto GIAOVIEN values ('gv006','A',0,convert(datetime,'12/12/1979',103), 'ninh thuan','ninh thuan','tp hcm',0988333223,'giao vien')

5 Tao trigger khong cho phep xoa hoc sinh da co diem

create trigger t5

on hocsinh

fordelete

as

declare @mshs nvarchar(10),@sl int select @mshs = mshs from deleted select @sl=count(mshs) from bangdiem where @mshs=Mshs

if ( @sl>1) begin print 'Khong xoa duoc vi co du lieu' rollbacktransaction

end

delete from hocsinh where mshs = 'hs001'

6 Tao tu dong thay doi theo lich gian giang day

create trigger t6

on lichgiangday

afterinsert,delete,update

as

begin

update sisohs set siso=(selectcount(lichgiangday.malop) from lichgiangday inner join lop

on lichgiangday.malop=lop.malop

where soluonghs.malop=lichgiangday.malop) end

7 Ten lop khong duoc it hon hai ki tu

create trigger t7 on lop

forinsert,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

ROLLBACKTRANSACTION End

Trang 10

8 Them 1 giao vien co tuoi <=25

create trigger t8 on giaovien

forinsert

as

if exists (select * from inserted as a

whereYEAR(GETDATE()) - YEAR(ngaysinh) <= 25)

begin

raiserror('Giao vien phai <=25 tuoi lam viec ',15,1);

rollbacktran;

end;

9 Ma sinh vien phai tuan theo quy tac sau: 1 ky tu dau là ‘h’, thu 2 la ‘s’ ,3 ky tu sau bieu the so thu tu

create trigger t9 on hocsinh

forinsert,update

as

ifupdate(Mshs) or not exists (select * from deleted)

if not exists(select * from inserted

where patindex('[h][s][0-9][0-9][0-9]',mshs) > 0)

begin

raiserror('Mã sinh viên phai tuan theo quy tac sau: 1 ký tu dau là ‘h’, thu 2

la ‘s’ ,3 ky tu sau bieu the so thu tu',15,1);

rollback

end;

10.Them mot hoc sinh phai co <=12 tuoi

create trigger t10 on hocsinh

forinsert

as

if exists (select * from inserted as a

whereYEAR(GETDATE()) - YEAR(ngaysinh) <= 12)

begin

raiserror('Hoc sinh phai co <=12',15,1);

rollbacktran;

end;

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w