1. Trang chủ
  2. » Công Nghệ Thông Tin

Tổng hợp các bài tập truy vấn cơ sở dữ liệu

26 354 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 58,21 KB

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

Nội dung

CÁC BÀI TẬP, TÀI LIỆU THAM KHẢO THI MÔN CƠ SỞ DỮ LIỆU: SỬ DUNG CƠ SỞ DỮ LIỆU THIẾT KẾ BẢNG TRONG CSDL VÀ RÀNG BUỘC TOÀN VẸN, TRUY VẤN NÂNG CAO, STORED PROCEDURE, TRIGGER, QUẢN LÍ USER VÀ SECURITY, .....

Trang 1

CHƯƠNG 1: THIẾT KẾ BẢNG TRONG CSDL VÀ RÀNG BUỘC TOÀN VẸN

MaMon nvarchar(10) not null,

MaSV nvarchar(10) not null,

DiemThi float

)

1.1 Tao ràng buộc khóa trên cột MaSV của bảng tblSinhVien

alter table tblSinhVien add constraint p_SV primary key(MaSV)

1.2 tạo ràng buộc khóa trên cột khoa của bảng tblKhoa

alter table tblKhoa add constraint p_Khoa primary key(MaKhoa)

1.3 Tạo ràng buộc khóa trên cột MaSV va MaMon của bảng tblDiemThi

alter table tblDiemThi add constraint p_DiemThi primary key(MaSV,MaMon)

1.4 Tạo ra chỉ mục trên cột HoTen của bảng tblSinhVien(co p_SV nen k the tao

duoc chi muc clustered)

create nonclustered index SV_HoTen on tblSinhVien(HoTen)

Trang 2

1.5 Thêm cột KhoaHoc(khóa học ) của bảng tblSinhVien

alter table tblSinhVien add KhoaHoc nvarchar(10)

1.6 Tạo ràng buộc not null trên cột tên khoa

alter table tblKhoa alter column TenKhoa varchar(20) not null

1.7 Tạo ràng buộc not null trên cột DiemThi

alter table tblDiemThi alter column DiemThi float not null

1.8 Tạo ràng buộc để cột điểm thi chỉ có thể nhận các giá trị từ 0-10

alter table tblDiemThi add constraint c_DiemThi check(DiemThi>0 and DiemThi<10)

1.9 Tạo ràng buộc trên cột NamSinh để chỉ có thể nhạn giá trị từ '1/1/1999'

đến'30/12/2005'

alter table tblSinhVien add constraint c_NamSinh check (NamSinh between '1/1/1999' and '12/30/2005')

1.10 Thêm cột ghichu vào bảng tblKhoa

alter table tblKhoa add GhiChu nvarchar(100)

1.11 Tạo quan hệ 1-n từ bảng tblKhoa sang bảng tblSinhVien

alter table tblSinhVien add constraint f_SV_Khoa foreign key(MaKhoa) references tblKhoa(MaKhoa)

1.12 Tạo quan hệ 1-n từ bảng tblSinhVien sang bảng tblDiemThi

alter table tblDiemThi add constraint f_SV_DiemThi foreign key(MaSV ) references tblSinhVien(MaSV )

1.13 Tạo quan hệ 1-nt ừ bảng tblMonHoc sang bảng tbDiemThi

alter table tblDiemThi add constraint f_MH_DiemThi foreign key(MaMon) references tblMonHoc(MaMon)

1.14 Chèn 1 số bản ghi vào các bảng

insert into tblKhoa values ('101','CNTT',' ')

insert into tblKhoa values ('102','Điện Tử',' ')

insert into tblKhoa values ('103','May',' ')

insert into tblKhoa values ('104','Môi Trường',' ')

insert into tblKhoa values ('105','Kế toán',' ')

insert into tblKhoa values ('3','Công nghệ thông tin',' ')

Trang 3

insert into tblSinhVien values ('SV1','bcxfv','HY','2/2/1999','101','2009-2013')

insert into tblSinhVien values ('SV2','fb xd','HY','3/3/2000','101','2009-2013')

insert into tblSinhVien values ('SV3','bcgfbxfv','HY','5/2/1999','101','2009-2013')

insert into tblSinhVien values ('SV4','fbgxd','HY','3/7/2000','101','2009-2013')

insert into tblSinhVien values ('SV5','fbgvhgxd','HY','8/7/2000','104','2009-2013')

insert into tblSinhVien values ('SV6','Nguyễn Văn 2013')

Bình','HY','2/2/2003','101','2009-insert into tblMonHoc values ('M1','Toán cao cấp 1')

