wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

SQL Server — Trắc nghiệm lựa chọn (Grade 13)

Total questions: 90

Worksheet time: 45mins

Name
Class
Date
1.

[Phần A: Tạo cơ sở dữ liệu] Cú pháp nào sau đây được sử dụng để tạo cơ sở dữ liệu mới trong SQL Server?

a)

CREATE DATABASE QuanLyNhanSu;

b)

NEW DATABASE QuanLyNhanSu;

c)

ADD DATABASE QuanLyNhanSu;

d)

MAKE DATABASE QuanLyNhanSu;

2.

[Phần A: Tạo cơ sở dữ liệu] Để tạo bảng NHANVIEN với khóa chính MaNV, cú pháp đúng là:

a)

CREATE TABLE NHANVIEN (MaNV INT PRIMARY KEY, TenNV NVARCHAR(50));

b)

CREATE TABLE NHANVIEN (MaNV INT KEY, TenNV NVARCHAR(50));

c)

CREATE TABLE NHANVIEN (MaNV INT MAIN KEY, TenNV NVARCHAR(50));

d)

CREATE TABLE NHANVIEN (MaNV INT FIRST KEY, TenNV NVARCHAR(50));

3.

[Phần A: Tạo cơ sở dữ liệu] Một bảng có thể có nhiều khóa chính (Primary Key).

a)

Đúng

b)

Sai

4.

[Phần A: Tạo cơ sở dữ liệu] Để thêm ràng buộc khóa ngoại cho cột MaPB trong bảng NHANVIEN tham chiếu đến bảng PHONGBAN, ta sử dụng:

a)

FOREIGN KEY (MaPB) REFERENCES PHONGBAN(MaPB)

b)

EXTERNAL KEY (MaPB) REFERENCES PHONGBAN(MaPB)

c)

REFERENCE KEY (MaPB) TO PHONGBAN(MaPB)

d)

LINK KEY (MaPB) WITH PHONGBAN(MaPB)

5.

[Phần A: Tạo cơ sở dữ liệu] Trong SQL Server, ràng buộc nào sau đây được sử dụng để đảm bảo rằng một cột không chứa giá trị NULL?

a)

NOT NULL

b)

UNIQUE

c)

CHECK

d)

DEFAULT

6.

[Phần A: Tạo cơ sở dữ liệu] Để tạo ràng buộc CHECK cho cột GioiTinh chỉ nhận giá trị 'Nam' hoặc 'Nu', ta viết:

a)

CHECK (GioiTinh IN ('Nam', 'Nu'))

b)

CONSTRAINT (GioiTinh = 'Nam' OR 'Nu')

c)

VALIDATE (GioiTinh IN ('Nam', 'Nu'))

d)

VERIFY (GioiTinh = 'Nam' OR GioiTinh = 'Nu')

7.

[Phần A: Tạo cơ sở dữ liệu] Ràng buộc UNIQUE cho phép nhiều giá trị NULL trong cùng một cột.

a)

Đúng

b)

Sai

8.

[Phần A: Tạo cơ sở dữ liệu] Để thêm cột mới vào bảng đã tồn tại, ta sử dụng lệnh:

a)

ALTER TABLE ten_bang ADD ten_cot kieu_du_lieu;

b)

UPDATE TABLE ten_bang ADD ten_cot kieu_du_lieu;

c)

MODIFY TABLE ten_bang ADD ten_cot kieu_du_lieu;

d)

CHANGE TABLE ten_bang ADD ten_cot kieu_du_lieu;

9.

[Phần A: Tạo cơ sở dữ liệu] Để xóa bảng NHANVIEN khỏi cơ sở dữ liệu, ta sử dụng:

a)

DROP TABLE NHANVIEN;

b)

DELETE TABLE NHANVIEN;

c)

REMOVE TABLE NHANVIEN;

d)

DESTROY TABLE NHANVIEN;

10.

[Phần A: Tạo cơ sở dữ liệu] Khi tạo khóa chính composite (khóa chính gồm nhiều cột), lựa chọn đáp án sai là:

a)

PRIMARY KEY (MaNV, MaDA)

b)

CONSTRAINT PK_PHANCONG PRIMARY KEY (MaNV, MaDA)

c)

MaNV INT PRIMARY KEY, MaDA INT PRIMARY KEY

d)

PRIMARY KEY CLUSTERED (MaNV, MaDA)

11.

[Phần A: Tạo cơ sở dữ liệu] Khi xóa bảng cha (parent table), SQL Server sẽ tự động xóa tất cả bản ghi trong bảng con (child table) có liên quan.

a)

Đúng

b)

Sai

