Đề thi SQL Server
Câu 1. Câu lệnh tạo bảng nào dưới đây là ĐÚNG:
a) CREATE TABLE VatTu
(mavt CHAR(4) NOT NULL,
tenvt VARCHAR(30),
phantram TINYINT
CONSTRAINT PRK_VatTu_mavt PRIMARY KEY(mavt),
CONSTRAINT DEF_VatTu_phantram DEFAULT 20 FOR phantram)
b) CREATE TABLE VatTu
(mavt CHAR(4) NOT NULL,
tenvt VARCHAR(30),
phantram TINYINT
CONSTRAINT DEF_VatTu_phantram DEFAULT 20 FOR phantram
CONSTRAINT PRK_VatTu_mavt PRIMARY KEY(mavt))
c) CREATE TABLE VatTu
(mavt CHAR(4) NOT NULL,
tenvt VARCHAR(30),
phantram TINYINT
CONSTRAINT DEF_VatTu_phantram DEFAULT 20
CONSTRAINT PRK_VatTu_mavt PRIMARY KEY(mavt))
d) CREATE TABLE VatTu
(mavt CHAR(4) NOT NULL,
tenvt VARCHAR(30),
phantram TINYINT,
CONSTRAINT DEF_VatTu_phantram DEFAULT 20
CONSTRAINT PRK_VatTu_mavt PRIMARY KEY(mavt))
FROM Ket_Qua kq INNER JOIN Sinh_Vien sv ON kq.masv=sv.masv WHERE makh='TH' GROUP BY kq.masv ORDER BY AVG(diem) DESC) GROUP BY kq.masv,ho,ten SELECT kq.masv,ho,ten,AVG(diem) FROM Ket_Qua kq INNER JOIN Sinh_Vien sv ON kq.masv=sv.masv GROUP BY kq.masv,ho,ten HAVING AVG(diem) IN ( SELECT TOP 1 AVG(diem) FROM Ket_Qua kq INNER JOIN Sinh_Vien sv ON kq.masv=sv.masv WHERE makh='TH' GROUP BY kq.masv ORDER BY AVG(diem) DESC) SELECT kq.masv,ho,ten,AVG(diem) FROM Ket_Qua kq INNER JOIN Sinh_Vien sv ON kq.masv=sv.masv WHERE makh='TH' GROUP BY kq.masv,ho,ten HAVING AVG(diem) IN ( SELECT TOP 1 AVG(diem) FROM Ket_Qua kq INNER JOIN Sinh_Vien sv ON kq.masv=sv.masv WHERE makh='TH' GROUP BY kq.masv ORDER BY AVG(diem) DESC) Các câu a, b và c đều đúng Xét bảng PHIEU_NHAP(sopn, ngaynhap) có các mẩu tin sau: Phieu_Nhap Sopn Ngaynhap N001 2004-04-01 N002 2004-04-03 N003 2004-04-10 N004 2004-05-01 N005 2004-05-01 Để lọc ra các phiếu nhập phát hành trong tháng 4/2004 thì câu lệnh nào dưới đây sẽ lọc có dữ liệu: SELECT * FROM Phieu_Nhap WHERE CONVERT(CHAR(6),ngaynhap,112)='2004-04' SELECT * FROM Phieu_Nhap WHERE CONVERT(CHAR(6),ngaynhap,112)='200404' SELECT * FROM Phieu_Nhap WHERE CONVERT(CHAR(7),ngaynhap,112)='2004-04' SELECT * FROM Phieu_Nhap WHERE CONVERT(CHAR(6),ngaynhap,12)='200404' Để tính tổng các số nguyên từ 1 đến 10 bằng cách sử dụng vòng lặp WHILE. Xét đoạn lệnh dưới đây: DECLARE @i INT, @tong INT SET @i=1 SET @tong=0 WHILE @i<=10 SET @tong=@tong+@i SET @i=@i+1 PRINT @tong Trong các trường hợp thì trường hợp nào dưới đây là ĐÚNG: Kết quả in ra của biến @tong là: 55 Kết quả in ra của biến @tong là: 0 Kết quả in ra của biến @tong là: 1 Vòng lặp không bao giờ dừng Xét các bảng Sinh_Vien và Khoa Để thống kê tổng số sinh viên trong khoa chưa có học bổng (cột hocbong=0) thì câu lệnh nào sau đây là đúng SELECT Khoa.makh, tenkh, Count(*) as dem FROM Sinh_Vien Inner Join Khoa On Sinh_Vien.makh = Khoa.makh WHERE hocbong = 0 GROUP BY Khoa.makh, tenkh SELECT Khoa.makh, tenkh, Count(*) as dem FROM Sinh_Vien Inner Join Khoa On Sinh_Vien.makh = Khoa.makh WHERE hocbong > 0 GROUP BY Khoa.makh, tenkh SELECT Khoa.makh, tenkh, Count(*) as dem FROM Sinh_Vien Inner Join Khoa On Sinh_Vien.makh = Khoa.makh GROUP BY Khoa.makh, tenkh WHERE hocbong = 0 SELECT Khoa.makh, tenkh, Count(*) as dem FROM Sinh_Vien Inner Join Khoa On Sinh_Vien.makh = Khoa.makh GROUP BY Khoa.makh, tenkh HAVING hocbong=0 Xét bảng Sinh_Vien Sinh_Vien MaSV Ho Ten MaKH A01 Nguyen Van Hung AV A02 Tran Thi Tuyet AV B01 Le Van Nghia TH B02 Hoang Ngoc Phuong TH C01 Truong Thi Chau TR C02 Mai Tu Phuong TR Câu lệnh: SELECT masv, ho, ten, makh FROM Sinh_Vien WHERE makh IN (SELECT makh FROM Sinh_Vien WHERE masv IN (SELECT masv FROM Sinh_Vien WHERE ten = ’Phuong’)) Kết quả nào dưới đây là ĐÚNG khi thực hiện câu lệnh trên MaSV Ho Ten MaKH C01 Truong Thi Chau TR C02 Mai Tu Phuong TR MaSV Ho Ten MaKH B01 Le Van Nghia TH B02 Hoang Ngoc Phuong TH MaSV Ho Ten MaKH B02 Hoang Ngoc Phuong TH C02 Mai Tu Phuong TR MaSV Ho Ten MaKH B01 Le Van Nghia TH B02 Hoang Ngoc Phuong TH C01 Truong Thi Chau TR C02 Mai Tu Phuong TR Xét các bảng Sinh_Vien và Khoa Sinh_Vien MaSV Ho Ten MaKH Nam A01 Nguyen Van Hung AV 1 A02 Tran Thi Tuyet AV 0 B01 Le Van Nghia TH 1 B02 Hoang Ngoc Phuong TH 0 Khoa MaKH TenKH AV Anh van TH Tin hoc Câu lệnh: SELECT Khoa.makh, tenkh, Count(*) as dem FROM Sinh_Vien Inner Join Khoa On Sinh_Vien.makh = Khoa.makh WHERE nam=1 GROUP BY Khoa.makh, tenkh UNION SELECT Khoa.makh, tenkh, Count(*) as dem FROM Sinh_Vien Inner Join Khoa On Sinh_Vien.makh = Khoa.makh WHERE nam=0 GROUP BY Khoa.makh, tenkh Kết quả nào dưới đây là ĐÚNG khi thực hiện câu lệnh trên MaKH TenKH Dem AV Anh van 4 MaKH TenKH Dem AV Anh van 2 TH Tin hoc 2 MaKH TenKH Dem AV Anh van 1 TH Tin hoc 1 AV Anh van 1 TH Tin hoc 1 MaKH TenKH Dem AV Anh van 1 TH Tin hoc 1 Xét bảng Sinh_Vien Khoa MaKH TenKH AV Anh van TH Tin hoc Giả sử bảng Sinh_Vien là bảng rỗng Câu lệnh: INSERT INTO Sinh_Vien (masv, ho, ten, nam, makh) VALUES (’A01’, ’Le Van’, ’Nghia’, 1, ’av’) Khi thực hiện câu lệnh trên thì xảy ra lỗi. Chọn các nguyên nhân có thể gây ra lỗi (chọn 2 câu ĐÚNG) Giá trị của cột hocbong không cho phép NULL Trùng mã sinh viên Mã khoa phải là chữ HOA. Ví dụ là AV Giá trị của cột hocbong bắt buộc phải là một số dương và không cho phép NULL Câu lệnh ALTER TABLE khi sử dụng để thao tác với các CONSTRAINT thì không thể: (chọn 2 câu ĐÚNG) Thêm hoặc xoá các constraint Bật hay tắt chế độ kiểm tra dữ liệu trên contraint Đổi tên một constraint Xác định thứ tự các constraint mà SQL sẽ dùng để kiểm tra dữ liệu Chọn lệnh để định nghĩa kiểu dữ liệu mới có tên DiaChi, DiaChi dùng để khai báo những biến có thể chứa tối đa 100 ký tự và KHÔNG cho phép Null. sp_addtype DiaChi, 'varchar(0..100)', 'Not Null' sp_addtype DiaChi, 'varchar(100)', 'Not Null' sp_addtype DiaChi, 'varchar()', 'Not Null' sp_addtype DiaChi, 'varchar(100)' Giá trị Null trong cột của biểu thức ON được xử lý thế nào khi tiến hành JOIN hai bảng Các dòng có chứa giá trị NULL của bảng này chỉ kết hợp các dòng có giá trị NULL ở bảng còn lại Các dòng có chứa giá trị NULL sẽ không được trả về trừ khi sử dụng OUTER JOIN Các dòng có chứa giá trị NULL của bảng này kết hợp với tất cả các dòng bảng còn lại Các dòng có chứa giá trị NULL của bảng này không kết hợp được với bất cứ dòng nào ở bảng còn lại Để tạo bảng lưu VatTu_BK từ bảng VatTu. Chọn câu lệnh ĐÚNG: SELECT * FROM VatTu INTO VatTu_BK CREATE TABLE VatTu_BK FROM VatTu CREATE TABLE VatTu_BK AS SELECT * FROM VatTu SELECT * INTO VatTu_BK FROM VatTu Hàm Fetch_Status dùng để xác định trạng thái sau khi đọc mẩu tin trong cursor. Chọn các phát biểu ĐÚNG (chọn 2 câu ĐÚNG): Trả về 0 nếu đọc thành công Trả về 0 nếu đọc không thành công Trả về -1 nếu đọc không thành công (giá trị duy nhất) Trả về -1 hoặc -2 nếu đọc không thành công (nhiều giá trị) Để đổi từ mã ASCII sang ký tự. Chọn phát biểu ĐÚNG: Hàm ASCII Hàm CHR Hàm CHAR Các câu a, b và c đều đúng Xét bảng KHOA(makh CHAR(2), tenkh CHAR(100)) Khai báo cursor c_khoa với các lệnh sau: DECLARE c_khoa CURSOR SCROLL DYNAMIC FOR SELECT makh FROM KHOA FOR UPDATE Cho biết phát biểu nào dưới đây là ĐÚNG Trên cursor cho phép cập nhật makh và tenkh Trên cursor không cho phép cập nhật makh và tenkh Trên cursor chỉ cho phép cập nhật makh Trên cursor chỉ cho phép cập nhật tenkh Để khai báo một cursor sử dụng cho việc đọc dữ liệu theo một chiều đi tới thì từ khoá nào khai báo dưới đây là ĐÚNG: FORWARD SCROLL SCROLL_LOCK FORWARD_ONLY Chọn câu lệnh thích hợp để xuất ra cửa sổ kết quả của Query Analyzer chuỗi có dạng sau (lưu ý giá trị 17/06/2004 là ngày hiện hành khi thực thi câu lệnh): Ngay hien hanh la: 17/06/2004 print 'Ngay hien hanh la: ' + convert(char(10),date(),103) print 'Ngay hien hanh la: ' + convert(char(10),getdate(),103) print 'Ngay hien hanh la: ' + convert(getdate(),103) print 'Ngay hien hanh la: ' + getdate() Giả sử bảng KHOA là bảng rỗng. Xét giao tác sau: BEGIN TRAN INSERT INTO Khoa (makh,tenkh) VALUES ('AV','Khoa Anh') INSERT INTO Khoa (makh,tenkh) VALUES ('TH','Khoa Tin hoc') SAVE TRAN sp_1 INSERT INTO Khoa (makh,tenkh) VALUES ('LY','Khoa Vat ly') ROLLBACK TRAN sp_1 COMMIT TRAN Cho biết kết quả nào dưới đây là ĐÚNG khi kết thúc giao tác trên và thực hiện lệnh SELECT makh FROM Khoa: AV, TH, LY AV, TH LY Các câu a, b và c đều sai Xét bảng KHOA(makh, tenkh) là bảng rỗng và cột tenkh cho phép NULL Giả sử trigger thêm trên bảng KHOA được tạo bởi các lệnh sau: CREATE TRIGGER tg_Khoa_Insert ON Khoa FOR INSERT AS DECLARE @tenkh VARCHAR(50) SELECT @tenkh=tenkh FROM INSERTED IF ISNULL(@tenkh,'') = '' BEGIN ROLLBACK TRAN RAISERROR('Tên khoa không được rỗng',16,1) RETURN END Cho biết trường hợp nào dưới đây là ĐÚNG: INSERT INTO Khoa (makh,tenkh) VALUES(‘00’,’’) thực hiện thành công INSERT INTO Khoa (makh,tenkh) VALUES(‘00’,NULL) thực hiện thành công Các câu a, b đều thực hiện thành công Các câu a, b đều thực hiện KHÔNG thành công Xét bảng KHOA(makh, tenkh) là bảng rỗng và cột tenkh cho phép NULL Giả sử trigger thêm trên bảng KHOA được tạo bởi các lệnh sau: CREATE TRIGGER tg_Khoa_Insert ON Khoa FOR INSERT AS DECLARE @tenkh VARCHAR(50) SELECT @tenkh=tenkh FROM INSERTED IF @tenkh = NULL OR @tenkh = ‘’ BEGIN ROLLBACK TRAN RAISERROR('Tên khoa không được rỗng',16,1) RETURN END Cho biết câu lệnh INSERT nào dưới đây là ĐÚNG (thực hiện thành công) INSERT INTO Khoa (makh,tenkh) VALUES(‘00’,’’) INSERT INTO Khoa (makh,tenkh) VALUES(‘00’,NULL) Các câu a, b đều thực hiện thành công Các câu a, b đều thực hiện KHÔNG thành công Giả sử bảng KHOA là bảng rỗng và có cấu trúc: KHOA(makh,tenkh). Xét giao tác sau: BEGIN TRAN Cap1 INSERT INTO Khoa (makh,tenkh) VALUES ('AV','Khoa Anh') BEGIN TRAN Cap2 INSERT INTO Khoa (makh,tenkh) VALUES ('LY','Khoa Vat ly') COMMIT TRAN Cap2 ROLLBACK TRAN Cap1 Cho biết kết quả nào dưới đây là ĐÚNG khi thực hiện lệnh SELECT makh FROM Khoa: AV, LY AV LY Bảng KHOA vẫn là bảng rỗng Xét bảng KHOA(makh CHAR(2), tenkh CHAR(100)) Khai báo cursor c_khoa với các lệnh sau: DECLARE c_khoa CURSOR SCROLL DYNAMIC FOR SELECT makh FROM KHOA FOR UPDATE Cho biết phát biểu nào dưới đây là ĐÚNG Trên cursor cho phép cập nhật makh và tenkh Trên cursor không cho phép cập nhật makh và tenkh Trên cursor chỉ cho phép cập nhật makh Trên cursor chỉ cho phép cập nhật tenkh Để khai báo một cursor sử dụng cho việc đọc dữ liệu theo một chiều đi tới thì từ khoá nào khai báo dưới đây là ĐÚNG: FORWARD SCROLL SCROLL_LOCK FORWARD_ONLY Bảng INSERTED được sử dụng trong các loại Trigger nào dưới đây? (chọn 2 câu ĐÚNG) Trigger Insert Trigger Update Trigger Delete Không xuất hiện trong cả 3 loại trigger trên
File đính kèm:
- Đề thi SQL Server.doc