insert into tblMonHoc values ('M2','Toán cao cấp 2')

insert into tblMonHoc values ('M3','Toán cao cấp 3')

insert into tblMonHoc values ('M4','Hóa học đại cương')

insert into tblMonHoc values ('M5','Tin học đại cương')

insert into tblMonHoc values ('5','JaVa')

insert into tblDiemThi values ('M1','SV1','4')

insert into tblDiemThi values ('M2','SV4','5')

insert into tblDiemThi values ('M3','SV3','6')

insert into tblDiemThi values ('M2','SV2','7')

insert into tblDiemThi values ('M4','SV3','9')

insert into tblDiemThi values ('5','SV6','9')

insert into tblDiemThi values ('5','SV3','4')

1.15 Cho biết các sinh viên thi lai môn java biết môn 'java' có mã môn la 5

select * from tblSinhVien where MaSV in(select MaSV from tblDiemThi where

MaMon='5' and DiemThi<5)

1.16

a Cho biết điểm môn 'java' của sinh viên tên la 'nguyễn văn bình'

select DiemThi from tblDiemThi where MaSV in(select MaSV from tblSinhVien where HoTen='Nguyễn Văn Bình')

b Số lượng các sinh viên bị trượt môn java

select count(MaSV ) from tblDiemThi where MaMon= '5' and DiemThi<5

1.17 Cho biết số lượng SV của khoa CNTT biet makhoa la 3

select count(MaSV ) from tblSinhVien where MaKhoa='3'

1.18 Hủy bỏ điểm thi của sinh viên có mã la 1

delete from tblDiemThi where MaSV ='SV1'

Trang 4

1.19 sửa lại điểm thi của SV co mã là 2 thành 8

update tblDiemThi

set DiemThi=8 where MaSV ='SV2'

1.20 Xóa ràng buộc chỉ mục trên cột hoten

drop index SV_HoTen on tblSinhVien

1.21 Xóa ràng buộc từ bảng tblKhoa sang bảng tblSinhVien

alter table tblSinhVien drop constraint f_SV_Khoa

CHƯƠNG 2: TRUY VẤN NÂNG CAO

)

Trang 5

2.1 Cho biết các ds sinh viên có địa chỉ là một trong các tỉnh sau: HY, BG,

NB,TH,NA,HG

select * from tblSinhVien

where DiaChi in('HY','BG','NB','TH','NA','HG')

2.2 Cho biết ds SV trong top 10 SV có điểm tin cao nhất

select top 10 tblSinhVien.MaSV , HoTen,DiaChi, Diem from tblSinhVien,tblDiemThiwhere tblSinhVien.MaSV =tblDiemThi.MaSV and tblSinhVien.MaSV in(select MaSV from tblDiemThi where MaMon in

(select MaMon from tblMonHoc where TenMon ='Tin'))

order by (Diem)

2.4 Cho biết ds các sinh viên bị trượt môn tin học

select * from tblSinhVien where MaSV in

(select MaSV from tblDiemThi where Diem<4 and MaMon in(select MaMon from tblMonhoc where TenMon='Tin'))

2.5 Cho biết ds các SV bị trượt ít nhất 1 môn

select * from tblSinhVien where MaSV in(

select MaSV from tblDiemThi where Diem<=4

group by (MaSV)

having count(Diem)>=1

)

2.6 cho biết ds các SV bị trượt tất cả các môn

select * from tblSinhVien where MaSV in(

select MaSV from tblDiemThi where Diem<=4

group by (MaSV )

having count(Diem)=count(MaSV )

)

2.7 cho biết ds các SV dã thi tất cả các môn

select * from tblSinhVien where MaSV not in(select MaSV from tblDiemThi)

Trang 6

2.8 cho biết ds cac sv chua thi tất cả các môn

select * from tblSinhVien where MaSV in(

select MaSV from tblDiemThi group by (MaSV) having count (MaMon)< (select

count(maMon) from tblMonHoc))

II: Cơ sở dữ liệu BanHang

2.9 Liệt kê NH_NCC có địa chỉ ở Hà Nội

select *from DM_NhaCungCap

where DiaChi='Hà Nội'

2.10 Liệt kê hóa đơn bán hàng trong thang 4/2008

select *from DM_HoaDon

where month(NgayLapHoaDon)='4' and year(NgayLapHoaDon)='2009'

2.11 Liệt kê hóa đơn nhập hàng do nhân viên 'Nguyễn Thị A' phụ trách lập trong

T4/2008

select * from DM_HoaDon