12.

[Phần A: Tạo cơ sở dữ liệu] Để thiết lập giá trị mặc định cho cột NgaySinh là ngày hiện tại, ta sử dụng:

a)

NgaySinh DATETIME DEFAULT GETDATE()

b)

NgaySinh DATETIME DEFAULT TODAY()

c)

NgaySinh DATETIME DEFAULT NOW()

d)

NgaySinh DATETIME DEFAULT CURRENT_DATE()

13.

[Phần A: Tạo cơ sở dữ liệu] Lệnh nào được sử dụng để tạo index cho bảng NHANVIEN trên cột TenNV?

a)

CREATE INDEX IX_TenNV ON NHANVIEN(TenNV);

b)

ADD INDEX IX_TenNV ON NHANVIEN(TenNV);

c)

NEW INDEX IX_TenNV ON NHANVIEN(TenNV);

d)

MAKE INDEX IX_TenNV ON NHANVIEN(TenNV);

14.

[Phần A: Tạo cơ sở dữ liệu] Những kiểu dữ liệu nào phù hợp để lưu trữ tên nhân viên trong SQL Server? (chọn nhiều đáp án)

a)

FLOAT

b)

VARCHAR(100)

c)

DATE

d)

INT

15.

[Phần A: Tạo cơ sở dữ liệu] Để xóa ràng buộc khóa ngoại có tên FK_NHANVIEN_PHONGBAN, ta sử dụng:

a)

ALTER TABLE NHANVIEN DROP CONSTRAINT FK_NHANVIEN_PHONGBAN;

b)

DROP CONSTRAINT FK_NHANVIEN_PHONGBAN FROM NHANVIEN;

c)

DELETE CONSTRAINT FK_NHANVIEN_PHONGBAN FROM NHANVIEN;

d)

REMOVE CONSTRAINT FK_NHANVIEN_PHONGBAN FROM NHANVIEN;

16.

[Phần B: Truy vấn] Để truy vấn tất cả thông tin nhân viên, ta sử dụng:

a)

SELECT * FROM NHANVIEN;

b)

GET * FROM NHANVIEN;

c)

SHOW * FROM NHANVIEN;

d)

DISPLAY * FROM NHANVIEN;

17.

[Phần B: Truy vấn] Để tìm nhân viên có lương lớn hơn 5000000, ta viết:

a)

SELECT * FROM NHANVIEN WHERE Luong > 5000000;

b)

SELECT * FROM NHANVIEN IF Luong > 5000000;

c)

SELECT * FROM NHANVIEN WHEN Luong > 5000000;

d)

SELECT * FROM NHANVIEN HAVING Luong > 5000000;

18.

[Phần B: Truy vấn] Những từ khóa nào có thể sử dụng để sắp xếp kết quả truy vấn, lựa chọn đáp án sai:

a)

ORDER BY

b)

ASC

c)

DESC

d)

SORT BY

19.

[Phần B: Truy vấn] Để đếm số lượng nhân viên trong mỗi phòng ban, ta sử dụng:

a)

SELECT MaPB, COUNT(*) FROM NHANVIEN GROUP BY MaPB;

b)

SELECT MaPB, COUNT(*) FROM NHANVIEN ORDER BY MaPB;

c)

SELECT MaPB, SUM(*) FROM NHANVIEN GROUP BY MaPB;

d)

SELECT MaPB, TOTAL(*) FROM NHANVIEN GROUP BY MaPB;

20.

[Phần B: Truy vấn] Mệnh đề HAVING được sử dụng để lọc dữ liệu trước khi thực hiện GROUP BY.

a)

Đúng

b)

Sai

21.

[Phần B: Truy vấn] Để tìm nhân viên có lương cao nhất, ta có thể sử dụng:

a)

SELECT * FROM NHANVIEN WHERE Luong = (SELECT MAX(Luong) FROM NHANVIEN);

b)

SELECT * FROM NHANVIEN WHERE Luong = MAX(Luong);

c)

SELECT MAX(*) FROM NHANVIEN WHERE Luong;

d)

SELECT * FROM NHANVIEN ORDER BY Luong DESC LIMIT 1;

22.

[Phần B: Truy vấn] Để nối bảng NHANVIEN và PHONGBAN, ta sử dụng:

a)

SELECT * FROM NHANVIEN NV JOIN PHONGBAN PB ON NV.MaPB = PB.MaPB;

b)

SELECT * FROM NHANVIEN NV LINK PHONGBAN PB ON NV.MaPB = PB.MaPB;

c)

SELECT * FROM NHANVIEN NV CONNECT PHONGBAN PB ON NV.MaPB = PB.MaPB;

