wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Câu hỏi về SQL

Total questions: 142

Worksheet time: 1hrs 14mins

Name
Class
Date
1.

SQL là viết tắt của từ gì?

a)

Structured Query Language

b)

Simple Query Language

c)

Sequential Query Language

d)

Standard Question Language

2.

Câu lệnh nào được dùng để lấy dữ liệu từ bảng?

a)

GET

b)

SELECT

c)

RETRIEVE

d)

FETCH

3.

Câu lệnh nào dùng để thêm dữ liệu mới vào bảng?

a)

INSERT INTO

b)

ADD NEW

c)

UPDATE

d)

CREATE

4.

Lệnh nào dùng để xóa dữ liệu?

a)

DELETE

b)

REMOVE

c)

DROP

d)

ERASE

5.

Câu lệnh nào dùng để sửa dữ liệu trong bảng?

a)

UPDATE

b)

ALTER

c)

MODIFY

d)

CHANGE

6.

Lệnh CREATE TABLE dùng để:

a)

Tạo một cột mới

b)

Tạo bảng mới

c)

Tạo hàng mới

d)

Tạo dữ liệu mới

7.

Từ khóa nào được dùng để lọc dữ liệu?

a)

FROM

b)

SELECT

c)

WHERE

d)

FILTER

8.

Trong SQL, dấu % dùng trong:

a)

Hàm tính phần trăm

b)

LIKE

c)

BETWEEN

d)

GROUP BY

9.

Lệnh nào dùng để sắp xếp dữ liệu?

a)

ORDER BY

b)

SORT

c)

GROUP BY

d)

ARRANGE

10.

Lệnh nào tạo điều kiện lọc theo nhóm?

a)

GROUP BY

b)

HAVING

c)

WHERE

d)

ORDER BY

11.

Câu lệnh nào được dùng để đổi tên bảng?

a)

RENAME TABLE

b)

CHANGE TABLE

c)

ALTER TABLE

d)

UPDATE TABLE

12.

Từ khóa nào dùng để lấy các giá trị không trùng lặp?

a)

UNIQUE

b)

DISTINCT

c)

DIFFERENT

d)

NO DUPLICATE

13.

Hàm COUNT(*) trả về:

a)

Tổng các giá trị

b)

Trung bình các giá trị

c)

Số dòng trong bảng

d)

Giá trị lớn nhất

14.

Hàm AVG() dùng để:

a)

Tính tổng

b)

Tính trung bình

c)

Tính số lượng

d)

Tính phần trăm

15.

Từ khóa nào dùng để chỉ định bảng trong câu lệnh SELECT?

a)

FROM

b)

IN

c)

TABLE

d)

USE

16.

Trong SQL, NULL biểu thị:

a)

Giá trị 0

b)

Giá trị rỗng

c)

Không xác định hoặc không có giá trị

d)

Giá trị chuỗi trắng

17.

Để kiểm tra giá trị NULL, ta dùng:

a)

= NULL

b)

IS NULL

c)

== NULL

d)

EQUAL NULL

18.

Câu lệnh nào dùng để xóa bảng?

a)

DELETE TABLE

b)

REMOVE TABLE

c)

DROP TABLE

d)

TRUNCATE TABLE

19.

Từ khóa nào dùng để giới hạn số dòng trả về?

a)

LIMIT

b)

TOP

c)

ROWNUM

d)

Tất cả đều đúng (tùy hệ quản trị)

20.

Câu lệnh SELECT * FROM Products WHERE Price BETWEEN 100 AND 200 sẽ:

a)

Lấy các sản phẩm có giá đúng bằng 100 hoặc 200

b)

Lấy sản phẩm có giá < 100 hoặc > 200

c)

Lấy sản phẩm có giá từ 100 đến 200 (bao gồm cả 100 và 200)

d)

Lỗi cú pháp

21.

Câu lệnh TRUNCATE TABLE dùng để:

a)

Xóa bảng và cấu trúc bảng

b)

Xóa dữ liệu nhưng giữ lại cấu trúc bảng

c)

Xóa cột trong bảng

d)

Đổi tên bảng

22.

PRIMARY KEY là:

a)

Một cột cho phép trùng và NULL

b)

Một cột có giá trị duy nhất và không được NULL

c)

Một cột để tìm kiếm nhanh

d)

Một dạng dữ liệu đặc biệt

23.

Câu lệnh nào tạo ràng buộc khóa chính?

a)

CREATE PRIMARY KEY

b)

ALTER TABLE ... ADD PRIMARY KEY

c)

INSERT PRIMARY

d)

MAKE PRIMARY KEY

24.

FOREIGN KEY dùng để:

a)

Trỏ đến chính nó

b)

Trỏ đến một bảng khác

c)

Tạo dữ liệu mới

d)

Đổi kiểu dữ liệu

25.

Lệnh ALTER TABLE dùng để:

a)

Xóa bảng

b)

Thêm hoặc sửa cấu trúc bảng

c)

Thêm dữ liệu mới

d)

Tạo bảng mới

26.

Câu lệnh nào tạo bảng mới?

a)

CREATE DATABASE

b)

MAKE TABLE

c)

CREATE TABLE

d)

INIT TABLE

27.

Cú pháp đúng để chọn các hàng có giá trị tên chứa chữ “a”?

a)

WHERE name LIKE '%a%'

b)

WHERE name = '%a%'

c)

WHERE name HAS 'a'

d)

WHERE name INCLUDE 'a'

28.

Câu lệnh DROP DATABASE dùng để:

a)

Xóa tất cả bảng trong CSDL

b)

Xóa một bảng

c)

Xóa toàn bộ cơ sở dữ liệu

d)

Đóng kết nối cơ sở dữ liệu

29.

Trong SQL, UNION dùng để:

a)

Ghép bảng theo chiều ngang

b)

Kết hợp kết quả của nhiều SELECT (không trùng)

c)

Gộp dữ liệu từ các cột

d)

Kết hợp bảng theo chiều dọc và trùng dữ liệu

30.

Câu lệnh SELECT name, salary FROM Employees ORDER BY salary DESC dùng để:

a)

Sắp xếp lương tăng dần

b)

Sắp xếp tên giảm dần

c)

Sắp xếp lương giảm dần

d)

Chọn nhân viên có lương cao nhất

31.

Trong SQL Server, hàm trả ngày giờ hiện tại là:

a)

NOW()

b)

CURRENT_TIMESTAMP

c)

GETDATE()

d)

SYSDATE()

32.

Câu lệnh chọn 5 dòng đầu tiên trong SQL Server là:

a)

SELECT FIRST 5 ...

b)

SELECT TOP 5 ...

c)

SELECT LIMIT 5 ...

d)

SELECT * FROM ... LIMIT 5

33.

Cú pháp để tạo khóa chính khi tạo bảng:

a)

PRIMARY(name)

b)

PRIMARY KEY(name)

c)

MAKE PRIMARY name

d)

SET PRIMARY(name)

34.

Lệnh IDENTITY(1,1) có ý nghĩa gì?

a)

Khóa chính tự tăng bắt đầu từ 1, mỗi lần +1

b)

Dữ liệu mặc định

c)

Khóa ngoài

d)

Mã hóa dữ liệu

35.

Trong SQL Server, để đổi tên bảng ta dùng:

a)

RENAME TABLE

b)

ALTER TABLE RENAME

c)

sp_rename 'ten_cu', 'ten_moi'

d)

RENAME ten_cu TO ten_moi

36.

Để lấy dữ liệu lặp lại, ta dùng từ khóa nào?

a)

ALL

b)

REPEAT

c)

NO DISTINCT

d)

Không

37.

Để đổi tên bảng, ta dùng:

a)

RENAME TABLE

b)

ALTER TABLE RENAME

c)

sp_rename 'ten_cu', 'ten_moi'

d)

RENAME ten_cu TO ten_moi

38.

Để lấy dữ liệu lặp lại, ta dùng từ khóa nào?

a)

ALL

b)

REPEAT

c)

NO DISTINCT

d)

Không dùng DISTINCT

39.

Trong SQL Server, kiểu dữ liệu cho chuỗi ký tự có độ dài không cố định là:

a)

VARCHAR(n)

b)

CHAR(n)

c)

TEXT

d)

STRING

40.

Hàm nào dùng để chuyển chữ thường thành chữ hoa?

a)

UPPER()

b)

TOUPPER()

c)

UCASE()

d)

CAPITALIZE()

41.

Hàm LEN(column) trả về:

a)

Tổng các giá trị

b)

Số lượng ký tự trong chuỗi

c)

Số dòng

d)

Độ dài bảng

42.

Lệnh SELECT COUNT(*) FROM Table WHERE column IS NULL sẽ:

a)

Đếm số giá trị khác NULL

b)

Đếm số dòng có giá trị NULL

c)

Đếm toàn bộ dữ liệu

d)

Trả lỗi

43.

Trong SQL Server, để tạo một trường tự động tăng, ta dùng:

a)

AUTO_INCREMENT

b)

SERIAL

c)

IDENTITY(1,1)

d)

AUTOGEN

44.

Hàm GETDATE() trả về kiểu dữ liệu gì?

a)

int

b)

time

c)

date

d)

datetime

45.

Câu lệnh SELECT DISTINCT column FROM table có tác dụng:

a)

Lấy tất cả các bản ghi

b)

Lấy các giá trị khác nhau ở cột đó

c)

Lấy các bản ghi trùng nhau

d)

Lấy bản ghi có khóa chính

46.

Trong SQL Server, kiểu dữ liệu BIT dùng để lưu:

a)

Chuỗi ký tự

b)

Giá trị logic (0 hoặc 1)

c)

Số nguyên

d)

Số thực

47.

Để giới hạn kết quả truy vấn trả về 10 bản ghi, ta dùng:

a)

SELECT FIRST 10

b)

SELECT * FROM table LIMIT 10

c)

SELECT TOP 10 * FROM table

d)

SELECT LIMIT 10 * FROM table

48.

Mệnh đề WHERE dùng để:

a)

Sắp xếp dữ liệu

b)

Nhóm dữ liệu

c)

Lọc dữ liệu theo điều kiện

d)

Tạo điều kiện phân trang

49.

Để tạo database mới trong SQL Server, ta dùng lệnh:

a)

INIT DATABASE name

b)

CREATE DATABASE name

c)

MAKE DB name

d)

NEW DATABASE name

50.

Câu lệnh DELETE FROM table sẽ:

a)

Xóa toàn bộ bảng

b)

Xóa toàn bộ dữ liệu trong bảng

c)

Xóa bảng và dữ liệu

d)

Xóa cột cụ thể

51.

Hàm DATEDIFF(day, startDate, endDate) trong SQL Server dùng để:

a)

Cộng ngày

b)

Trừ giờ

c)

Tính số ngày giữa 2 mốc thời gian

d)

