Bài giải Bài Thực hành số 03 SQL

5 0 0
Bài giải Bài Thực hành số 03 SQL

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

Thông tin tài liệu

A Tạo sở liệu CREATE DATABASE THUC_HANH_SQL_3; PRINT 'THUC_HANH_SQL_3' GO USE THUC_HANH_SQL_3 CREATE TABLE TACPHAM ( NT int NOT NULL, tua varchar(500), tacgia varchar(500), PRIMARY KEY (NT) ); CREATE TABLE DOCGIA ( ND int NOT NULL PRIMARY KEY, ho varchar(500), ten varchar(500), dchi varchar(500), tel varchar(500) ); CREATE TABLE SACH ( NS int NOT NULL PRIMARY KEY, nxb varchar(500), NT int FOREIGN KEY REFERENCES TACPHAM(NT) ); CREATE TABLE MUON ( NS int not null, ngaymuon date NOT NULL, hantra date, ngaytra date, PRIMARY KEY (NS, ngaymuon), FOREIGN KEY (NS) REFERENCES SACH(NS), ND int FOREIGN KEY REFERENCES DOCGIA(ND) ); INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO TACPHAM TACPHAM TACPHAM TACPHAM TACPHAM TACPHAM TACPHAM INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO DOCGIA DOCGIA DOCGIA DOCGIA DOCGIA VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES (1, (2, (3, (4, (5, (6, (7, (1, (2, (3, (4, (5, 'Tac 'Tac 'Tac 'Tac 'Tac 'Tac 'Tac pham pham pham pham pham pham pham 'Nguyen 'Nguyen 'Nguyen 'Nguyen 'Nguyen 1', 2', 3', 4', 5', 6', 8', Van', Van', Van', Van', Van', 'Tac 'Tac 'Tac 'Tac 'Tac 'Tac 'Tac gia gia gia gia gia gia gia 1'); 2'); 3'); 4'); 5'); 5'); 3'); 'A', 'Can Tho', '0987654321'); 'B', 'Can Tho', '0987654321'); 'C', 'Can Tho', '0987654321'); 'D', 'Can Tho', '0987654321'); 'E', 'Can Tho', '0987654321'); INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO SACH SACH SACH SACH SACH SACH SACH SACH SACH VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES (1, (2, (3, (4, (5, (6, (7, (8, (9, 'Nha 'Nha 'Nha 'Nha 'Nha 'Nha 'Nha 'Nha 'Nha xuat xuat xuat xuat xuat xuat xuat xuat xuat ban ban ban ban ban ban ban ban ban 1', 2', 3', 4', 5', 5', 5', 5', 4', 1); 2); 3); 4); 5); 4); 4); 4); 3); CONVERT(target_type, expression, date_style) date_style: 110 (MM-DDYYYY) INSERT INTO MUON VALUES (1, CONVERT(datetime,'10-23-2021', 110), CONVERT(datetime,'10-28-2021', 110), null, 1); INSERT INTO MUON VALUES (2, CONVERT(datetime,'10-21-2021', 110), CONVERT(datetime,'10-26-2021', 110), null, 2); INSERT INTO MUON VALUES (3, CONVERT(datetime,'10-22-2021', 110), CONVERT(datetime,'10-27-2021', 110), null, 3); INSERT INTO MUON VALUES (4, CONVERT(datetime,'10-23-2021', 110), CONVERT(datetime,'10-28-2021', 110), null, 4); INSERT INTO MUON VALUES (5, CONVERT(datetime,'10-24-2021', 110), CONVERT(datetime,'10-29-2021', 110), null, 5); INSERT INTO MUON VALUES (6, CONVERT(datetime,'10-20-2021', 110), CONVERT(datetime,'10-25-2021', 110), null, 5); INSERT INTO MUON VALUES (6, CONVERT(datetime,'10-20-2020', 110), CONVERT(datetime,'10-25-2020', 110), null, 2); INSERT INTO MUON VALUES (6, CONVERT(datetime,'10-21-2020', 110), CONVERT(datetime,'10-26-2020', 110), null, 2); B Truy vấn Xem liệu tất bảng select * from TACPHAM select * from SACH select * from MUON select * from DOCGIA select * from DOCGIA join MUON on DOCGIA.ND = MUON.ND join SACH on MUON.NS = SACH.NS join TACPHAM on SACH.NT = TACPHAM.NT; Vẽ sơ đồ liên thơng -> Xem hình diagram.jpg Các tác phẩm (NT, tựa) tác giả 'Guy de Maupassant' select NT, tua as tựa from TACPHAM where tua = 'Guy de Maupassant'; Các độc giả sống địa '32 rue des Alouettes, 75003 Paris' select ho +' '+ ten as ho_ten from DOCGIA where dchi = '32 rue des Alouettes, 75003 Paris' Tìm tên nhà xuất tác phẩm bao gồm từ 'Fleur' select nxb as nha_xuat_ban from SACH s join TACPHAM on s.NT = tp.NT where tp.tua = 'Fluer'; Tìm tên tác phẩm bắt đầu 'Le' select tua from TACPHAM where tua like 'Le'; 7.Tìm tên độc giả có mượn sách trong khoảng thời gian từ ngày 15/9/2007 đến 20/09/2007 103: dd/mm/yyy select ho +' '+ ten as ho_ten from DOCGIA dg join MUON m on dg.ND = m.ND where m.ngaymuon > CONVERT(datetime,'15/9/2007', 103) and m.ngaymuon < CONVERT(datetime,'20/9/2007', 103) 8.Nhà xuất tác phẩm tiêu đề 'Germinal' select s.nxb from SACH s join TACPHAM on s.NT = tp.NT where tp.tua = 'Germianl'; 9.Tên độc giả mượn tác phẩm 'Poésie' select dg ho + ' ' + dg.ten as ho_ten from DOCGIA dg join MUON m on dg.ND = m.ND join SACH s on m.NS = s.ns join TACPHAM on s.nt = tp.NT where tp.tua = 'Poésie'; 10.Những độc giả mượn tác phẩm Les 'Fleurs du mal' select dg ho + ' ' + dg.ten as ho_ten from DOCGIA dg join MUON m on dg.ND = m.ND join SACH s on m.NS = s.ns join TACPHAM on s.nt = tp.NT where tp.tua = 'Les Fleurs du mal'; 14.Những độc giả tác phẩm nượn năm 2007 select dg ho + ' ' + dg.ten as ho_ten, tp.tua from DOCGIA dg join MUON m on dg.ND = m.ND join SACH s on m.NS = s.ns join TACPHAM on s.nt = tp.NT where Year(m.ngaymuon) = '2007' 15 Tính số tác phẩm có thư viện select count(tua) as tong_so_tac_pham from TACPHAM 16 Tựa tác phẩm có hai sách select tua from TACPHAM where NT in (select Q1.NT from (select NT, count(*) as tong from SACH Group by NT) Q1 where tong >= 2) 17.Tính số tác phẩm tác giả select tacgia, count(*) as so_tac_pham from TACPHAM Group by tacgia 18.Tính số sách tác phẩm select tp.tua, Q1.tong_so_sach from TACPHAM join (select NT, count(*) as tong_so_sach from SACH Group by NT) Q1 on tp.NT = Q1.NT 19.Tính số lần mượn sách mượn sách độc giả theo năm select Q1.Nam, dg ho +' '+ dg.ten as ho_ten, Q1.so_lan_muon from DOCGIA dg right outer join (select Year(ngaymuon) as Nam, ND, count(*) as so_lan_muon from MUON Group by year(ngaymuon), ND) Q1 on dg.ND = q1.ND order by Q1.Nam 20.Tìm tên tác phẩm có sách select tua as ten_tac_pham from TACPHAM where NT in (select Q1.NT from (select NT, count(*) as tong from SACH Group by NT) Q1 where tong >= 3) 21.Tên tác phẩm có nhiều sách select tua from TACPHAM where NT = (select Q1.NT from (select NT, count(*) as tong from SACH Group by NT) Q1 where Q1.tong = (select max(Q1.tong) from (select NT, count(*) as tong from SACH Group by NT) Q1)) 22.Tên nhà xuất xuất nhiều sách select Q1.nxb from (select nxb, count(NS) as tong from SACH Group by nxb) Q1 where Q1.tong = (select max(Q1.tong) from (select nxb, count(NS) as tong from SACH Group by nxb) Q1) 23 Tính số tác giả có tác phẩm select Count(Q1.tacgia) as so_tac_gia from (select tacgia, count(NT) as tong from TACPHAM Group by tacgia) Q1 where Q1.tong >= 24.Tìm tựa tác phẩm có nhiều người mượn select tp.tua as tua_tac_pham_co_nhieu_nguoi_muon_nhat from TACPHAM join (select NS, NT from SACH where NS in (select Q1.NS from (select NS, count(NS) as tong from MUON Group by NS) Q1 where Q1.tong = (select max(Q1.tong) from (select NS, count(NS) as tong from MUON Group by NS) Q1))) Q2 on tp.NT = Q2.NT 25 Tìm tựa tác phẩm có người mượn select tp.tua as tua_tac_pham_co_it_nguoi_muon_nhat from TACPHAM join (select NS, NT from SACH where NS in (select Q1.NS from (select NS, count(NS) as tong from MUON Group by NS) Q1 where Q1.tong = (select min(Q1.tong) from (select NS, count(NS) as tong from MUON Group by NS) Q1))) Q2 on tp.NT = Q2.NT 26 Tìm độc giả mnượn nhiều tác phẩm select dg.ho + ' ' + dg.ten as ten_doc_gia_muon_nhieu_tac_pham_nhat from DOCGIA dg join ( select Q1.ND from (select ND, count(NS) as tong from MUON Group by ND) Q1 where Q1.tong = (select max(Q1.tong) from (select ND, count(NS) as tong from MUON Group by ND) Q1)) Q2 on dg.ND = Q2.ND 27 Tìm tên độc giả mượn tác phẩm select dg.ho + ' ' + dg.ten as ten_doc_gia_muon_it_tac_pham_nhat from DOCGIA dg join ( select Q1.ND from (select ND, count(NS) as tong from MUON Group by ND) Q1 where Q1.tong = (select min(Q1.tong) from (select ND, count(NS) as tong from MUON Group by ND) Q1)) Q2 on dg.ND = Q2.ND 30 Họ tên độc giả chưa mượn sách select dg.ho + ' ' + dg.ten as ten_doc_gia_chua_muon_quyen_nao from DOCGIA dg where dg.nd not in ( select distinct m.ND from MUON m) ... 'Guy de Maupassant'; Các độc giả sống địa '32 rue des Alouettes, 75 003 Paris' select ho +' '+ ten as ho_ten from DOCGIA where dchi = '32 rue des Alouettes, 75 003 Paris' Tìm tên nhà xuất tác phẩm... 103: dd/mm/yyy select ho +' '+ ten as ho_ten from DOCGIA dg join MUON m on dg.ND = m.ND where m.ngaymuon > CONVERT(datetime,'15/9/2007', 103) and m.ngaymuon < CONVERT(datetime,'20/9/2007', 103) ... SACH Group by NT) Q1 where tong >= 2) 17.Tính số tác phẩm tác giả select tacgia, count(*) as so_tac_pham from TACPHAM Group by tacgia 18.Tính số sách tác phẩm select tp.tua, Q1.tong_so_sach

Ngày đăng: 25/10/2021, 11:03

Từ khóa liên quan

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

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

Tài liệu liên quan