d)

SELECT * FROM NHANVIEN NV MERGE PHONGBAN PB ON NV.MaPB = PB.MaPB;

23.

[Phần B: Truy vấn] Trong SQL Server, loại JOIN nào được sử dụng để chỉ lấy các bản ghi có giá trị khớp ở cả hai bảng?

a)

INNER JOIN

b)

LEFT JOIN

c)

RIGHT JOIN

d)

FULL OUTER JOIN

24.

[Phần B: Truy vấn] Để tìm nhân viên không được phân công vào dự án nào, ta sử dụng:

a)

SELECT * FROM NHANVIEN WHERE MaNV NOT IN (SELECT MaNV FROM PHANCONG);

b)

SELECT * FROM NHANVIEN WHERE MaNV NOT EXISTS (SELECT MaNV FROM PHANCONG);

c)

SELECT * FROM NHANVIEN WHERE MaNV <> ALL (SELECT MaNV FROM PHANCONG);

d)

SELECT * FROM NHANVIEN EXCEPT SELECT MaNV FROM PHANCONG;

25.

[Phần B: Truy vấn] Hàm nào được sử dụng để tính tổng trong SQL Server?

a)

SUM()

b)

TOTAL()

c)

ADD()

d)

PLUS()

26.

[Phần B: Truy vấn] Câu lệnh SELECT DISTINCT được sử dụng để loại bỏ các dòng trùng lặp trong kết quả truy vấn.

a)

Đúng

b)

Sai

27.

[Phần B: Truy vấn] Để tìm nhân viên có tên bắt đầu bằng chữ 'N', ta sử dụng:

a)

SELECT * FROM NHANVIEN WHERE TenNV LIKE 'N%';

b)

SELECT * FROM NHANVIEN WHERE TenNV = 'N*';

c)

SELECT * FROM NHANVIEN WHERE TenNV STARTS 'N';

d)

SELECT * FROM NHANVIEN WHERE TenNV BEGIN 'N';

28.

[Phần B: Truy vấn] Trong SQL Server, hàm tổng hợp nào được sử dụng để đếm số lượng bản ghi trong một bảng hoặc nhóm dữ liệu?

a)

COUNT()

b)

AVG()

c)

MIN()

d)

MAX()

29.

[Phần B: Truy vấn] Để giới hạn số dòng trả về trong SQL Server, ta sử dụng:

a)

SELECT TOP 10 * FROM NHANVIEN;

b)

SELECT LIMIT 10 * FROM NHANVIEN;

c)

SELECT FIRST 10 * FROM NHANVIEN;

d)

SELECT HEAD 10 * FROM NHANVIEN;

30.

[Phần B: Truy vấn] Để tính lương trung bình của nhân viên trong mỗi phòng ban có số nhân viên > 5, ta viết:

a)

SELECT MaPB, AVG(Luong) FROM NHANVIEN GROUP BY MaPB HAVING COUNT(*) > 5;

b)

SELECT MaPB, AVG(Luong) FROM NHANVIEN WHERE COUNT(*) > 5 GROUP BY MaPB;

c)

SELECT MaPB, AVG(Luong) FROM NHANVIEN GROUP BY MaPB WHERE COUNT(*) > 5;

d)

SELECT MaPB, MEAN(Luong) FROM NHANVIEN GROUP BY MaPB HAVING COUNT(*) > 5;

31.

[Phần B: Truy vấn] Truy vấn con (Subquery) có thể được sử dụng ở đâu?

a)

Trong mệnh đề WHERE

b)

Trong mệnh đề SELECT

c)

Trong mệnh đề FROM

d)

Tất cả các vị trí trên

32.

[Phần B: Truy vấn] Để tìm phòng ban có nhiều nhân viên nhất, ta có thể sử dụng:

a)

SELECT TOP 1 MaPB, COUNT(*) FROM NHANVIEN GROUP BY MaPB ORDER BY COUNT(*) DESC;

b)

SELECT MAX(MaPB) FROM NHANVIEN GROUP BY MaPB;

c)

SELECT MaPB FROM NHANVIEN WHERE COUNT(*) = MAX(COUNT(*));

d)

SELECT FIRST MaPB FROM NHANVIEN ORDER BY COUNT(*) DESC;

33.

[Phần B: Truy vấn] Câu lệnh UNION ALL sẽ loại bỏ các dòng trùng lặp khi kết hợp hai tập kết quả.

a)

Đúng

b)

Sai

34.

[Phần B: Truy vấn] Để tìm dự án có tổng số giờ làm việc lớn nhất, ta viết:

a)