Kiểm tra ngày có hợp lệ không

52.

Để cập nhật dữ liệu trong bảng, ta dùng:

a)

MODIFY

b)

CHANGE

c)

SET VALUE

d)

UPDATE

53.

Trong SQL Server, để xóa tất cả dữ liệu trong bảng mà không xóa cấu trúc bảng, ta dùng:

a)

DELETE FROM table

b)

REMOVE FROM table

c)

TRUNCATE TABLE table

d)

DROP TABLE table

54.

Câu lệnh nào dùng để lấy các giá trị khác biệt trong bảng?

a)

DISTINCT

b)

UNIQUE

c)

DIFFERENT

d)

BOTH

55.

Câu lệnh nào dùng để xóa một bảng trong SQL Server?

a)

REMOVE TABLE

b)

DELETE TABLE

c)

DROP TABLE

d)

ERASE TABLE

56.

Trong SQL Server, cú pháp INNER JOIN sẽ:

a)

Kết hợp tất cả dữ liệu từ hai bảng

b)

Kết hợp các dòng có giá trị trùng lặp giữa hai bảng

c)

Kết hợp các dòng có giá trị không trùng lặp giữa hai bảng

d)

Không kết hợp bất kỳ dữ liệu nào

57.

Từ khóa nào trong câu lệnh SELECT giúp trả về một phần của chuỗi?

a)

SUBSTRING

b)

MID

c)

LEFT

d)

TRIM

58.

Câu lệnh GROUP BY được dùng để:

a)

Nhóm các bản ghi lại với nhau

b)

Lọc dữ liệu theo nhóm

c)

Sắp xếp dữ liệu

d)

Tính toán các giá trị tổng hợp

59.

Câu lệnh nào dưới đây sẽ trả về số lượng bản ghi trong bảng Customers?

a)

SELECT COUNT(1) FROM Customers

b)

SELECT COUNT(*) FROM Customers

c)

SELECT COUNT() FROM Customers

d)

A và B đều đúng

60.

Trong SQL Server, để trích xuất phần ngày từ kiểu dữ liệu datetime, ta sử dụng hàm nào?

a)

GETDATE()

b)

DATEPART()

c)

CONVERT()

d)

EXTRACT()

61.

Câu lệnh nào sau đây sẽ kết hợp dữ liệu từ hai bảng với điều kiện trùng lặp?

a)

LEFT JOIN

b)

RIGHT JOIN

c)

INNER JOIN

d)

FULL OUTER JOIN

62.

Để tạo một chỉ mục trên cột trong bảng, ta sử dụng câu lệnh nào?

a)

CREATE INDEX

b)

CREATE KEY

c)

CREATE UNIQUE

d)

CREATE TABLE INDEX

63.

Câu lệnh ALTER TABLE dùng để:

a)

Tạo bảng mới

b)

Thêm, sửa hoặc xóa cột trong bảng

c)

Xóa bảng

d)

Lọc dữ liệu

64.

Câu lệnh HAVING được sử dụng với mệnh đề nào?

a)

WHERE

b)

GROUP BY

c)

ORDER BY

d)

SELECT

65.

Câu lệnh SQL nào giúp liên kết nhiều bảng lại với nhau?

a)

JOIN

b)

COMBINE

c)

LINK

d)

MERGE

66.

Trong SQL Server, kiểu dữ liệu DATETIME có độ dài bao nhiêu?

a)

4 byte

b)

8 byte

c)

12 byte

d)

16 byte

67.

Để tìm kiếm một phần của chuỗi trong cột, ta sử dụng từ khóa nào trong SQL Server?

a)

LIKE

b)

CONTAINS

c)

IN

d)

SEARCH

68.

Câu lệnh SELECT TOP 10 * FROM Employees ORDER BY Salary DESC có tác dụng:

a)

Lấy 10 nhân viên có lương cao nhất

b)

Lấy 10 nhân viên có lương thấp nhất

c)

Lấy 10 nhân viên ngẫu nhiên

d)

Lấy toàn bộ nhân viên

69.

SELECT TOP 10 * FROM Employees ORDER BY Salary DESC có tác dụng:

a)

Lấy 10 nhân viên có lương cao nhất

b)

Lấy 10 nhân viên có lương thấp nhất

c)

Lấy 10 nhân viên ngẫu nhiên

d)

Lấy toàn bộ nhân viên và sắp xếp theo lương tăng dần

70.

Hàm SUM() trong SQL Server trả về:

a)

Tổng của các giá trị

b)

Số dòng

c)

Giá trị trung bình

d)

Giá trị lớn nhất

71.

Để trích xuất các cột từ bảng, ta sử dụng từ khóa nào?

a)

SELECT

b)

GET

c)

FETCH

d)

EXTRACT

72.

Câu lệnh ORDER BY được sử dụng để:

a)

Tính toán tổng số dòng

b)

Tính toán các giá trị

c)

Sắp xếp kết quả trả về theo cột

d)

Lọc kết quả trả về

73.

Câu lệnh JOIN trong SQL Server có thể kết hợp:

a)

Chỉ các bảng trong cùng một cơ sở dữ liệu

b)

Các bảng trong cùng một cơ sở dữ liệu hoặc khác cơ sở dữ liệu

c)

Các bảng trong cùng một máy chủ

d)

Tất cả các bảng trong một hệ thống

74.

Câu lệnh nào dùng để kết nối hai bảng trong SQL Server?

a)

CONNECT

b)

JOIN

c)

LINK

d)

MERGE

75.