where year(NgayLapHoaDon)='2009' and month(NgayLapHoaDon)='4'

and MaNV in(select MaNV from DM_NhanVien where TenNhanVien='Nguyễn Thị A')

2.12 Lập báo cáo tổng hợp mặt hàng xuất từ đầu năm đến nay: MaHang| SoLuong

select MaHang,SoLuong from DM_ChiTietHoaDon

where MaHD in(select maHD from DM_HoaDon where NgayLapHoaDon between '1/1/2011' and getdate())

2.13 Liệt kê 10 mặt hàng bán chạy nhất trong T4/2008(số lượng khách hàng giao dịch

nhiều nhất)

select top 10 MaHang,sum(SoLuong) as SoLuong from DM_ChiTietHoaDon

where MaHD in(select MaHD from DM_HoaDon where year(NgayLapHoaDon)='4' andmonth(NgayLapHoaDon)='2008')

group by MaHang

order by sum(SoLuong) desc

Trang 7

2.14 Thống kê doanh thu ban hàng của nhân viên trong T4/2008

DoanhThu=SL*DG-SL*DG*ChietKhau

select MaNV,sum(SoLuong*DonGia-SoLuong*DonGia*ChietKhau) as DoanhThufrom DM_ChiTietHoaDon,DM_HoaDon

where DM_ChiTietHoaDon.MaHD=DM_HoaDon.MaHD and

month(NgayLapHoaDon)='4'and year(NgayLapHoaDon)='2008'

group by MaNV

2.15 Báo cáo tổng hợp nhập, xuất, tồn tinh từ 01/04/2008 đến 30/04/2008

MaHang| Tồn đầu kỳ| Tổng Nhập| Tổng xuất| Tồn cuối kì

2.16 Liệt kê các mặt hàng không có người mua trong T4/2008

select *from DM_HangHoa

where MaHang not in (select MaHang from DM_HoaDon where

year(NgayLapHoaDon)='2008' and month(NgayLapHoaDon)='4')

2.17 Báo cáo tổng hợp kết quả kinh doanh trong tháng 4/2008 TongHangNhap|

TongHangXuat

2.18 Liệt kê mặt hàng bán chạy nhất

select * from DM_HangHoa

where MaHang in(

select MaHang from DM_CHiTietHoaDon group by MaHang having sum(Soluong)> all(select sum(soluong) from DM_CHiTietHoaDon))

III CSDL Quản Lí Nhân Sự

2.19 Tìm những CB nhập ngũ từ năm 1960-1965 quê ở hà tây

select *from HSCB where( year(NgayNhapNgu) between 1960 and 1965) and

MaQue in(select MaDonVi from DMDonvi where TenDonVi='Hà Tây')

2.20 liệt kê ds CB đến tuổi chờ nghỉ hưu(Nam>=55, nữ >=50)

select * from HSCB where (year(NgaySinh )>=55 and GioiTinh='True')

or(year(NgaySinh )>=50 and GioiTinh='False')

Trang 8

2.21 Thống kê sỹ số của từng đơn vị tính đến thời điểm hiên tại

select MaCB from QTCongTac

where ToiNgay<=getdate()

compute count(MaCB)

2.22 liệt kê quá trình công tác của CB 'Nguyễn Văn A' sắp xếp theo thời gian tăng dần

select MaDonVi, MaChucVu,TuNgay,ToiNgay from QTCongTac

where MaCB in(select MaCB from HSCB where HoDem='Nguyễn Văn ' and Ten='A')group by MaDonVi, MaChucVu,TuNgay,ToiNgay

order by TuNgay-ToiNgay

2.23 Liệt kê CB dã hoăc đang đảm nhiêm chức vụ pho phòng

select * from HSCB where MaCB in(

select MaCB from QTCongTac where MaChucVu in(

select MaChucVu from DMChucVu where TenChucVu='Phó Phòng'

))

2.24 Liệt kê các CB đã đảm nhiệm chức vụ 'Trưởng Phòng'

select *from HSCB where MaCB in(

select MaCB from QTCOngTac where MaChucVu in(

select MaChucVu from DMChucVu where TenChucVu='Trưởng Phòng'

) )

2.25 Liệt kê CB có số lần luân chuyển nhiều nhất

select * from HSCB

where MaCB in (

select MaCB from QTCongTac group by MaCB

having count(MaChucVu)>all(

select count(MaChucVu) from QTCongTac group by MaCB))

2.26 Liệt kê trong khoảng thời gian từ năm 2005 đến nay, tại phòng dào tạo có bao

nhiêu CB dược chuyển đến và chuyển đi