SELECT MaDA FROM PHANCONG GROUP BY MaDA HAVING SUM(SoGio) = (SELECT MAX(TongGio) FROM (SELECT SUM(SoGio) AS TongGio FROM PHANCONG GROUP BY MaDA) AS T);

b)

SELECT MaDA FROM PHANCONG WHERE SUM(SoGio) = MAX(SUM(SoGio));

c)

SELECT TOP 1 MaDA FROM PHANCONG ORDER BY SUM(SoGio) DESC;

d)

SELECT MaDA FROM PHANCONG GROUP BY MaDA ORDER BY SUM(SoGio) DESC LIMIT 1;

35.

[Phần B: Truy vấn] EXISTS được sử dụng để:

a)

Kiểm tra sự tồn tại của dữ liệu trong truy vấn con

b)

Đếm số dòng trong bảng

c)

Tính tổng giá trị

d)

Sắp xếp dữ liệu

36.

Cú pháp tạo view trong SQL Server là:

a)

CREATE VIEW ten_view AS SELECT cau_lenh;

b)

NEW VIEW ten_view AS SELECT cau_lenh;

c)

ADD VIEW ten_view AS SELECT cau_lenh;

d)

MAKE VIEW ten_view AS SELECT cau_lenh;

37.

View có thể chứa dữ liệu thực sự giống như bảng.

a)

Đúng

b)

Sai

38.

Để tạo view hiển thị thông tin nhân viên và tên phòng ban, ta viết:

a)

CREATE VIEW VW_NHANVIEN_PHONGBAN AS SELECT NV.*, PB.TenPB FROM NHANVIEN NV JOIN PHONGBAN PB ON NV.MaPB = PB.MaPB;

b)

CREATE VIEW VW_NHANVIEN_PHONGBAN FROM SELECT NV.*, PB.TenPB FROM NHANVIEN NV JOIN PHONGBAN PB ON NV.MaPB = PB.MaPB;

c)

CREATE VIEW VW_NHANVIEN_PHONGBAN IS SELECT NV.*, PB.TenPB FROM NHANVIEN NV JOIN PHONGBAN PB ON NV.MaPB = PB.MaPB;

d)

CREATE VIEW VW_NHANVIEN_PHONGBAN WITH SELECT NV.*, PB.TenPB FROM NHANVIEN NV JOIN PHONGBAN PB ON NV.MaPB = PB.MaPB;

39.

Để xóa view, ta sử dụng lệnh:

a)

DROP VIEW ten_view;

b)

DELETE VIEW ten_view;

c)

REMOVE VIEW ten_view;

d)

DESTROY VIEW ten_view;

40.

Trong SQL Server, mục đích chính của View là gì?

a)

Tăng tốc độ truy vấn

b)

Bảo mật dữ liệu

c)

Lưu trữ toàn bộ dữ liệu của bảng

d)

Giảm dung lượng cơ sở dữ liệu

41.

Để sửa đổi view đã tồn tại, ta sử dụng:

a)

ALTER VIEW ten_view AS SELECT cau_lenh_moi;

b)

UPDATE VIEW ten_view AS SELECT cau_lenh_moi;

c)

MODIFY VIEW ten_view AS SELECT cau_lenh_moi;

d)

CHANGE VIEW ten_view AS SELECT cau_lenh_moi;

42.

View có thể được tạo từ nhiều bảng khác nhau.

a)

Đúng

b)

Sai

43.

WITH CHECK OPTION trong view có tác dụng gì?

a)

Đảm bảo dữ liệu được thêm/sửa qua view phải thỏa mãn điều kiện WHERE của view

b)

Kiểm tra cú pháp của view

c)

Tự động cập nhật view khi bảng gốc thay đổi

d)

Tăng hiệu suất truy vấn

44.

View nào sau đây có thể cập nhật được dữ liệu?

a)

View được tạo từ một bảng duy nhất không có hàm tổng hợp

b)

View có sử dụng DISTINCT

c)

View có sử dụng GROUP BY

d)

View được tạo từ nhiều bảng với JOIN

45.

View trong SQL Server được lưu trữ như một bảng ảo và không chiếm dung lượng lưu trữ cho dữ liệu.

a)

Đúng

b)

Sai

46.

Cú pháp tạo hàm trả về giá trị đơn trong SQL Server là:

a)

CREATE FUNCTION ten_ham() RETURNS kieu_du_lieu AS BEGIN ... RETURN gia_tri END

b)

CREATE FUNCTION ten_ham() RETURN kieu_du_lieu AS BEGIN ... RETURN gia_tri END

c)

