Bài tập Cơ sở dữ liệu SQL cơ bản có đáp án

15 14.5K 34
Bài tập Cơ sở dữ liệu SQL cơ bản có đáp án

Đ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

Bài tập SQL có đáp án gồm 4 câu với các câu hỏi cơ bản được sắp xếp từ dễ đến khó phù hợp với các bạn học CSDL. Các bạn sau khi tham khảo nên thử tối ưu lại câu truy vấn sao cho tốt nhất. Chúc các bạn thành công.

Bài tập SQL Đề bài: Câu 1: NCC(MSNCC, TênNCC, Địachỉ) MH(MSMH, TênMH, Màusắc) CC(MSNCC, MSMH, Giátiền) a. Đưa ra tên của những hãng có cung ứng ít nhất 1 mặt hàng màu đỏ b. Đưa ra mã số của các hãng có cung ứng ít nhất 1 mặt hàng màu đỏ hoặc 1 mặt hàng màu xanh c. Đưa ra mã số của hãng có cung ứng ít nhất 1 mặt hàng màu đỏ và 1 mặt hàng màu xanh d. Đưa ra mã số của hãng cung ứng tất cả các mặt hàng màu đỏ e. Đưa ra mã số của hãng cung ứng tất cả các mặt hàng màu đỏ và màu xanh f. Đưa ra mã số của hãng cung ứng tất cả các mặt hàng màu đỏ hoặc tất cả các mặt hàng màu xanh g. Lưu ý dùng toán tử UNION nó sẽ loại bỏ các bản ghi giống nhau. h. Đưa ra cặp mã số của hãng cung ứng sao cho hãng cung ứng tương ứng với mã số thứ nhất cung cấp một mặt hàng nào đó với giá cao hơn so với giá mà hãng tương ứng với mã số thứ hai cung cấp cũng mặt hàng đó i. Đưa ra mã số của mặt hàng được cung cấp bởi ít nhất hai hãng cung ứng j. Đưa ra mã số của mặt hàng đắt nhất được cung cấp bởi hãng Dustin k. Đưa ra mã số của mặt hàng được cung ứng bởi tất cả các hãng mà giá tiền đều nhỏ hơn 200. Câu 2: Nhânviên(MSNV, Họtên, Tuổi, Lương) Phòng(MSP, TênPhòng, Địađiểm, Ngânquỹ, MSTrưởngphòng) Làmviệc (MSNV, MSP, Thờigian) Câu 1: NCC(MSNCC, TênNCC, Địachỉ) MH(MSMH, TênMH, Màusắc) CC(MSNCC, MSMH, Giátiền) a. Đưa ra tên của những hãng có cung ứng ít nhất 1 mặt hàng màu đỏ SELECT TENNCC FROM NCC,CC, MH WHERE NCC.MSNCC=CC.MSNCC AND MH.MSMH=CC.MSMH AND MH.Màu sắc=N’đỏ’; b. Đưa ra mã số của các hãng có cung ứng ít nhất 1 mặt hàng màu đỏ hoặc 1 mặt hàng màu xanh c. SELECT MSNCC FROM NCC, CC, MH WHERE NCC.MSNCC=CC.MSNCC AND MH.MSMH=CC.MSMH AND (MH.Màu sắc=N’đỏ’ OR MH.Màu sắc=N’xanh’); d. Đưa ra mã số của hãng có cung ứng ít nhất 1 mặt hàng màu đỏ và 1 mặt hàng màu xanh SELECT MSNCC FROM CC, MH WHERE MH.MSMH=CC.MSMH AND MH.Màu sắc=N’đỏ’ AND MSNCC IN( SELECT MSNCC FROM CC C1,MH MH1 WHERE C1.MSMH=MH1.MSMH AND MH1.Màu sắc=N’xanh’; e. Đưa ra mã số của hãng cung ứng tất cả các mặt hàng màu đỏ SELECT MSNCC FROM CC, MH WHERE CC.MSMH=MH.MSMH AND MH.Màu sắc=’đỏ’ GROUP BY MSNCC HAVING COUNT(MSMH)=( SELECT COUNT(MSMH) FROM MH WHERE Màu sắc=N’đỏ’); f. Đưa ra mã số của hãng cung ứng tất cả các mặt hàng màu đỏ và màu xanh SELECT MSNCC FROM CC, MH WHERE CC.MSMH=MH.MSMH AND MH.Màu sắc=N’đỏ’ GROUP BY MSNCC HAVING COUNT(MSMH)=( SELECT COUNT(MSMH) FROM MH WHERE Màu sắc=N’đỏ’) INTERSECT SELECT MSNCC FROM CC, MH WHERE CC.MSMH=MH.MSMH AND MH.Màu sắc=N’xanh’ GROUP BY MSNCC HAVING COUNT(MSMH)=( SELECT COUNT(MSMH) FROM MH WHERE Màu sắc=N’xanh’); g. Đưa ra mã số của hãng cung ứng tất cả các mặt hàng màu đỏ hoặc tất cả các mặt hàng màu xanh h. Lưu ý dùng toán tử UNION nó sẽ loại bỏ các bản ghi giống nhau. SELECT MSNCC FROM CC, MH WHERE CC.MSMH=MH.MSMH AND MH.Màu sắc=N’đỏ’ GROUP BY MSNCC HAVING COUNT(MSMH)=( SELECT COUNT(MSMH) FROM MH WHERE Màu sắc=N’đỏ’) UNION SELECT MSNCC FROM CC, MH WHERE CC.MSMH=MH.MSMH AND MH.Màu sắc=N’xanh’ GROUP BY MSNCC HAVING COUNT(MSMH)=( SELECT COUNT(MSMH) FROM MH WHERE Màu sắc=N’xanh’); i. Đưa ra cặp mã số của hãng cung ứng sao cho hãng cung ứng tương ứng với mã số thứ nhất cung cấp một mặt hàng nào đó với giá cao hơn so với giá mà hãng tương ứng với mã số thứ hai cung cấp cũng mặt hàng đó j. SELECT MSNCC FROM CC C1, CC C2 WHERE C1.MSMH=C2.MSMH AND C1.GiaTri>C2.GIATRI; k. Đưa ra mã số của mặt hàng được cung cấp bởi ít nhất hai hãng cung ứng SELECT MSMH FROM CC GROUP BY MSMH HAVING COUNT(MSNCC)>2; l. Đưa ra mã số của mặt hàng đắt nhất được cung cấp bởi hãng Dustin SELECT MSMH FROM CC, NCC WHERE CC.MSNCC=NCC.MSNCC AND TENNCC=N’Dustin’ AND GIATRI>=ALL( SELECT GIATRI FROM CC,NCC WHERE CC.MSNCC=NCC.MSNCC AND TENNCC=N’Dustin’); m. Đưa ra mã số của mặt hàng được cung ứng bởi tất cả các hãng mà giá tiền đều nhỏ hơn 200. SELECT MSMH FROM CC WHERE GIATRI<200 GROUP BY MSMH HAVING COUNT(MSNCC)=( SELECT COUNT(MSNCC) FROM NCC); Câu 2: Nhânviên(MSNV, Họtên, Tuổi, Lương) Phòng(MSP, TênPhòng, Địađiểm, Ngânquỹ, MSTrưởngphòng) Làmviệc (MSNV, MSP, Thờigian) a. Đưa ra tên và tuổi của các nhân viên làm việc cho cả phòng Tổ chức và Kế hoạch Lưu ý dùng toán tử =ANY ý nghĩa giống với toán tử IN Dùng ANY thì không phải đặt tên lại như IN. SELECT HOTEN, TUOI FROM NV, LV, P WHERE NV.MSNV=LV.MSNV AND P.MSP=LV.MSP AND P.TENPHONG=N’Tổ chức’ AND NV.MSNV = ANY( SELECT NV.MSNV FROM NV, LV, P WHERE NV.MSNV=LV.MSNV AND P.MSP=LV.MSP AND P.TENPHONG=N’Kế hoạch’); b. Với mỗi phòng với trên 20 nhân viên, hãy đưa ra mã số phong và số nhân viên làm trong phòng đó SELECT MSP, COUNT(MSNV) FROM P, NV, LV WHERE P.MSP=LV.MSP AND NV.MSNV=LV.MSNV GROUP BY MSP HAVING COUNT(MSNV)>20; c. Đưa ra tên của các nhân viên mà lương của họ cao hơn cả ngân quỹ của tất cả các phòng mà nhân viên đó làm việc d. SELECT HOTEN FROM NV, P ,LV WHERE NV.MSNV=LV.MSNV AND P.MSP=LV.MSP AND LUONG >= MAX(NGANQUY); e. Đưa ra mã số trưởng phòng của những người trưởng phòng mà các phòng họ quản lý đều có ngân quỹ > 1,000,000 SELECT MS_TRUONGPHONG FROM P GROUP BY MS_TRUONGPHONG HAVING MIN(NGANQUY)>1000000; f. Đưa ra tên của người trưởng phòng mà phòng đó có ngân quỹ lớn nhất SELECT HOTEN FROM NV, P WHERE P.MS_TRUONGPHONG=NV.MSNV AND NGANQUY>=ALL( SELECT MAX(NGANQUY) FROM P); g. Nếu một người có thể quản lý nhiều phòng, người đó có quyền kiểm soát ngân quỹ của tất cả các phògn đó. Hãy đưa ra mã số của người trưởng phòng mà tổng số ngân quỹ được kiểm soát bởi người đó > 5,000,000 SELECT MS_TRUONGPHONG FROM P GROUP BY MS_TRUONGPHONG HAVING SUM(NGANQUY)>5000000; Câu 3: Nhânviên(MãNV, Họtên, Ngày sinh, MãP) Phòng(MãP, TênP, Địađiểm, SốĐT) Dự án(MãDA, TênDA, Ngân sách) Thamgia(MãNV, MãDA, Sốgiờthamgia) a. Đưa ra tên của các dự án có ngân sách nằm trong khoảng từ 50,000 đến 100,000 SELECT TENDA FROM DA WHERE NGANSACH>50000 AND NGANSACH<100000; b. Đưa ra họ tên của các nhân viên có tham gia làm dự án “Quản lý đào tạo” SELECT HOTEN FROM NV, TG, DA WHERE NV.MANV=TG.MANV AND DA.MADA=TG.MADA AND TENDA=N’Quản lý đào tạo’; c. Đưa ra mã số của các nhân viên tham gia cả hai dự án “Quản lý đào taọ” và “Đào tạo từ xa” SELECT MANV FROM TG, DA WHERE TG.MADA=DA.MADA AND TENDA=N’Quản lý đào tạo’ AND MANV = ANY( SELECT MANV FROM TG, DA WHERE TG.MADA=DA.MADA AND TENDA=N’Đào tạo từ xa’); d. Đưa ra mã số của các nhân viên tham gia dự án “Quản lý đào tạo” nhưng không tham gia dự án “Đào tạo từ xa” SELECT MSNV FROM TG, DA WHERE TG.MSDA=DA.MSDA AND TENDA=N’Quản lý đào tạo’ MINUS SELECT MSNV FROM TG, DA WHERE TG.MSDA=DA.MSDA AND TENDA=N’Đào tạo từ xa’ e. Đưa ra mã số của phòng không có nhân viên nào tham gia dự án [...]... TG.MADA=DA.MADA AND NV.MANV=N’NV001’ GROUP BY MANV; h i j k Có bao nhiêu nhân viên tham gia dự án Quản lý đào tạo? SELECT COUNT(MANV) FROM TG, DA WHERE TG.MADA=DA.MADA AND TENDA=N’Quản lý đào tạo’; Hãy đưa ra tên của các dự án mà số nhân viên tham gia dự án đó < 10 SELECT TENDA FROM TG, DA WHERE TG.MADA=DA.MADA GROUP BY TENDA HAVING COUNT(MANV) . Bài tập SQL Đề bài: Câu 1: NCC(MSNCC, TênNCC, Địachỉ) MH(MSMH, TênMH, Màusắc) CC(MSNCC, MSMH, Giátiền) a. Đưa ra tên của những hãng có cung ứng ít nhất 1 mặt hàng. Đưa ra mã số của phòng không có nhân viên nào tham gia dự án SELECT MSP FROM P MINUS SELECT MSP FROM NV, P, TG WHERE NV.MANV=TG.MANV AND NV.MAP=P.MAP f. Dự án nào có tất cả các nhân viên của. Ngày sinh, MãP) Phòng(MãP, TênP, Địađiểm, SốĐT) Dự án( MãDA, TênDA, Ngân sách) Thamgia(MãNV, MãDA, Sốgiờthamgia) a. Đưa ra tên của các dự án có ngân sách nằm trong khoảng từ 50,000 đến 100,000 SELECT

Ngày đăng: 12/11/2014, 18:44

Từ khóa liên quan

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

Tài liệu liên quan