Để lấy các bản ghi trùng lặp từ bảng, ta sử dụng câu lệnh nào?

a)

SELECT ALL

b)

SELECT DISTINCT

c)

SELECT DUPLICATE

d)

SELECT REPEAT

76.

Trong SQL Server, cú pháp nào dùng để tạo chỉ mục cho một bảng?

a)

CREATE INDEX

b)

MAKE INDEX

c)

CREATE KEY

d)

NEW INDEX

77.

Câu lệnh SELECT COUNT(DISTINCT column) sẽ:

a)

Đếm số lượng dòng không trùng lặp trong cột

b)

Đếm số lượng dòng có giá trị NULL trong cột

c)

Đếm tổng số giá trị trong cột

d)

Đếm tất cả các giá trị trong cột

78.

Câu lệnh INSERT INTO được sử dụng để:

a)

Thêm dữ liệu vào bảng

b)

Xóa dữ liệu trong bảng

c)

Cập nhật dữ liệu trong bảng

d)

Tạo bảng mới

79.

Câu lệnh nào trong SQL Server dùng để kết hợp các kết quả của hai câu lệnh SELECT?

a)

JOIN

b)

UNION

c)

MERGE

d)

LINK

80.

Trong SQL Server, để thay đổi giá trị của một cột, ta sử dụng câu lệnh nào?

a)

UPDATE

b)

MODIFY

c)

CHANGE

d)

ALTER

81.

Câu lệnh nào sau đây sẽ trả về các bản ghi có lương lớn hơn 5000 trong bảng Employees?

a)

SELECT * FROM Employees WHERE Salary > 5000

b)

SELECT * FROM Employees WHERE Salary < 5000

c)

SELECT * FROM Employees WHERE Salary >= 5000

d)

SELECT * FROM Employees WHERE Salary = 5000

82.

Câu lệnh nào dùng để thay đổi kiểu dữ liệu của một cột trong SQL Server?

a)

ALTER COLUMN

b)

MODIFY COLUMN

c)

CHANGE COLUMN

d)

UPDATE COLUMN

83.

Câu lệnh SELECT column1, column2 FROM table ORDER BY column1 ASC, column2 DESC có tác dụng:

a)

Sắp xếp column1 tăng dần và column2 giảm dần

b)

Sắp xếp column1 giảm dần và column2 tăng dần

c)

Lọc các giá trị trùng lặp

d)

Sắp xếp column1 và column2 tăng dần

84.

Câu lệnh nào dùng để thay đổi cấu trúc bảng trong SQL Server?

a)

ALTER TABLE

b)

MODIFY TABLE

c)

CHANGE TABLE

d)

UPDATE TABLE

85.

Để lấy các bản ghi có giá trị NULL trong một cột, ta dùng câu lệnh nào?

a)

WHERE column = NULL

b)

WHERE column IS NULL

c)

WHERE column IS NOT NULL

d)

WHERE column != NULL

86.

Trong SQL Server, kiểu dữ liệu nào dùng để lưu trữ giá trị tiền tệ?

a)

MONEY

b)

CURRENCY

c)

DECIMAL

d)

FLOAT

87.

Câu lệnh nào được dùng để kiểm tra cấu trúc của một bảng trong SQL Server?

a)

DESCRIBE TABLE

b)

SHOW TABLE

c)

SHOW COLUMNS

d)

sp_help table

88.

Câu lệnh SELECT * FROM Employees WHERE Name LIKE 'J%' sẽ:

a)

Lấy tất cả các bản ghi có tên bắt đầu bằng chữ 'J'

b)

Lấy tất cả các bản ghi có tên chứa chữ 'J'

c)

Lấy tất cả các bản ghi có tên kết thúc bằng chữ 'J'

d)

Lấy tất cả các bản ghi có tên trùng với 'J'

89.

Trong SQL Server, câu lệnh INNER JOIN sẽ trả về:

a)

Các dòng có trong cả hai bảng

b)

Các dòng có trong một bảng

c)

Các dòng không có trong cả hai bảng

d)

Các dòng có giá trị NULL

90.

Câu lệnh nào dùng để xóa một cột trong bảng SQL Server?

a)

DROP COLUMN

b)

REMOVE COLUMN

c)

DELETE COLUMN

d)

ALTER TABLE DROP COLUMN

91.

Câu lệnh nào sau đây dùng để thay đổi tên của một cột trong bảng?

a)

RENAME COLUMN

b)

ALTER COLUMN

c)

CHANGE COLUMN

d)

sp_rename 'table.old_column', 'new_column', 'COLUMN'

92.

Câu lệnh nào được sử dụng để tạo một bảng trong SQL Server?

a)

CREATE DATABASE

b)

CREATE TABLE

c)

INIT TABLE

d)

MAKE TABLE

93.

Câu lệnh GROUP BY trong SQL Server được sử dụng với câu lệnh nào?

a)

SELECT

b)

INSERT

c)

UPDATE

d)

DELETE

94.

Câu lệnh CREATE PROCEDURE trong SQL Server dùng để:

a)

Tạo một bảng mới

b)

Tạo một thủ tục lưu trữ mới

c)

Tạo một chỉ mục

d)

Tạo một hàm mới

95.

Câu lệnh SELECT * FROM Employees WHERE Salary BETWEEN 3000 AND 5000 sẽ:

4 lines
96.

Câu lệnh SELECT * FROM Employees WHERE Salary BETWEEN 3000 AND 5000 sẽ:

a)