NEW FUNCTION ten_ham() RETURNS kieu_du_lieu AS BEGIN ... RETURN gia_tri END

d)

ADD FUNCTION ten_ham() RETURNS kieu_du_lieu AS BEGIN ... RETURN gia_tri END

47.

Để tạo hàm trả về bảng, ta sử dụng:

a)

CREATES TABLE

b)

RETURN TABLE

c)

RETURNS @table TABLE

d)

RETURN @table TABLE

48.

Hàm trong SQL Server có thể thực hiện các thao tác DML (INSERT, UPDATE, DELETE).

a)

Đúng

b)

Sai

49.

Trong SQL Server, loại hàm nào trả về một giá trị duy nhất sau khi thực thi?

a)

Table-valued Function

b)

Aggregate Function

c)

Scalar Function

d)

System Function

50.

Để gọi hàm scalar, ta sử dụng cú pháp:

a)

SELECT dbo.ten_ham(tham_so)

b)

EXECUTE ten_ham(tham_so)

c)

CALL ten_ham(tham_so)

d)

RUN ten_ham(tham_so)

51.

Inline Table-valued Function khác gì với Multi-statement Table-valued Function?

a)

Inline function trả về kết quả trực tiếp từ câu SELECT, Multi-statement function có thể chứa nhiều câu lệnh

b)

Inline function nhanh hơn Multi-statement function

c)

Inline function không có BEGIN...END, Multi-statement function có BEGIN...END

d)

Tất cả các đáp án án trên

52.

Hàm Table-valued có thể được sử dụng trong mệnh đề FROM như một bảng.

a)

Đúng

b)

Sai

53.

Để xóa hàm, ta sử dụng:

a)

DROP FUNCTION ten_ham;

b)

DELETE FUNCTION ten_ham;

c)

REMOVE FUNCTION ten_ham;

d)

DESTROY FUNCTION ten_ham;

54.

Tham số trong hàm SQL Server được khai báo như thế nào?

a)

@ten_tham_so kieu_du_lieu

b)

ten_tham_so kieu_du_lieu

c)

$ten_tham_so kieu_du_lieu

d)

#ten_tham_so kieu_du_lieu

55.

Trong SQL Server, hàm có thể được gọi trực tiếp trong câu lệnh nào để trả về giá trị dùng trong điều kiện lọc dữ liệu?

a)

SELECT

b)

WHERE

c)

Stored Procedure

d)

Trigger

56.

Để tạo hàm trả về danh sách nhân viên theo phòng ban, ta có thể viết:

a)

CREATE FUNCTION fn_NVTheoPhongBan(@MaPB INT) RETURNS TABLE AS RETURN (SELECT * FROM NHANVIEN WHERE MaPB = @MaPB)

b)

CREATE FUNCTION fn_NVTheoPhongBan(@MaPB INT) RETURNS TABLE AS RETURN SELECT * FROM NHANVIEN WHERE MaPB = @MaPB

c)

CREATE FUNCTION fn_NVTheoPhongBan(@MaPB INT) RETURNS @result TABLE AS SELECT * FROM NHANVIEN WHERE MaPB = @MaPB

d)

CREATE FUNCTION fn_NVTheoPhongBan(@MaPB INT) RETURN @result TABLE AS SELECT * FROM NHANVIEN WHERE MaPB = @MaPB

57.

Hàm trong SQL Server có thể gọi các hàm khác.

a)

Đúng

b)

Sai

58.

DETERMINISTIC trong hàm có ý nghĩa gì?

a)

Hàm luôn trả về cùng một kết quả với cùng một đầu vào

b)

Hàm chạy nhanh hơn

c)

Hàm có thể truy cập dữ liệu bên ngoài

d)

Hàm có thể thực hiện các thao tác DML

59.

Để sửa đổi hàm đã tồn tại, ta sử dụng:

a)

ALTER FUNCTION ten_ham

b)

UPDATE FUNCTION ten_ham

c)

MODIFY FUNCTION ten_ham

d)

CHANGE FUNCTION ten_ham

60.

Cú pháp tạo stored procedure trong SQL Server là:

a)

CREATE PROCEDURE ten_thu_tuc AS BEGIN ... END

b)

CREATE PROC ten_thu_tuc AS BEGIN ... END

c)

NEW PROCEDURE ten_thu_tuc AS BEGIN ... END

d)

Cả A và B đều đúng

61.

Stored procedure có thể thực hiện các thao tác DML (INSERT, UPDATE, DELETE).

a)

Đúng

b)

Sai

62.

Để tạo procedure thêm mới nhân viên, ta viết:

a)

