Câu hỏi ôn tập SQL

doc 10 trang phuongnguyen 9860
Bạn đang xem tài liệu "Câu hỏi ôn tập SQL", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • doccau_hoi_on_tap_sql.doc

Nội dung text: Câu hỏi ôn tập SQL

  1. 1. Câu lệnh SQL nào sau đây dùng để xóa cả cấu trúc và dữ liệu của bảng có tên là STUDENT? a) DROP TABLE STUDENT b) DELETE TABLE STUDENT c) REMOVE TABLE STUDENT d) DELETE FROM STUDENT 2. Câu lệnh SQL nào sau đây dùng để loại bỏ chỉ dữ liệu từ bảng có tên là STUDENT, trong khi để lại nguyên vẹn cấu trúc bảng? a) DROP TABLE STUDENT b) DELETE TABLE STUDENT c) REMOVE TABLE STUDENT d) DELETE FROM STUDENT 3. Từ khóa SQL nào dùng để loại bỏ các hàng trùng lặp trong kết quả của một truy vấn SQL SELECT? a) UNIQUE b) SORT c) ORDER BY d) DISTINCT 4. Câu truy vấn nào hiển thị tổng số dòng dữ liệu có trong bảng emp? a. Select rowcount from emp b. Select totalrows from emp c. Select count(*) from emp d. Select count_rows from emp 5. Mệnh đề ___ được dùng để nhóm các record giống nhau lại với nhau? a. GROUP BY b. HAVING c. WHERE d. ORDER BY 6. Để hiển thị lương nhân viên sau khi tăng 10% từ bảng employee, ta viếtcâu lệnh ___? a. Select emp_code, basic*.10 from employee order by emp_code b. Select emp_code, basic+basic*.01 from employee order by emp_code c. Select emp_code, basic+10 from employee order by emp_code d. Select emp_code, basic+basic*.10 from employee order by emp_code 7. Chỉ hiển thị các customer có số điện thoại a. SELECT * from customer where phone IS NOT NULL b. SELECT * from customer where phone = NOT NULL c. SELECT * from customer where phone NOT NULL d. SELECT * from customer where HAVING phone NOT NULL
  2. 8. Phát biểu nào sau đây là đúng khi nói về hàm COUNT(*)? a. Nó có thể truyền một tham số b. Nó trả về số các dòng khác nhau sử dụng từ khóa DISTINCT c. Nó trả về số các dòng kể cả dòng có chứa giá trị NULL d. Nó trả về số các dòng bỏ qua các dòng có chứa giá trị NULL 9. Khi thiết kế bảng, bạn đặt trường Emp_id làm khóa chính. Toàn vẹn dữ liệu nào hỗ trợ cho trường hợp này? a. Tòan vẹn thực thể b. Toàn vẹn tham chiếu c. Toàn vẹn miền d. Tòan vẹn do người dùng định nghĩa 10. Update Products set UnitPrice = UnitPrice + (UnitPrice * .10) where UnitPrice between 60 and 70 Kết quả của câu lệnh trên là? a. Tăng 10% giá (UnitPrice) trong bảng Products, cho những sản phẩm có giá là 60 hoặc 70 b. Tăng 10% giá (UnitPrice) trong bảng Products, cho những sản phẩm có giá từ 60 đến 70 c. Tăng 10% giá (UnitPrice) trong bảng Products, cho những sản phẩm có giá từ 60 đến 70, không kể 2 giá trị 60 và 70 d. Tất cả các phương án điều sai. 11. Cho lược đồ cơ sở dữ liệu sau: SINHVIEN(MaSV, HoSV, TenSV, Phai, NgaySinh, DiaChi, DienThoai, MaLop) LOP(MaLop, TenLop, MaKhoa, GVCN) KETQUA(MaSV, MaMH, LanThi, Diem) MONHOC(MaMH, TenMH, SoTinChi) Liệt kê danh sách các sinh viên gồm (MaSV, HoSV, TenSV) có điểm thi môn CSDL cao nhất? a) Select K.MaSV, HoSV, TenSV From SinhVien S, KetQua K Where S.MASV=K.MASV And MaMH='CSDL' And Diem>=ALL(Select Diem From KetQua where MaMH ='CSDL') b) Select K.MaSV, HoSV, TenSV From SinhVien S, ketqua K Where S.MASV=K.MASV And MaMH='CSDL' And Diem=(Select max(Diem) From ketqua where MaMH ='CSDL') c) Select top 1 with ties K.MaSV, HoSV, TenSV
  3. From SinhVien S, KetQua K Where S.MASV=K.MASV And MaMH='CSDL' order by diem desc d) Tất cả các phương án trên. 12. Câu lệnh truy vấn nào sau đây là sai cú pháp? a) SELECT ProductName FROM products WHERE (UnitPrice 5) b) SELECT ProductName FROM products WHERE (UnitPrice 5) c) SELECT ProductName FROM products WHERE UnitPrice 5 d) SELECT ProductName FROM products WHERE UnitPrice 5 13. Cho 1 bảng với cấu trúc sau: NhanVien(MaNV, TenNV, Luong, NgayBatDauVaoLam) hãy tạo câu truy vấn SQL để tìm nhân viên có lương cao nhất. a) SELECT * FROM NhanVien ORDER BY Luong DESC; b) SELECT top 1 * FROM NhanVien ORDER BY Luong; c) SELECT top 1 * FROM NhanVien ORDER BY Luong DESC; d) SELECT top 1 * FROM NhanVien; 14. Cho 1 bảng với cấu trúc sau: NhanVien(MaNV, TenNV, Luong, NgayBatDauVaoLam), Tạo câu truy vấn SQL để tìm tất cả các nhân viên bắt đầu vào làm việc trong năm 2005? a) SELECT * FROM NhanVien WHERE NgayBatDauVaoLam=2005; b) SELECT * FROM NhanVien WHERE NgayBatDauVaoLam>='01/01/2005'; c) SELECT * FROM NhanVien
  4. WHERE year(NgayBatDauVaoLam)=2005; d) SELECT * FROM NhanVien WHERE NgayBatDauVaoLam 'CNTT" b) SELECT * FROM SinhVien GROUP BY ChuyenNganh HAVING ChuyenNganh <> 'CNTT" c) SELECT * FROM SinhVien WHERE MaSV NOT IN (SELECT MaSV FROM SinhVien WHERE ChuyenNganh = 'CNTT') d) SELECT * FROM SinhVien WHERE MaSV NOT IN (SELECT MaSV FROM SinhVien Having ChuyenNganh = 'CNTT') 18. Cho bảng SinhVien(MaSV,TenSV,ThanhPho,ChuyenNganh) với khóa chính là [Masv, ChuyenNganh]. Các sinh viên có thể học nhiều chuyên ngành khác nhau.
  5. Cho câu lệnh SELECT của SQL sau: Select MaSV, ChuyenNganh From SinhVien GROUP BY ChuyenNganh HAVING ThanhPho='VungTau' Chọn câu trả lời đúng? a) Câu lệnh trên bị lỗi b) Trả về danh sách gồm MaSV, ChuyenNganh của các sinh viên có thành phố là VungTau c) Trả về một bảng gồm các chuyên ngành của từng sinh viên d) Trả về 1 dòng gồm MaSV, ChuyenNganh của sinh viên có thành phố là VungTau 19. Cho các bảng sau: KhachHang (MaKH, TenKH, ThanhPho) SanPham(MaSP, TenSP, SoLuong, DonGia) DaiLy (MaDL, TenDL, ThanhPho, HueHong) DatHang (MaDH, NgayDH, MaKH, MaDL, MaSP, SoLuong, ThanhTien). Chọn câu lệnh SQL để giải quyết câu truy vấn sau: Tăng giá cuả mỗi sản phẩm trong bảng SanPham lên 10% cho tất cả các sản phẩm mà khách hàng 'C01' đặt mua. a) Update SanPham set DonGia= DonGia * 1.1 where DatHang.MaKH = 'C01' b) Update SanPham, DatHang set SanPham.DonGia = SanPham.DonGia * 10% where DatHang.MaKH = 'C01' c) Update SanPham set DonGia = 1.1 * DonGia where MaSP in (select MaSP from DatHang where MaKH = 'C01') d) Update SanPham set DonGia = 0.1 * DonGia where MaSP in (select MaSP from DatHang where MaKH = 'C01') 20. Cho các lựơc đồ quan hệ sau: NhaCungCap(MaNCC,TenNCC,ThanhPho) SanPham(MaSP,TenSP,Mau) CungCap(MaNCC,MaSP,SoLuong) Hãy cho biết ý nghĩa của lệnh truy vấn sau: Select TenNCC From NhaCungCap X Where Not Exists (Select * From CungCap Y Where X.MaNCC = Y.MaNCC) a) Trả về tên cuả nhà cung cấp mà không tồn tại trong cơ sở dữ liệu b) Trả về tên cuả nhà cung cấp mà không cung cấp bất kỳ sản phẩm nào c) Trả về tên cuả nhà cung cấp mà không cung cấp tất cả các sản phẩm d) Không có chọn lựa nào đúng
  6. 21. Cho CSDL gồm các bảng sau: SinhVien(MaSV,TenSV,DiaChi,MaKhoaHoc) KetQua(MaSV,MaMH,Diem) MonHoc(MaMH,TenMH) Cho câu truy vấn SQL sau: SELECT TenSV, MaMH FROM SinhVien s,KetQua k ON s.MaSV =k.MaSV WHERE Diem is null Ý nghĩa của lệnh truy vấn trên? a) Câu truy vấn trên không hợp lệ. b) Nếu sinh viên nào bị trùng tên thì không in ra kết quả. c) Liệt kê danh sách các sinh viên cùng với mã môn học mà sinh viên đó chưa có điểm d) Liệt kê danh sách các sinh viên chưa có điểm thi bất kỳ môn nào 22. Cho lược đồ Cơ sở dữ liệu sau: SinhVien(MaSV, HoSV, TenSV, Phai, NgaySinh, DiaChi, DienThoai, MaLop) Lop(MaLop, TenLop, MaKhoa, GVCN) KetQua(MaSV, MaMH, LanThi, Diem) MonHoc(MaMH, TenMH, SoTinChi) Viết lệnh để hiển thị danh sách lớp gồm 3 cột sau : MaLop, TenLop và SiSo a) Select S.Malop,TenLop,SiSo=Sum(MaSV) From Lop L, SinhVien S Group by S.Malop,TenLop b) Select S.Malop,TenLop,SiSo=Sum(MaSV) From Lop L, SinhVien S Where L.Malop=S.MaLop Group by S.Malop,TenLop c) Select S.Malop,TenLop,SiSo=Count(MaSV) From Lop L, SinhVien S Where L.Malop=S.MaLop Group by S.Malop,TenLop d) Select S.Malop,TenLop,SiSo=Count(SinhVien) From Lop L, SinhVien S Where L.Malop=S.MaLop Group by S.Malop,TenLop 23. Cho lược đồ CSDL gồm các bảng sau:
  7. KhachHang(MaKH, TenKH, ThanhPho) SanPham(MaSP, TenSP, SoLuong, DonGia) DaiLy (MaDL, TenDL, ThanhPho, HueHong) DatHang(MaDH, NgayDH, MaKH, MaDL, MaSP, SoLuong, ThanhTien) Hãy viết lệnh liệt kê tên các sản phẩm có nhiều hơn 2 khách hàng đặt mua . a) Select TenSP from SanPham where MaSP in (select MaSP from DatHang where MaKH = 'c01' and MaKH = 'c02') b) Select TenSP from SanPham where MaSP in (select o1.MaSP from DatHang o1, DatHang o2 where o1.MaKH = 'c01' and o2.MaKH = 'c02' and o1.MaSP = o2.MaSP) c) Select TenSP from SanPham p, DatHang o1, DatHang o2 where p.MaSP = o1.MaSP and p.MaSP = o2.MaSP d) Select distinct TenSP from SanPham p, DatHang o1, DatHang o2 where p.MaSP = o1.MaSP and p.MaSP = o2.MaSP and o1.MaKH <> o2.MaKH 24. Cho lược đồ quan hệ gồm: NhaCungCap(MaNCC,TenNCC,ThanhPho) HangHoa(MaHang,TenHang,MauSac) CungUng(MaNCC,MaHang,SoLuong) Tạo câu truy vấn SQL để tính tổng số lượng của từng sản phẩm đã được cung ứng? a) Select MaHang,sum(SoLuong) From CungUng Group By MaHang; b) Select MaNCC, MaHang, sum(SoLuong) From HangHoa H, CungUng C Where H.MaHang = C.MaHang Group by MaNCC, MaHang; c) Select MaHang,SoLuong From CungUng; d) Select sum(SoLuong) From CungUng; 25. Cho lược đồ quan hệ gồm: PhongBan(MaPB,TenPB,NganSach) NhanVien(MaNV,TenNV,ThanhPho,Luong,MaPB) Hãy tạo câu truy vấn sau: Liệt kê tên các phòng ban có ngân sách ít hơn tổng tiền lương cuả các nhân viên làm việc trong phòng ban đó? a) Select TenPB From PhongBan P, NhanVien N Where N.MaPB=P.MaPB AND NganSach <Luong b) Select TenPB From PhongBan P Where NganSach< (Select sum(Luong) From NhanVien N Where N.MaPB = P.MaPB) c) Select TenPB From PhongBan Where NganSach< (Select sum(Luong) From NhanVien)
  8. d) Select TenPB From PhongBan P, NhanVien N Where N.MaPB=P.MaPB AND NganSach S2.SoLuong; d) Select Distinct MaNCC From CungUng Where SoLuong> 35; 28. Điều kiện để 2 bảng có thể kết (join) với nhau là: a) Hai bảng phải có cùng số cột. b) Hai bảng phải có chung giá trị trong các dòng. c) Hai bảng phải có chung ít nhất một cột. d) Hai bảng phải có khóa chính. 29. Gỉa sử bảng Employee có n dòng dữ liệu (n>1). Hãy cho biết kết quả lệnh truy vấn sau có bao nhiêu dòng? SELECT e1.name, e2.name FROM employee e1, employee e2 a) 0 b) > n c) n d) < n 30. Không có mệnh đề Where trong một câu lệnh Delete có ảnh hưởng gì? a) Câu lệnh Delete sẽ lỗi do không có dòng nào được xóa. b) Câu lệnh Delete sẽ thông báo cho người sử dụng nhập điều kiện để xóa. c) Câu lệnh Delete sẽ xóa tất cả các mẩu tin trong bảng. d) Câu lệnh Delete sẽ lỗi do sai cú pháp.
  9. 31. Một bảng có n dòng và có một khoá duy nhất (unique key). Giả sử trong 1 dòng của bảng, khoá có giá trị null. Nếu 1 lệnh truy vấn thực hiện một phép kết bằng trên bảng này với chính nó thông qua khoá duy nhất này. Kết quả cuả câu truy vấn trả về bao nhiêu dòng? a) ít hơn n dòng. b) Nhiều hơn n dòng. c) không có dòng nào cả. d) n dòng 32. Cho lược đồ quan hệ sau: SinhVien (MaSV, HoSV, TenSV, DiaChi, ThanhPho,MaVung) Dựa vào lược đồ quan hệ trên, thay đổi mã vùng cuả sinh viên ở Tp.HCM thành 08? a) Update SinhVien Set MaVung='08' Where ThanhPho='Tp.HCM' b) Update MaVung='08' Where ThanhPho='Tp.HCM' c) Update SinhVien Where ThanhPho='Tp.HCM' And MaVung='08' d) Tất cả các phương án trên. 33. Trong lệnh cập nhật dữ liệu UPDATE, nếu ta không dùng mệnh đề WHERE thì: a) Sẽ không thực hiện lệnh cập nhật b) Chỉ một số dòng được cập nhật c) Không có dòng nào được cập nhật d) Tất cả các dòng sẽ được cập nhật 34. Cho câu lệnh SQL: SELECT count(SOHD) FROM HOADON GROUP BY NGAYXUAT; Câu lệnh này sẽ cho kết quả: a) Số hóa đơn tương ứng với ngày xuất b) Tổng số hóa đơn c) Số lượng hóa đơn xuất ra theo ngày d) Câu lệnh không đúng 35. Cho câu truy vấn sau: SELECT E.EMPLOYEE_NAME, P.PAYSCALE FROM EMPLOYEES E WHERE 500>ALL(SELECT P.BONUSPAY FROM PAYLIST P WHERE P.EMPLOYEEID = E.EMPLOYEE_ID); Câu truy vấn trên sai ở điểm nào: a) Câu lệnh SELECT không thể lấy cột PAYSCALE
  10. b) Subquery không thể trả về nhiều dòng c) Subquery không thể truy cập dữ liệu ở bảng EMPLOYEES d) Không có lỗi nào. 36. Cho quan hệ Cungcap MaNCC Mahang Soluong 101 1 20 101 2 30 102 1 14 103 4 21 104 4 10 105 1 5 Kết quả câu truy vấn SQL : Select Mahang From Cungcap Group By Mahang Having Count(*) = (Select Max(Count(*)) From Cungcap Group By Mahang) a) 1 b) 2 c) 3 d) 4