Lấy các nhân viên có lương trong khoảng từ 3000 đến 5000

b)

Lấy các nhân viên có lương lớn hơn 5000

c)

Lấy các nhân viên có lương nhỏ hơn 3000

d)

Lấy các nhân viên có lương bằng 5000

97.

Câu lệnh SELECT column1, COUNT(column2) FROM table GROUP BY column1 sẽ:

a)

Tính tổng của column2 theo từng nhóm column1

b)

Đếm số lượng các giá trị trong column2 theo nhóm column1

c)

Lọc các giá trị trong column2 theo nhóm column1

d)

Tính trung bình của column2 theo nhóm column1

98.

Để tạo một khóa ngoại trong SQL Server, ta sử dụng câu lệnh nào?

a)

CREATE FOREIGN KEY

b)

ALTER TABLE ADD CONSTRAINT FOREIGN KEY

c)

ADD FOREIGN KEY

d)

CREATE CONSTRAINT FOREIGN KEY

99.

Để tạo một bản sao của một bảng trong SQL Server, ta sử dụng:

a)

CREATE TABLE AS

b)

SELECT INTO

c)

COPY TABLE

d)

CLONE TABLE

100.

Câu lệnh nào sau đây là cú pháp chính xác để thực hiện một lệnh JOIN trong SQL Server?

a)

SELECT column1, column2 FROM table1 JOIN table2 ON table1.id = table2.id

b)

SELECT column1, column2 FROM table1 LEFT JOIN table2 USING id

c)

SELECT column1, column2 FROM table1 INNER JOIN table2 WHERE table1.id = table2.id

d)

SELECT column1, column2 FROM table1 JOIN table2 WHERE table1.id = table2.id

101.

Trong SQL Server, hàm AVG() dùng để tính toán:

a)

Số lượng giá trị trong một cột

b)

Tổng giá trị trong một cột

c)

Giá trị trung bình của một cột

d)

Giá trị lớn nhất trong một cột

102.

Để thay đổi dữ liệu trong bảng, ta sử dụng câu lệnh nào?

a)

UPDATE

b)

MODIFY

c)

CHANGE

d)

ALTER

103.

Trong SQL Server, kiểu dữ liệu nào có thể chứa cả chữ và số?

a)

INT

b)

VARCHAR

c)

FLOAT

d)

DATE

104.

Câu lệnh nào dùng để tạo một VIEW trong SQL Server?

a)

CREATE VIEW

b)

ADD VIEW

c)

CREATE SELECT

d)

CREATE TABLE VIEW

105.

Câu lệnh SELECT column1, COUNT(*) FROM table GROUP BY column1 HAVING COUNT(*) > 5 có tác dụng gì?

a)

Lọc các nhóm có ít hơn 5 bản ghi

b)

Trả về các nhóm có ít nhất 5 bản ghi

c)

Trả về tất cả các nhóm, không phụ thuộc vào số lượng bản ghi

d)

Đếm tất cả bản ghi trong bảng

106.

Trong SQL Server, câu lệnh nào sẽ trả về các bản ghi có giá trị NULL trong cột column1 và không NULL trong cột column2?

a)

SELECT * FROM table WHERE column1 IS NULL AND column2 IS NOT NULL

b)

SELECT * FROM table WHERE column1 IS NULL OR column2 IS NULL

c)

SELECT * FROM table WHERE column1 IS NOT NULL AND column2 IS NULL

d)

SELECT * FROM table WHERE column1 IS NULL AND column2 IS NULL

107.

Câu lệnh nào trả về các bản ghi trong bảng Orders mà không có bất kỳ bản ghi nào trong bảng Customers có liên quan đến chúng qua khóa ngoại?

a)

SELECT * FROM Orders LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID WHERE Customers.CustomerID IS NULL

b)

SELECT * FROM Orders RIGHT JOIN Customers ON Orders.CustomerID = Customers.CustomerID WHERE Orders.CustomerID IS NULL

c)

SELECT * FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID WHERE Customers.CustomerID IS NULL

d)

SELECT * FROM Orders WHERE CustomerID NOT IN (SELECT CustomerID FROM Customers)

108.

Câu lệnh nào sẽ trả về bản ghi trong bảng Products với giá trị trung bình của Price cho từng CategoryID?

a)

SELECT CategoryID, AVG(Price) FROM Products GROUP BY CategoryID

b)

SELECT CategoryID, SUM(Price) FROM Products GROUP BY CategoryID

c)

SELECT CategoryID, MAX(Price) FROM Products GROUP BY CategoryID

d)

SELECT CategoryID, COUNT(Price) FROM Products GROUP BY CategoryID

109.

Hàm nào trong SQL Server dùng để trả về giá trị lớn nhất từ một cột?

a)

MAX()

b)

MIN()

c)

SUM()

d)

AVG()

110.

Câu lệnh SELECT column1, RANK() OVER (PARTITION BY column2 ORDER BY column1 DESC) FROM table có tác dụng gì?

a)

Xếp hạng các bản ghi theo column1, phân chia theo nhóm column2

b)

Trả về thứ tự của các bản ghi theo column1, không phân nhóm

c)

Trả về tổng các giá trị trong column1

d)

Trả về các giá trị trung bình của column1

111.

Câu lệnh nào trả về bản ghi duy nhất của bảng Employees mà không có bản ghi tương ứng trong bảng Departments?

a)

SELECT * FROM Employees LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID WHERE Departments.DepartmentID IS NULL

b)

SELECT * FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID WHERE Departments.DepartmentID IS NULL