select count(MaCB) from QTCongTac where (year(TuNgay)>=2005 or

year(ToiNgay)>=2005) and MaDonVi in(

select MaDonVi from DMDonVi where TenDonVi='Phòng Đào Tạo'

)

Trang 9

2.27 Hiển thị thông tin về đơn vị, CB tương ứng của đơn vị đó và thống kê số lượng

NV thuộc mỗi đơn vị

select from HSCB,QTCongTac

select TenDT, SinhVien.HoTen, GiaoVien.HoTen

from SinhVien, GiaoVien,DeTai

where

3.1 Ứng với mỗi mỗi giáo viên cho biết tên của các đề tài hướng dẫn

create view view1

as

select HoTen, TenDT

from GiaoVien,DeTai, GiaoVien_DeTai

where GiaoVien.MaGV=GiaoVien_DeTai.MaGV and

DeTai.MaDT=GiaoVien_DeTai.MaDT

3.2 Cho biết các sinh vên có kết quả bảo vệ đề tài loại khá

create view view2

as

select * from SinhVien

where MaSV in(select MaSV from KetQua where Diem>=7)

Trang 10

3.3 Cho biết tên GV hướng dẫn các đề tài có kết quả bảo vệ loại khá

create view view3

as

select *from GiaoVien where MaGV in(

select MaGV from GiaoVien_DeTai where MaDT in(

select MaDT from KetQua where Diem>=7 ))

3.4 Ứng với mỗi GV cho biết số lượng các đề tài hướng dẫn

create view view4

as

select HoTen,count(MaDT) as SoLuongDT

from GiaoVien, GiaoVien_DeTai

where GiaoVien.MaGV=GiaoVien_DeTai.MaGV

group by GiaoVien.MaGV, HoTen

3.5 Ứng với mỗi SV cho biết số lượng các đề tài ma SV do tham gia

create view view5

as

select HoTen,count(maDT) as SoLuongDT

from SinhVien, SinhVien_DeTai

where SinhVien.MaSV =SinhVien_DeTai.MaSV

group by HoTen

3.6 Ứng với mỗi SV cho biết tên các đề tài mà SV đó tham gia

create view view6

as

select HoTen,TenDT from SinhVien,DeTai, SinhVien_DeTai

where SinhVien.MaSV =SinhVien_DeTai.MaSV and

DeTai.maDT=SinhVien_DeTai.MaDT

3.7 Cho biết tên các GV không tham gia hướng dẫn đề tài nào

create view view7

as

select MaGV,HoTen from GiaoVien where MaGV not in

(select MaGV from GiaoVien_DeTai)

Trang 11

3.8 cho biết tên của các đề tài không có SV tham gia

create view view8

select *from DeTai

where MaDT in(select MaDT from SinhVien_DeTai group by MaDT

having count(MaSV )> all (select count(MaSV ) from SinhVien_DeTai))

3.10 cho biết ds giáo viên và số lượng SV mà GV đó hướng dẫn

create view view10

as

select GiaoVien.HoTen,count(MaSV ) as SoLuong

from GiaoVien,GiaoVien_DeTai, KetQua

where GiaoVien.MaGV=GiaoVien_DeTai.MaGV and

GiaoVien_DeTai.MaDT=KetQua.MaDT

group by GiaoVien.HoTen

CHƯƠNG 4: CHỈ MỤC

4.1 Tạo khóa chính trên cột maSV

alter table tblSinhVien_ChiMuc add constraint p_SV_CM primary key(MaSV )4.2 Tạo chỉ mục nonclustered trên cột HoTen

create nonclustered index i_HoTen on tblSinhVien_ChiMuc( HoTen)

4.3 tạo chỉ mục nonclustered tren cột Que

create nonclustered index i_Que on tblSinhVien_ChiMuc(Que)

Trang 12

4.4 Tạo chỉ mục nonclustered phức hợp trên cột HoTen và Quê

create nonclustered index i_HoTen_Que on tblSinhVien_ChiMuc(HoTen,Que)

4.5 tạo chỉ mục duy nhất (unique) trên cột SoCMT

create unique index i_SoCMT on tblSinhVien_ChiMuc(SoCMT)

4.6.xem lại tất cả các chỉ mục trên bang tblSinhVien_ChiMuc

exec sp_helpindex tblSinhVien_ChiMuc

4.7 Tìm tất cả các SV có tên 'Nguyễn Văn A' bằng cách sử dụng chỉ mục dược tạo tring câu 2

select * from tblSinhVien_ChiMuc with (index=i_HoTen)