CREATE PROC sp_ThemNhanVien @MaNV INT, @TenNV NVARCHAR(50) AS BEGIN INSERT INTO NHANVIEN VALUES (@MaNV, @TenNV) END

b)

CREATE PROC sp_ThemNhanVien (@MaNV INT, @TenNV NVARCHAR(50)) AS INSERT INTO NHANVIEN VALUES (@MaNV, @TenNV)

c)

CREATE PROCEDURE sp_ThemNhanVien @MaNV INT, @TenNV NVARCHAR(50) IS INSERT INTO NHANVIEN VALUES (@MaNV, @TenNV)

d)

CREATE PROC sp_ThemNhanVien WITH @MaNV INT, @TenNV NVARCHAR(50) AS INSERT INTO NHANVIEN VALUES (@MaNV, @TenNV)

63.

Trong SQL Server, loại tham số nào của Stored Procedure được sử dụng để truyền giá trị đầu vào vào thủ tục?

a)

OUTPUT

b)

INPUT/OUTPUT

c)

RETURN

d)

INPUT

64.

Để khai báo tham số OUTPUT trong procedure, ta viết:

a)

@ten_tham_so kieu_du_lieu OUTPUT

b)

@ten_tham_so kieu_du_lieu OUT

c)

OUTPUT @ten_tham_so kieu_du_lieu

d)

OUT @ten_tham_so kieu_du_lieu

65.

Để xử lý lỗi trong stored procedure, ta có thể sử dụng:

a)

TRY...CATCH

b)

IF...ELSE

c)

WHILE...BREAK

d)

FOR...NEXT

66.

Stored procedure có thể trả về nhiều result set.

a)

Đúng

b)

Sai

67.

Để tạo procedure cập nhật lương nhân viên, ta có thể viết:

a)

CREATE PROC sp_CapNhatLuong @MaNV INT, @LuongMoi MONEY AS BEGIN UPDATE NHANVIEN SET Luong = @LuongMoi WHERE MaNV = @MaNV END

b)

CREATE PROC sp_CapNhatLuong @MaNV INT, @LuongMoi MONEY IS UPDATE NHANVIEN SET Luong = @LuongMoi WHERE MaNV = @MaNV

c)

CREATE PROCEDURE sp_CapNhatLuong (@MaNV INT, @LuongMoi MONEY) AS UPDATE NHANVIEN SET Luong = @LuongMoi WHERE MaNV = @MaNV

d)

CREATE PROC sp_CapNhatLuong (@MaNV INT, @LuongMoi MONEY) AS UPDATE NHANVIEN SET Luong = @LuongMoi WHERE MaNV = @MaNV

68.

@ROWCOUNT trong stored procedure cho biết gì?

a)

Số dòng bị ảnh hưởng bởi câu lệnh T-SQL cuối cùng

b)

Tổng số dòng trong bảng

c)

Số tham số của procedure

d)

Số lần procedure được gọi

69.

Tìm và sửa lỗi trong đoạn tạo bảng sau: CREATE TABLE NHANVIEN ( MaNV INT PRIMARY KEY, TenNV NVARCHAR(50) NOT NULL, NgaySinh DATE, GioiTinh NVARCHAR(5) CHECK (GioiTinh IN ('Nam','Nu')), DiaChi NVARCHAR(200), MaPB INT FOREIGN KEY REFERENCES PHONGBAN(MaPB), Luong MONEY DEFAULT 0 ); Lựa chọn nêu đúng cách sửa lỗi.

a)

Thiếu từ khóa CONSTRAINT trước FOREIGN KEY

b)

Sai cú pháp FOREIGN KEY, phải viết: MaPB INT, FOREIGN KEY (MaPB) REFERENCES PHONGBAN(MaPB)

c)

Kiểu dữ liệu MONEY không hợp lệ

d)

Không có lỗi

70.

Sửa lỗi trong câu lệnh tạo index: CREATE INDEX IX_TenNV IN NHANVIEN(TenNV);

a)

Sửa IN thành ON

b)

Sửa CREATE INDEX thành ADD INDEX

c)

Thêm từ khóa FOR

d)

Không có lỗi

71.

Sửa lỗi trong câu lệnh tạo bảng với giá trị mặc định: CREATE TABLE DUAN ( MaDA INT PRIMARY KEY, TenDA NVARCHAR(100), NgayBatDau DATE DEFAULT TODAY(), NgayKetThuc DATE, KinhPhi MONEY );

a)

Sửa TODAY() thành GETDATE()

b)

Sửa DEFAULT thành VALUE

c)

Thêm DEFAULT trước GETDATE()

d)

Không có lỗi

72.

