Đăng ký Đăng nhập

Tài liệu Trongtai

.DOC
3
591
111

Mô tả:

Cho cơ sở dữ liệu gồm các bảng như sau: Qui định khóa chính của các bảng như sau: Bảng ChiTietVanTai TrongTai LoTrinh Khóa chính MaVT MaTrongTai MaLoTrinh Yêu cầu: 1. Hãy viết lệnh SQL để tạo cấu trúc các bảng trên. Nhập dữ liệu. create table trongtai (matrongtai varchar(20) not null constraint pk primary key, trongtaiqd int); create table lotrinh (malotrinh varchar(20) not null constraint pk1 primary key, tenlotrinh varchar(20), dongia numeric, thoigianqd int); create table chitietvantai (mavt varchar(20) not null constraint pk2 primary key, soxe varchar(20), matrongtai varchar(20) constraint rk references trongtai(matrongtai), malotrinh varchar(20) constraint rk2 references lotrinh(malotrinh), soluongvt int, ngaydi int, ngayden int); -1- 2. Viết câu lệnh SQL để hiển thị các thông tin gồm: SoXe, TenLoTrinh, SoLuongVT, NgayDi, NgayDen, ThoiGianVT, CuocPhi. Trong đó:  ThoiGianVT = NgayDen-NgayDi +1.  CuocPhi = SoLuongVT * DonGia. select c.soxe, b.tenlotrinh, c.soluongvt, c.ngaydi, c.ngayden, c.ngaydenc.ngaydi+1 as thoigianvt, c.soluongvt*b.dongia as cuocphi from chitietvantai c, lotrinh b where c.malotrinh=b.malotrinh; 3. Tạo view có tên là Cau3 để lập danh sách các xe có lộ trình vận tải là Đà Nẵng hoặc có SoLuongVT vượt trọng tải qui định. View gồm các trường SoXe, TenLoTrinh, SoLuongVT, TrongTaiQD, NgayDi, NgayDen. create view cau3a as select c.soxe, b.tenlotrinh, c.soluongvt, a.trongtaiqd, c.ngaydi, c.ngayden from trongtai a, lotrinh b, chitietvantai c where c.matrongtai=a.matrongtai and c.malotrinh=b.malotrinh and (b.tenlotrinh='Da Nang' or c.soluongvt>a.trongtaiqd); 4. Viết lệnh SQL để liệt kê các xe có cước phí lớn nhất trong mỗi lộ trình gồm các trường: SoXe, TenLoTrinh, CuocPhi (SoLuongVT*DonGia). select c.soxe, b.tenlotrinh, c.soluongvt*b.dongia as cuocphi from chitietvantai c, lotrinh b where c.malotrinh=b.malotrinh and c.soluongvt*b.dongia = (select max(soluongvt*dongia) from chitietvantai, lotrinh where chitietvantai.malotrinh= lotrinh.malotrinh and c.malotrinh=chitietvantai.malotrinh); 5. Hãy viết lệnh SQL thực hiện các thao tác sau: - Thêm một bản ghi mới vào bảng ChiTietVanTai; dữ liệu phù hợp nhưng không được nhập giá trị null. - Thay đổi trọng tải qui định (TrongTaiQD) bằng 15 đối với mã trọng tải (MaTrongTai) có trung bình vận tải lớn hơn 8. nsert into chitietvantai values (11,'555','51','QN',9,01/02/1999,02/03/1999); update trongtai set trongtaiqd = (select trongtaiqd from trongtai where trongtaiqd>8); 6. Viết lệnh SQL để liệt kê các xe có cước phí lớn nhất trong mỗi xe gồm các trường: SoXe, TenLoTrinh, CuocPhi (SoLuongVT*DonGia). select c.soxe, c.malotrinh, c.soluongvt*b.dongia as cuocphi from chitietvantai c, lotrinh b where c.soluongvt*b.dongia = (select max(soluongvt*dongia) from chitietvantai, lotrinh where c.soxe=chitietvantai.soxe); 7. Lập danh sách các xe có thời gian vận tải quá thời gian quy định hoặc có SoluongVT vượt trọng tải quy định (TrongtaiQD). Trong đó ThoigianVT = Ngayden – Ngaydi + 1. -2- select c.soxe, c.malotrinh, b.thoigianqd, c.ngayden-ngaydi+1 as thoigianvt, a.trongtaiqd, c.soluongvt from chitietvantai c, lotrinh b, trongtai a where c.malotrinh=b.malotrinh and c.matrongtai=a.matrongtai and (c.ngaydenngaydi+1>b.thoigianqd or c.soluongvt>a.trongtaiqd); 8. Hiển thị cước phí trung bình lớn của mỗi xe với CuocPhi =SoLuongVT*DonGia. select c.soxe, avg(c.soluongvt*b.dongia) as cuocphi from lotrinh b, chitietvantai c group by c.soxe; 9. Hiển thị số xe có tổng số lượng vận tải lớn nhất trong tháng 5. select c.soxe, c.malotrinh, c.soluongvt*b.dongia as cuocphi from chitietvantai c, lotrinh b where c.soluongvt*b.dongia = (select max(soluongvt*dongia) from chitietvantai, lotrinh where c.soxe=chitietvantai.soxe) and month(ngayden)=5; 10. Hiển thị lộ trình tổng số lượng vận tải trung bình lớn hơn hoặc bằng 10. select c.soxe, c.malotrinh, avg(c.soluongvt) as cuocphi from chitietvantai c, lotrinh b group by c.soxe,c.malotrinh having avg(c.soluongvt)>=10; -3-
- Xem thêm -

Tài liệu liên quan