112.

Trong SQL Server, câu lệnh nào sẽ giúp bạn truy vấn một giá trị từ bảng Orders với điều kiện OrderDate nằm trong tháng 12 năm 2024?

a)

SELECT * FROM Orders WHERE MONTH(OrderDate) = 12 AND YEAR(OrderDate) = 2024

b)

SELECT * FROM Orders WHERE OrderDate BETWEEN '2024-12-01' AND '2024-12-31'

c)

SELECT * FROM Orders WHERE OrderDate LIKE '2024-12%'

d)

Tất cả các câu trên đều đúng

113.

Câu lệnh SELECT column1, SUM(column2) OVER (PARTITION BY column3 ORDER BY column1) FROM table có tác dụng gì?

a)

Tính tổng của column2 cho mỗi nhóm phân vùng column3

b)

Tính tổng của column2 trên toàn bộ bảng, không phân nhóm

c)

Xếp hạng các bản ghi theo column1 và tính tổng của column2 cho mỗi nhóm column3

d)

Tính trung bình của column2 cho mỗi nhóm phân vùng

114.

Câu lệnh SELECT * FROM Orders WHERE OrderID IN (SELECT OrderID FROM OrderDetails WHERE Quantity > 5) sẽ:

a)

Trả về các đơn hàng có OrderID trong bảng OrderDetails với số lượng lớn hơn 5

b)

Trả về tất cả các đơn hàng có số lượng lớn hơn 5

c)

Trả về các đơn hàng có OrderID trùng với OrderID trong bảng OrderDetails

d)

Tất cả các câu trên đều đúng

115.

Câu lệnh nào dưới đây sẽ trả về các sản phẩm có giá trị Price lớn hơn mức trung bình của tất cả sản phẩm trong bảng Products?

a)

SELECT * FROM Products WHERE Price > AVG(Price)

b)

SELECT * FROM Products WHERE Price > (SELECT AVG(Price) FROM Products)

c)

SELECT * FROM Products WHERE Price > MAX(Price)

d)

SELECT * FROM Products WHERE Price > SUM(Price)

116.

Câu lệnh nào trong SQL Server giúp phân nhóm các bản ghi và tính toán các giá trị tổng hợp cho từng nhóm sử dụng ROW_NUMBER()?

a)

SELECT column1, ROW_NUMBER() OVER (PARTITION BY column2 ORDER BY column1) FROM table

b)

SELECT column1, RANK() OVER (PARTITION BY column2 ORDER BY column1) FROM table

c)

SELECT column1, COUNT(*) OVER (PARTITION BY column2 ORDER BY column1) FROM table

d)

SELECT column1, DENSE_RANK() OVER (PARTITION BY column2 ORDER BY column1) FROM table

117.

Câu lệnh SELECT * FROM Products WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 5) có tác dụng gì?

a)

Trả về tất cả các sản phẩm có ProductID tương ứng với những ProductID có trong OrderDetails có số lượng lớn hơn 5

b)

Trả về tất cả các sản phẩm có số lượng lớn hơn 5 trong OrderDetails

c)

Trả về sản phẩm có ProductID nhỏ nhất trong OrderDetails

d)

Trả về các sản phẩm có ProductID trùng khớp với tất cả các ProductID trong OrderDetails

118.

Để thực hiện một truy vấn SQL trên nhiều bảng với sự kết hợp nhiều điều kiện, ta sử dụng:

a)

JOIN và WHERE

b)

GROUP BY và HAVING

c)

LEFT JOIN và WHERE

d)

INNER JOIN và GROUP BY

119.

Câu lệnh nào dưới đây sẽ trả về danh sách các khách hàng và số lượng đơn hàng của mỗi khách hàng?

a)

SELECT CustomerID, COUNT(OrderID) FROM Orders GROUP BY CustomerID

b)

SELECT CustomerID, SUM(OrderID) FROM Orders GROUP BY CustomerID

c)

SELECT CustomerID, COUNT(*) FROM Customers

d)

SELECT CustomerID, AVG(OrderID) FROM Orders GROUP BY CustomerID

120.

Câu lệnh SELECT ProductName, COUNT(*) OVER (PARTITION BY CategoryID) AS ProductCount FROM Products sẽ trả về gì?

a)

Tên sản phẩm và số lượng sản phẩm trong mỗi danh mục

b)

Tên sản phẩm và tổng số sản phẩm trong bảng Products

c)

Số lượng sản phẩm theo từng nhóm CategoryID

d)

Tên sản phẩm và số lượng các sản phẩm trong bảng Products

121.

Câu lệnh SELECT * FROM Products WHERE ProductID = (SELECT TOP 1 ProductID FROM Products ORDER BY Price DESC) sẽ:

a)

Trả về sản phẩm có giá trị Price cao nhất trong bảng Products

b)

Trả về sản phẩm có ProductID nhỏ nhất trong bảng Products

c)

Trả về tất cả sản phẩm có giá trị Price lớn hơn Price của sản phẩm có ProductID cao nhất

d)

Trả về các sản phẩm có ProductID trùng với ProductID của sản phẩm có giá trị Price cao nhất

122.

Câu lệnh nào giúp bạn truy vấn dữ liệu với kết quả là các bản ghi có OrderDate thuộc năm 2024 và có OrderAmount trên 1000?

a)

SELECT * FROM Orders WHERE YEAR(OrderDate) = 2024 AND OrderAmount > 1000

b)