Sửa lỗi trong câu truy vấn: SELECT MaNV, TenNV, Luong FROM NHANVIEN WHERE Luong > 5000000 ORDER Luong DESC;

a)

Thêm BY sau ORDER: ORDER BY Luong DESC

b)

Sửa DESC thành DESCENDING

c)

Thêm FROM trước ORDER

d)

Không có lỗi

73.

Tìm và sửa lỗi trong truy vấn có GROUP BY: SELECT MaPB, TenPB, COUNT(*) AS SoNV FROM NHANVIEN NV JOIN PHONGBAN PB ON NV.MaPB = PB.MaPB GROUP BY MaPB;

a)

TenPB phải có trong GROUP BY: GROUP BY MaPB, TenPB

b)

Phải thêm PB.MaPB trong GROUP BY

c)

Phải thêm PB.MaPB và PB.TenPB trong SELECT

d)

Tất cả các đáp án trên

74.

Sửa lỗi trong câu lệnh JOIN: SELECT NV.TenNV, PB.TenPB FROM NHANVIEN NV INNER JOIN PHONGBAN PB IN NV.MaPB = PB.MaPB;

a)

Sửa IN thành ON

b)

Sửa INNER JOIN thành JOIN ON

c)

Thêm WHERE trước điều kiện

d)

Không có lỗi

75.

Chỉnh sửa lỗi trong truy vấn con: SELECT * FROM NHANVIEN WHERE MaPB = (SELECT MaPB FROM PHONGBAN WHERE TenPB = 'Ke toan');

a)

Thêm dấu N trước chuỗi Unicode: N'Ke toan'

b)

Sửa dấu = thành IN

c)

Thêm DISTINCT trong subquery

d)

Không cần sửa nếu chắc chắn subquery trả về 1 giá trị

76.

Sửa lỗi trong câu lệnh HAVING: SELECT MaPB, AVG(Luong) AS LuongTB FROM NHANVIEN WHERE COUNT(*) > 3 GROUP BY MaPB;

a)

Phải dùng HAVING thay vì WHERE cho hàm tổng hợp: HAVING COUNT(*) > 3

b)

Di chuyển WHERE COUNT(*) > 3 xuống sau GROUP BY

c)

Sử dụng TOP 3 thay cho HAVING

d)

Không có lỗi

77.

Tìm lỗi trong câu lệnh UPDATE: UPDATE NHANVIEN SET Luong = Luong * 1.1 WHERE MaPB = 1 AND Luong > 5000000;

a)

Thiếu dấu chấm phẩy ở cuối

b)

Không có FROM clause

c)

Cú pháp SET sai

d)

Không có lỗi

78.

Sửa lỗi trong câu lệnh INSERT: INSERT INTO NHANVIEN VALUES (1, 'Nguyen Van A', '1990-01-01', 'Nam', 'Ha Noi', 1);

a)

Thiếu cột Luong trong VALUES (cần đủ số cột hoặc chỉ định tên cột)

b)

Thêm N trước chuỗi Unicode: N'Nguyen Van A', N'Nam', N'Ha Noi'

c)

Cả A và B đều đúng

d)

Không có lỗi nếu Luong có DEFAULT hoặc NULL

79.

Chỉnh sửa câu lệnh DELETE: DELETE NHANVIEN WHERE MaNV = 1;

a)

Thêm FROM: DELETE FROM NHANVIEN WHERE MaNV = 1

b)

Sửa DELETE thành REMOVE

c)

Thêm * sau DELETE

d)

Không có lỗi (SQL Server cho phép cả hai cách)

80.

Sửa lỗi trong truy vấn với LIKE: SELECT * FROM NHANVIEN WHERE TenNV LIKE '%Nguyen*';

a)

Sửa * thành %: LIKE '%Nguyen%'

b)

Sửa % thành *

c)

Thêm dấu nháy đơn

d)

Không có lỗi

81.

Tìm lỗi trong truy vấn sử dụng TOP: SELECT 10 TOP * FROM NHANVIEN ORDER BY Luong DESC;

a)

Sửa thành: SELECT TOP 10 * FROM NHANVIEN ORDER BY Luong DESC

b)

Sửa thành: SELECT * TOP 10 FROM NHANVIEN

c)

Thêm LIMIT 10

d)

Không có lỗi

82.

Sửa lỗi trong hàm scalar: CREATE FUNCTION fn_TinhTongLuong(@MaPB INT) RETURNS MONEY BEGIN DECLARE @Tong MONEY SELECT @Tong = SUM(Luong) FROM NHANVIEN WHERE MaPB = @MaPB RETURN @Tong END

a)

Thiếu AS trước BEGIN: RETURNS MONEY AS BEGIN

