CÂU HỎI ÔN TẬP TỰ LUẬN SQL SERVER
SỬ DỤNG CƠ SỞ DỮ LIỆU ADVERTUREWORDKS
1. Viết câu truy vấn liệt kê những nhân viên (EmployeeID) thuộc mã quản lý (Managerid)
tương ứng. Sắp xếp tăng dần theo mã quản lý.
2. Viết câu truy vấn cho biết tổng số lượng nhân viên thuộc người quản lý (Managerid)
tương ứng.
3. Viết câu truy vấn cho biết thông tin người quản lý (Managerid)đã quản lý với số lượng
nhân viên đông nhất.
4. Sinh viên A muốn tăng tốc độ thực thi câu truy vấn bên dưới. Bạn hãy giúp sinh viên A
viết index để tăng tốc? và cho biết khoảng thời gian thực thi câu lệnh truy vấn này lúc
trước và sau khi tạo index.
SELECT * FROM Production.Product
WHERE ProductNumber = 'RA-2345'
5. Tạo 1 view hiện thị thông tin mã nhân viên (EmployeeID), tên (FirstName), họ nhân viên
(LastName), chức vụ và hiển thị tên (title), tên (FirstName) , họ nhân viên (LastName)
mã người quản lý (Managerid) đã quản lý nhân viên này. Gợi ý: dựa trên bảng
HumanResources.Employee và bảng Person.Contact
6. Viết hàm (function) trả về ngày giao hàng (Shipdate) theo mã đơn hàng(SalesOrderID)
tương ứng. Lưu ý, nếu mã đơn hàng nào không có ngày giao hàng thì không hiển thị ngày
ngao hàng.
7. Viết hàm (function)/thủ tục (store procedure) hiển thị những mã đơn hàng(SalesOrderID)
trả bằng thẻ tín dụng (CardNumber) tương ứng. Lưu ý, nếu mã đơn hàng nào không trả
bằng thẻ tính dụng thì không hiển thị.
8. Viết hàm (function)/thủ tục (store procedure) tìm thông tin liên quan của nhân viên
(Employee) theo mã nhân viên (EmployeeID) chỉ định. Nếu tìm thấy hệ thống hiển thị kết
quả gồm Mã nhân viên (EmployeeID) , tên nhân viên (FirstName), chức vụ (Title) và số
lượng nhân viên mà anh ta quản lý dựa theo mã quản lý (Managerid). Ngược lại, tìm
không thấy thì hiển thị thông điệp “Hệ thống không tìm thấy nhân viên này!”. Gợi ý:
Thông tin tìm kiếm dựa trên các bảng nhân viên (HumanResources.Employee), bảng
nguoilienhe (Person.Contact).
9. Dựa vào cấu trúc tạo bảng sau:
CREATE TABLE Temp
(
ProductID int,
Name nvarchar(50),
ImpQuality int,
EnColor nvarchar(20),
Size nvarchar (20),
PurchasePrice money,
SalesPrice money,
Importdate datetime,
Cmt nvarchar(200)
)
10. Tạo 1 ràng buộc sao cho ngày nhập sản phẩm (Importdate) phải được mặc định là ngày
hiện tại ngay khi người dùng nhập dữ liệu.
11. Tạo 1 ràng buộc sao cho số lượng nhập (ImpQuality) phải được mặc định là kiểu số và có
giá trị là 100 ngay khi người dùng nhập dữ liệu.
12. Tạo 1 qui tắc nhập liệu hay 1 ràng buộc sao cho chỉ được nhập các màu sau: Black,
White, Gray, Blue, Silver, Pink, Yellow cho cột EnColor.
13. Tạo 1 qui tắc nhập liệu hay 1 ràng buộc sao cho chỉ được nhập các kích cở sau: Small,
Medium, Large, Extra Large, Double Extra cho cột Size
14. Viết 1 trigger cho bảng ‘Temp’ để thực hiện tính giá bán (SalesPrice) gấp 5 lần giá mua
PurchasePrice, số lượng và giá không được nhỏ hơn 0.
15. Tạo bảng mới với tên New_Temp có cấu trúc giống bảng Temp
16. Thực hiện viết trigger ràng buộc nhập, sửa dữ liệu cho cột Size phải trong các kích cở
của câu lệnh ràng buộc được viết cho bảng Temp.
17. Viết câu truy vấn có thêm cột tên “Diễn giải chi tiết kích cở (Size) sang ngôn ngữ Việt
Nam” ngay sau cột ProductID, Name, Size nếu:
Small thì ghi là nhỏ
Medium thì ghi là vừa
Large thì ghi là lớn
Extra Large thì ghi là rất lớn
Double Extra thì ghi là rất rất lớn
Gợi ý: sinh viên có thể dùng: iif; when hoặc union
18. Tạo 1 full text search cho phép người dùng thực hiện tìm kiếm dữ liệu sử dụng các từ
khóa “contains” dựa trên tập kết quả hiển thị câu lệnh truy vấn sau. Gợi ý: Tìm từ ‘Santa’
gần từ ‘drive’ chứa trong AddressLine1 từ bảng Person.Address
SELECT * FROM Person.Address WHERE CONTAINS (AddressLine1, 'Santa NEAR
drive')
19. Hãy cho biết mục đích của các câu truy vấn bên dưới
a. SELECT * FROM sys.dm_exec_sessions
b. SELECT * FROM sys.dm_db_file_space_usage
c. SELECT * FROM sys.dm_tran_current_transaction
d. SELECT * FROM sys.dm_exec_connections
20. Hãy cho biết mục đích của view tên vwEmployee bên dưới Create view vwEmployee
as select e.EmployeeID as 'Employee ID',
h.FirstName as 'Employee Name', g.Name as 'Department Name',
e.HireDate as 'Date of Joining', j.AddressLine1 as 'Employee Address'
from HumanResources.Employee as e
join HumanResources.EmployeeDepartmentHistory as f on
e.EmployeeID = f.EmployeeID join
HumanResources.Department as g on f.DepartmentID =
g.DepartmentID join Person.Contact as h on e.ContactID =
h.ContactID join HumanResources.EmployeeAddress as i on
e.EmployeeID = i.EmployeeID join Person.Address
as j on i.AddressID = j.AddressID
HẾT
PHẦN VIẾT ĐÁP ÁN TRẢ LỜI Ở ĐÂY
2
Downloaded by mai khanh (Vj9@gmail.com)

Preview text:

CÂU HỎI ÔN TẬP TỰ LUẬN SQL SERVER
SỬ DỤNG CƠ SỞ DỮ LIỆU ADVERTUREWORDKS
1. Viết câu truy vấn liệt kê những nhân viên (EmployeeID) thuộc mã quản lý (Managerid)
tương ứng. Sắp xếp tăng dần theo mã quản lý.
2. Viết câu truy vấn cho biết tổng số lượng nhân viên thuộc người quản lý (Managerid) tương ứng.
3. Viết câu truy vấn cho biết thông tin người quản lý (Managerid)đã quản lý với số lượng nhân viên đông nhất.
4. Sinh viên A muốn tăng tốc độ thực thi câu truy vấn bên dưới. Bạn hãy giúp sinh viên A
viết index để tăng tốc? và cho biết khoảng thời gian thực thi câu lệnh truy vấn này lúc
trước và sau khi tạo index.
SELECT * FROM Production.Product
WHERE ProductNumber = 'RA-2345'
5. Tạo 1 view hiện thị thông tin mã nhân viên (EmployeeID), tên (FirstName), họ nhân viên
(LastName), chức vụ và hiển thị tên (title), tên (FirstName) , họ nhân viên (LastName)
mã người quản lý (Managerid) đã quản lý nhân viên này. Gợi ý: dựa trên bảng
HumanResources.Employee và bảng Person.Contact
6. Viết hàm (function) trả về ngày giao hàng (Shipdate) theo mã đơn hàng(SalesOrderID)
tương ứng. Lưu ý, nếu mã đơn hàng nào không có ngày giao hàng thì không hiển thị ngày ngao hàng.
7. Viết hàm (function)/thủ tục (store procedure) hiển thị những mã đơn hàng(SalesOrderID)
trả bằng thẻ tín dụng (CardNumber) tương ứng. Lưu ý, nếu mã đơn hàng nào không trả
bằng thẻ tính dụng thì không hiển thị.
8. Viết hàm (function)/thủ tục (store procedure) tìm thông tin liên quan của nhân viên
(Employee) theo mã nhân viên (EmployeeID) chỉ định. Nếu tìm thấy hệ thống hiển thị kết
quả gồm Mã nhân viên (EmployeeID) , tên nhân viên (FirstName), chức vụ (Title) và số
lượng nhân viên mà anh ta quản lý dựa theo mã quản lý (Managerid). Ngược lại, tìm
không thấy thì hiển thị thông điệp “Hệ thống không tìm thấy nhân viên này!”. Gợi ý:
Thông tin tìm kiếm dựa trên các bảng nhân viên (HumanResources.Employee), bảng nguoilienhe (Person.Contact).
9. Dựa vào cấu trúc tạo bảng sau: CREATE TABLE Temp ( ProductID int, Name nvarchar(50), ImpQuality int, EnColor nvarchar(20), Size nvarchar (20), PurchasePrice money, SalesPrice money, Importdate datetime, Cmt nvarchar(200) )
10. Tạo 1 ràng buộc sao cho ngày nhập sản phẩm (Importdate) phải được mặc định là ngày
hiện tại ngay khi người dùng nhập dữ liệu.
11. Tạo 1 ràng buộc sao cho số lượng nhập (ImpQuality) phải được mặc định là kiểu số và có
giá trị là 100 ngay khi người dùng nhập dữ liệu.
12. Tạo 1 qui tắc nhập liệu hay 1 ràng buộc sao cho chỉ được nhập các màu sau: Black,
White, Gray, Blue, Silver, Pink, Yellow cho cột EnColor.
13. Tạo 1 qui tắc nhập liệu hay 1 ràng buộc sao cho chỉ được nhập các kích cở sau: Small,
Medium, Large, Extra Large, Double Extra cho cột Size
14. Viết 1 trigger cho bảng ‘Temp’ để thực hiện tính giá bán (SalesPrice) gấp 5 lần giá mua
PurchasePrice, số lượng và giá không được nhỏ hơn 0.
15. Tạo bảng mới với tên New_Temp có cấu trúc giống bảng Temp
16. Thực hiện viết trigger ràng buộc nhập, sửa dữ liệu cho cột Size phải trong các kích cở
của câu lệnh ràng buộc được viết cho bảng Temp.
17. Viết câu truy vấn có thêm cột tên “Diễn giải chi tiết kích cở (Size) sang ngôn ngữ Việt
Nam” ngay sau cột ProductID, Name, Size nếu: Small thì ghi là nhỏ Medium thì ghi là vừa Large thì ghi là lớn
Extra Large thì ghi là rất lớn
Double Extra thì ghi là rất rất lớn
Gợi ý: sinh viên có thể dùng: iif; when hoặc union
18. Tạo 1 full text search cho phép người dùng thực hiện tìm kiếm dữ liệu sử dụng các từ
khóa “contains” dựa trên tập kết quả hiển thị câu lệnh truy vấn sau. Gợi ý: Tìm từ ‘Santa’
gần từ ‘drive’ chứa trong AddressLine1 từ bảng Person.Address
SELECT * FROM Person.Address WHERE CONTAINS (AddressLine1, 'Santa NEAR drive')
19. Hãy cho biết mục đích của các câu truy vấn bên dưới
a. SELECT * FROM sys.dm_exec_sessions
b. SELECT * FROM sys.dm_db_file_space_usage
c. SELECT * FROM sys.dm_tran_current_transaction
d. SELECT * FROM sys.dm_exec_connections
20. Hãy cho biết mục đích của view tên vwEmployee bên dưới Create view vwEmployee
as select e.EmployeeID as 'Employee ID',
h.FirstName as 'Employee Name', g.Name as 'Department Name',
e.HireDate as 'Date of Joining', j.AddressLine1 as 'Employee Address'
from HumanResources.Employee as e
join HumanResources.EmployeeDepartmentHistory as f on
e.EmployeeID = f.EmployeeID join
HumanResources.Department as g on f.DepartmentID =
g.DepartmentID join Person.Contact as h on e.ContactID =
h.ContactID join HumanResources.EmployeeAddress as i on
e.EmployeeID = i.EmployeeID join Person.Address
as j on i.AddressID = j.AddressID HẾT
PHẦN VIẾT ĐÁP ÁN TRẢ LỜI Ở ĐÂY 2
Downloaded by mai khanh (Vj9@gmail.com)