SELECT * FROM Orders WHERE OrderDate BETWEEN '2024-01-01' AND '2024-12-31' AND OrderAmount > 1000

c)

SELECT * FROM Orders WHERE OrderDate LIKE '2024%' AND OrderAmount > 1000

d)

Tất cả các câu trên đều đúng

123.

Câu lệnh SELECT * FROM Employees WHERE DepartmentID IN (SELECT DepartmentID FROM Departments WHERE DepartmentName = 'HR') có tác dụng gì?

a)

Lấy tất cả nhân viên thuộc phòng ban có tên 'HR'

b)

Lấy tất cả nhân viên thuộc phòng ban có mã số trùng với phòng ban có tên 'HR'

c)

Lấy tất cả các nhân viên có DepartmentID là NULL

d)

Lấy tất cả các nhân viên từ phòng ban 'HR' và phòng ban khác

124.

Câu lệnh SELECT ProductID, SUM(Quantity) OVER (PARTITION BY ProductID ORDER BY OrderDate) AS TotalQuantity FROM OrderDetails sẽ:

a)

Trả về tổng số lượng sản phẩm cho mỗi ProductID trong từng đơn hàng, được phân nhóm theo ProductID

b)

Trả về tổng số lượng sản phẩm cho mỗi ProductID theo thứ tự ngày đặt hàng

c)

Trả về tổng số lượng sản phẩm theo từng đơn hàng

d)

Trả về tất cả các đơn hàng với tổng số lượng sản phẩm

125.

Câu lệnh SELECT EmployeeID, SUM(Salary) OVER (PARTITION BY DepartmentID ORDER BY EmployeeID) AS CumulativeSalary FROM Employees sẽ:

a)

Tính tổng lương tích lũy cho mỗi nhân viên trong từng phòng ban theo thứ tự EmployeeID

b)

Trả về tổng lương cho tất cả nhân viên trong bảng Employees

c)

Tính tổng lương của nhân viên trong mỗi phòng ban, không phân biệt thứ tự

d)

Trả về tổng lương tích lũy cho tất cả nhân viên trong bảng Employees

126.

Câu lệnh SELECT EmployeeID, DepartmentID, SUM(Salary) OVER (PARTITION BY DepartmentID) AS DepartmentSalary FROM Employees sẽ:

a)

Trả về tổng lương của tất cả nhân viên trong mỗi phòng ban

b)

Trả về lương của từng nhân viên theo phòng ban

c)

Trả về lương tích lũy của mỗi nhân viên trong từng phòng ban

d)

Trả về tất cả các nhân viên với tổng lương cho từng phòng ban

127.

Câu lệnh nào giúp bạn thực hiện việc kết hợp dữ liệu từ hai bảng Orders và Customers bằng cách sử dụng CustomerID?

a)

SELECT * FROM Orders JOIN Customers ON Orders.CustomerID = Customers.CustomerID

b)

SELECT * FROM Orders LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID

c)

SELECT * FROM Orders RIGHT JOIN Customers ON Orders.CustomerID = Customers.CustomerID

d)

Tất cả các câu trên đều đúng

128.

Câu lệnh SELECT DepartmentID, COUNT(*) AS EmployeeCount FROM Employees GROUP BY DepartmentID HAVING COUNT(*) > 10 sẽ:

a)

Trả về các phòng ban có ít nhất 10 nhân viên

b)

Trả về các phòng ban có nhiều hơn 10 nhân viên

c)

Trả về số lượng nhân viên trong các phòng ban có ít hơn 10 nhân viên

d)

Trả về tất cả các phòng ban và số lượng nhân viên của mỗi phòng ban

129.

Câu lệnh SELECT * FROM Products WHERE Price NOT BETWEEN 10 AND 50 sẽ:

a)

Trả về các sản phẩm có giá trị từ 10 đến 50

b)

Trả về các sản phẩm có giá trị ngoài khoảng từ 10 đến 50

c)

Trả về các sản phẩm có giá trị chính xác 50

d)

Trả về tất cả các sản phẩm với giá trị lớn hơn 50

130.

Câu lệnh SELECT * FROM Orders WHERE OrderDate BETWEEN '2024-01-01' AND '2024-12-31' AND CustomerID = 'ALFKI' sẽ:

a)

Trả về các đơn hàng của khách hàng có CustomerID là 'ALFKI' trong năm 2024

b)

Trả về tất cả đơn hàng trong năm 2024 cho khách hàng có CustomerID là 'ALFKI'

c)

Trả về các đơn hàng của tất cả khách hàng trong năm 2024

d)

Trả về các đơn hàng từ khách hàng 'ALFKI' nhưng không phải năm 2024

131.

Câu lệnh SELECT CustomerID, AVG(OrderAmount) FROM Orders GROUP BY CustomerID HAVING AVG(OrderAmount) > 500 sẽ:

a)

Trả về các khách hàng có số lượng đơn hàng trung bình lớn hơn 500

b)

Trả về các khách hàng có tổng giá trị đơn hàng lớn hơn 500

c)

Trả về các khách hàng có giá trị đơn hàng trung bình từ 500 trở lên

d)

Trả về các khách hàng có giá trị đơn hàng trung bình nhỏ hơn 500

132.

Câu lệnh nào sẽ tính tổng số sản phẩm đã được bán trong các đơn hàng có số lượng lớn hơn 5?

a)

SELECT SUM(Quantity) FROM OrderDetails WHERE Quantity > 5

b)

SELECT SUM(Quantity) FROM Orders WHERE Quantity > 5

c)

SELECT CO