where HoTen='Nguyễn Văn A'

4.8 Tìm tất cả các SV có que ở Hưng Yên bằng cách sử dụng chỉ mục được tạo trong câu3

select *from tblSinhVien_ChiMuc with (index=i_Que)

where Que='Hưng Yên'

4.9 tìm tất cả các SV có tên bắt đàu bằng 'Nguyễn Văn' và có quê ở 'Hưng Yên'

select * from tblSinhVien_ChiMuc with (index=i_HoTen_Que)

where HoTen like 'Nguyễn Văn%' and Que='Hưng Yên'

4.10 xóa các chỉ mục dược tạo trong câu 2-4

drop index i_HoTen on tblSinhVien_ChiMuc

drop index i_Que on tblSinhVien_ChiMuc

drop index i_HoTen_Que on tblSinhVien_ChiMuc

4.11 Xóa ràng buộc khóa chính tại bảng tblSinhVien_ChiMuc

alter table tblSinhVien_ChiMuc drop constraint p_SV_CM

4.12 Tạo lại khóa chính trên bảng tblSinhVien_ChiMuc, trong quá trình tạo khóa chính

sử dụng tùy chọn NunClustered để SQL server, không tạo chỉ mục clustered trên chỉ mục khóa chính (vì mặc định khi tạo khóa chính SQL tự đọng tạo chỉ mục Clustered trên cột khóa )//////////////////////

Trang 13

create clustered index id_SV_CM on tblSinhVien_ChiMuc

with drop_existing

4.13 tạo chỉ mục clustered và unique trên cột SoCMT với hệ số điền đầy bằng 60

create unique clustered index id_SoCMT on tblSinhVien_ChiMuc(SoCMT)

with FillFactor=60

4.14 Tạo chỉ mục fulltext trên cột Que và ứng dụng tìm kiếm fulltext trên cột này (sử dụng từ khóa contains và freetext)???????

exec sp_help tblSinhVien

exec sp_fulltext_database 'enable'

create fulltext catalog catalog_Que

create fulltext index on tblSinhVien(Que)

key index MaSV on catalog_Que

seletc * from tblSinhVien where contains (Que,'Hưng','Hải')

create table tblTacGia

Trang 14

constraint p_SachMuon primary key(SoThe,MaCaBiet ),

constraint f_MaCaBiet foreign key (MaCaBiet ) references ChiTietSach(MaCaBiet ),NgayMuon datetime

Ta thường xuyên tìm kiếm độc giả theo: số thẻ, họ tên

create nonclustered index id_TacGia on tblTacGia (TenTG)

create nonclustered index id_Sach on tblSach(TuaSach ,TuKhoa, NXB)

create nonclustered index id_DocGia on tblDocGia(SoThe, HoTen)

4.16 Tạo các ràng buộc khóa ngoại trên các bảng sau:

alter table tblSachTG add constraint f_Sach_TG1 foreign key(maTG) references

tblTacGia(MaTG)

alter table tblSachTG add constraint f_SachTG_Sach foreign key(MaSach ) references tblSach(MaSach )

Trang 15

alter table ChiTietSach add constraint f_CTS_Sach foreign key(MaSach) references tblSach(MaSach )

alter table tblSachMuon add constraint f_SachMuon_DG foreign key (SoThe) references tblDocGia(SoThe)

4.17 tạo các ràng buộc sau

- trong bảng tblSach trường SoTrang>0

alter table tblSach add constraint check_SoTrang check(SoTrang>0)

- trong bảng tblSach trường NamXB phải nhỏ hơn năm hiện tại

alter table tblSach add constraint check_NamXB check(NamXB <year(getdate()))

- trong bảng tblSachMuon trường NgayPhaiTra>=NgayMuon

alter table tblSachMuon add constraint check_Ngay check(NgayPhaiTra>=NgayMuon)

- trong bảng tblSachMuon trường NgayTra>=NgayMuon

alter table tblSachMuon add constraint check_Muon_Tra check(NgayTra>=NgayMuon)

CHƯƠNG 5: STORED PROCEDURE

I Thủ tục lưu trữ với các tham số đầu vào

5.1 Viết thủ tục lưu trữ có tham số đầu vào là xâu kí tự, thủ tục này sẽ trả về đề tài có

mã tương ứng, tham số của thủ tục là: Tên đề tài, tên sinh viên tham gia, tên giáo viên hướng dẫn

1 Tạo hàm:

create proc Pro_5_1

@TenDeTai nvarchar(100) output,

Ngày đăng: 24/10/2018, 16:42

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w