b)

Thiếu GO ở cuối

c)

Sai cú pháp DECLARE

d)

Không có lỗi

83.

Sửa lỗi trong multi-statement table-valued function: CREATE FUNCTION fn_ThongKeNhanVien() RETURNS @KetQua TABLE ( MaPB INT, SoNV INT ) BEGIN INSERT INTO @KetQua SELECT MaPB, COUNT(*) FROM NHANVIEN GROUP BY MaPB END

a)

Thiếu RETURN ở cuối: thêm RETURN trước END

b)

Thiếu AS trước BEGIN

c)

Cả A và B đều đúng

d)

Không có lỗi

84.

Tìm lỗi trong hàm có INSERT: CREATE FUNCTION fn_ThemNhanVien(@MaNV INT, @TenNV NVARCHAR(50)) RETURNS INT AS BEGIN INSERT INTO NHANVIEN (MaNV, TenNV) VALUES (@MaNV, @TenNV) RETURN 1 END

a)

Hàm không thể thực hiện INSERT, phải dùng Stored Procedure

b)

Thiếu @KetQua

c)

Sai cú pháp RETURN

d)

Không có lỗi

85.

Sửa lỗi khi gọi hàm: SELECT fn_TinhTuoi('1990-01-01') AS Tuoi FROM NHANVIEN;

a)

Thêm dbo.: SELECT dbo.fn_TinhTuoi('1990-01-01') AS Tuoi FROM NHANVIEN

b)

Thêm EXECUTE trước fn_TinhTuoi

c)

Sửa thành CALL fn_TinhTuoi

d)

Không có lỗi

86.

Sửa lỗi trong stored procedure: CREATE PROCEDURE sp_LayNhanVien @MaPB INT BEGIN SELECT * FROM NHANVIEN WHERE MaPB = @MaPB END

a)

Thiếu AS trước BEGIN: CREATE PROCEDURE sp_LayNhanVien @MaPB INT AS BEGIN

b)

Thiếu dấu phẩy sau @MaPB INT

c)

Thiếu RETURNS

d)

Không có lỗi

87.

Tìm lỗi trong procedure UPDATE: CREATE PROCEDURE sp_TangLuong @MaNV INT, @PhanTram FLOAT AS BEGIN UPDATE NHANVIEN SET Luong = Luong * (1 + @PhanTram) WHERE MaNV = @MaNV IF @@ROWCOUNT = 0 RETURN 'Khong tim thay nhan vien' ELSE RETURN 'Cap nhat thanh cong' END

a)

RETURN chỉ trả về số nguyên, không thể trả về chuỗi. Dùng PRINT hoặc RAISERROR

b)

Sai cú pháp IF...ELSE

c)

Thiếu BEGIN...END cho IF và ELSE

d)

Không có lỗi

88.

Sửa lỗi trong trigger sau: CREATE TRIGGER trg_KiemTraLuong ON NHANVIEN AFTER INSERT BEGIN IF EXISTS (SELECT * FROM inserted WHERE Luong < 0) ROLLBACK TRANSACTION PRINT 'Luong phai lon hon 0' END

a)

Thiếu AS trước BEGIN

b)

Thêm DELETE trước ROLLBACK

c)

Phải dùng BEFORE INSERT thay vì AFTER INSERT

d)

Không có lỗi

89.

Chỉnh sửa trigger có sử dụng bảng deleted: CREATE TRIGGER trg_XoaNhanVien ON NHANVIEN FOR DELETE AS BEGIN INSERT INTO NhanVien_XoaLog (MaNV, TenNV, NgayXoa) SELECT MaNV, TenNV, GETDATE() FROM deleted END Chọn phương án mô tả sửa đổi cần thiết.

a)

Sửa IN thành ON

b)

Sửa FOR thành AFTER hoặc INSTEAD OF

c)

Chỉ phương án sửa IN thành ON là bắt buộc (FOR là hợp lệ, tương đương AFTER)

d)

Không có lỗi

90.

Sửa lỗi trong trigger có nhiều sự kiện: CREATE TRIGGER trg_AuditNhanVien ON NHANVIEN AFTER INSERT AND UPDATE AND DELETE AS BEGIN INSERT INTO AuditLog (BangName, HanhDong, ThoiGian) VALUES ('NHANVIEN', 'Thay doi', GETDATE()) END Chọn cách sửa cú pháp sự kiện.

a)

Sửa AND thành dấu phẩy: AFTER INSERT, UPDATE, DELETE

b)

Sửa AND thành OR

c)

Phải tạo ba trigger riêng biệt

d)

Không có lỗi