133.

tổng số sản phẩm đã được bán trong các đơn hàng có số lượng lớn hơn 5?

a)

SELECT SUM(Quantity) FROM OrderDetails WHERE Quantity > 5

b)

SELECT SUM(Quantity) FROM Orders WHERE Quantity > 5

c)

SELECT COUNT(*) FROM OrderDetails WHERE Quantity > 5

d)

SELECT SUM(Quantity) FROM Products WHERE Quantity > 5

134.

Câu lệnh SELECT DepartmentID, MAX(Salary) FROM Employees GROUP BY DepartmentID sẽ:

a)

Trả về mức lương cao nhất trong mỗi phòng ban

b)

Trả về mức lương trung bình trong mỗi phòng ban

c)

Trả về tổng lương trong mỗi phòng ban

d)

Trả về số lượng nhân viên trong mỗi phòng ban

135.

Câu lệnh SELECT EmployeeID, DENSE_RANK() OVER (PARTITION BY DepartmentID ORDER BY Salary DESC) AS Rank FROM Employees sẽ:

a)

Trả về thứ hạng của các nhân viên trong phòng ban theo lương từ cao xuống thấp, không bỏ qua thứ hạng

b)

Trả về thứ hạng của các nhân viên trong phòng ban theo lương từ thấp lên cao

c)

Trả về thứ hạng của các nhân viên trong bảng Employees

d)

Trả về tất cả các nhân viên trong bảng Employees với lương giảm dần

136.

Câu lệnh SELECT ProductName, Price, LEAD(Price, 1) OVER (ORDER BY Price) AS NextPrice FROM Products sẽ:

a)

Trả về giá sản phẩm hiện tại và giá sản phẩm tiếp theo trong bảng Products theo thứ tự giá trị Price

b)

Trả về giá sản phẩm và giá trị Price cao nhất trong bảng Products

c)

Trả về giá trị Price cho mỗi sản phẩm trong bảng Products

d)

Trả về tất cả sản phẩm có giá trị Price nhỏ nhất trong bảng Products

137.

Câu lệnh SELECT DepartmentID, SUM(Salary) OVER (PARTITION BY DepartmentID ORDER BY Salary DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS RunningTotal FROM Employees sẽ:

a)

Trả về tổng lương của tất cả nhân viên trong mỗi phòng ban, tính từ trên xuống theo lương

b)

Trả về tổng lương của tất cả nhân viên trong bảng Employees

c)

Trả về tổng lương của nhân viên trong mỗi phòng ban tính từ nhân viên đầu tiên đến nhân viên hiện tại trong bảng Employees

d)

Trả về tổng lương của tất cả nhân viên theo thứ tự DepartmentID

138.

Câu lệnh SELECT EmployeeID, Name, LEAD(Name, 1) OVER (ORDER BY EmployeeID) AS NextEmployee FROM Employees sẽ:

a)

Trả về tên nhân viên hiện tại và tên nhân viên tiếp theo theo thứ tự EmployeeID

b)

Trả về tên nhân viên và tên nhân viên có mã số nhỏ nhất

c)

Trả về tên nhân viên và thứ hạng của nhân viên đó

d)

Trả về các nhân viên có EmployeeID lớn hơn EmployeeID hiện tại

139.

Câu lệnh nào dưới đây sẽ giúp bạn tìm tất cả các đơn hàng có tổng giá trị trên 500 trong bảng OrderDetails?

a)

SELECT * FROM OrderDetails WHERE TotalAmount > 500

b)

SELECT OrderID, SUM(Quantity * UnitPrice) AS TotalAmount FROM OrderDetails GROUP BY OrderID HAVING SUM(Quantity * UnitPrice) > 500

c)

SELECT OrderID, SUM(TotalAmount) FROM OrderDetails GROUP BY OrderID HAVING SUM(TotalAmount) > 500

d)

SELECT * FROM Orders WHERE OrderAmount > 500

140.

Câu lệnh nào sẽ trả về tất cả các khách hàng chưa thực hiện bất kỳ đơn hàng nào?

a)

SELECT * FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID WHERE Orders.CustomerID IS NULL

b)

SELECT * FROM Customers RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID WHERE Orders.CustomerID IS NULL

c)

SELECT * FROM Customers WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders)

d)

Tất cả các câu trên đều đúng

141.

Câu lệnh SELECT EmployeeID, DepartmentID, DENSE_RANK() OVER (PARTITION BY DepartmentID ORDER BY Salary DESC) AS SalaryRank FROM Employees có tác dụng gì?

a)

Trả về thứ hạng lương của nhân viên trong mỗi phòng ban, không bỏ qua thứ hạng

b)

Trả về thứ hạng lương của nhân viên trong mỗi phòng ban, bỏ qua các thứ hạng trùng lặp

c)

Trả về lương của các nhân viên trong bảng Employees theo thứ tự giảm dần

d)

Trả về tất cả các nhân viên với mức lương cao nhất trong mỗi phòng ban

142.

Câu lệnh SELECT * FROM Orders WHERE OrderDate > (SELECT MAX(OrderDate) FROM Orders WHERE CustomerID = 'ALFKI') sẽ:

a)

Trả về các đơn hàng có OrderDate sau ngày cuối cùng mà khách hàng 'ALFKI' đặt hàng

b)

Trả về các đơn hàng có OrderDate trước ngày cuối cùng mà khách hàng 'ALFKI' đặt hàng

c)

Trả về tất cả các đơn hàng có mã khách hàng 'A