Câu hỏi ôn tập môn Các hệ quản trị CSDL(ôn thi liên thông 2009-trung cấp-Đại Học) (đáp án bên dưới) 1 Bạn là người thiết kế cơ sở dữ liệu. Một người gây giống chó ở địa phương nhờ bạn thiết kế cơ sở dữ liệu. Cơ sở dữ liệu này dùng để lưu thông tin về chó giống. Bạn tạo bảng tên Dogs bằng cách thực thi câu script sau CREATE TABLE [dbo].[Dogs] ( [DogID] [int] NOT NULL, [BreadID] [int] NOT NULL, [DateofBirth] [datetime] NOT NULL, [WeightAtBirth] [decimal](5,2) NOT NULL, [NumberOfSiblings] [int] NULL, [MotherID] [int] NOT NULL, [FatherID] [int] NOT NULL, ) ON [PRIMARY] GO ALTER TABLE [dbo].[Dogs].WITH NOCHECK ADD CONSTRAINT [PK_Dogs]PRIMARY KEY CLUSTERED ( [DogID] ) ON [PRIMARY] GO Bạn phải đảm bảo rằng mỗi con chó phải có giá trị hợp lệ ứng với cột MotherID và cột FartherID. Bạn phải thực hiện như thế nào? a) Tạo trigger AFTER INSERT cho bảng Dogs để rollback lệnh trong trường hợp cột MotherID và FatherID có giá trị không hợp lệ b) Tạo một ràng buộc CHECK ở mức Table cho cột MotherID và FatherID c) Tạo 2 ràng buộc FOREIGN KEY: 1 ràng buộc cho cột MotherID và 1 ràng buộc cho cột FatherID. Mỗi ràng buộc tham chiếu đến cột DogID d) Tạo 1 Rule và kết buộc và cột MotherID. Kết buộc rule giống vậy vào cột FatherID 2 Bạn là người phát triển cơ sở dữ liệu cho công ty CertKiller. Cơ sở dữ liệu này chứa bảng dữ liệu tên là Products và một bảng tên là Companies. Bạn muốn chèn thông tin mới về sản phẩm từ một máy chủ liên kết vào trong bảng Products. Bảng Products có khóa ngoại tham chiếu đến bảng Companies. Một Trigger UPDATE được định nghĩa trong bảng Products. Bạn phải thực hiện như thế nào? a) Dùng câu lệnh ALTER TABLE và tùy chọn DISABLE TRIGGER ALL để thay đổi bảng dữ liệu Products b) Dùng câu lệnh ALTER TABLE và tùy chọn DISABLE TRIGGER ALL để thay đổi bảng dữ liệu Companies c) Dùng câu lệnh ALTER TABLE và tùy chọn NOCHECK CONSTRAINT để thay đổi bảng dữ liệu Companies d) Dùng câu lệnh ALTER TABLE và tùy chọn NOCHECK CONSTRAINT để thay đổi bảng dữ liệu Products 3 Bạn cần cấp cho một nhân viên có quyền dbo để truy cập vào Database Marketing đang cài đặt trên SQL Server 2000. Thủ tục nào sau đây bạn sẽ dùng để thực hiện việc này : a) sp_addrole b) sp_addlogin c) sp_grantlogin d) sp_grantdbaccess 4 Một thủ tục được tự động thực hiện khi ta thay đổi dữ liệu trong 1 table của SQL Server qua các lệnh Update, Insert, Delete thuộc loại: a) Trigger b) Stored Procedure c) Extended Stored Procedure d) Rule
5
Lệnh nào dưới đây được dùng để tạo 1 login mới Create Longin_ID a) sp_addlogin b) Create Login c) sp_create_login
6 a) b) c) d)
Lệnh nào dưới đây được dùng để xóa 1 login ID ra khỏi SQL Server sp_droplogin drop login sp_removelogin Chỉ có thể xóa các login bằng Enterprise Manager
7 Bạn đã tạo database Customers bao gồm một data file đặt trong Primary filegroup , và một Log file. Bạn muốn tăng kích thước của database thêm 150Mb bằng cách tạo thêm 3 data file và đặt trong một filegroup mới. Bạn sẽ thực hiện bằng cách nào : a) Tạo mới một filegroup bằng lệnh ALTER DATABASE customers ADD FILEGROUP secondFG Và tạo thêm ba data file theo cùng một cách tạo : ALTER DATABASE customers ADD FILE ( NAME = datafile1 , FILENAME = ' c:\data1.ndf' , SIZE = 50 , MAXSIZE = 100 , FILEGROWTH = 10 ) TO FILEGROUP secondFG b) Tạo thêm ba data file theo cùng một cách tạo : ALTER DATABASE customers ADD FILE ( NAME = datafile1 , FILENAME = ' c:\data1.ndf' , SIZE = 50 , MAXSIZE = 100 , FILEGROWTH = 10 ) c) Tạo mới một filegroup bằng lệnh : ALTER DATABASE customers ADD FILEGROUP secondFG DEFAULT Và tạo thêm ba data file theo cùng một cách tạo : ALTER DATABASE customers ADD FILE ( NAME = datafile1 , FILENAME = ' c:\data1.ndf' , SIZE = 50 , MAXSIZE = 100 , FILEGROWTH = 10 ) d) Tạo thêm ba data file theo cùng một cách tạo : ALTER DATABASE customers ADD FILE ( NAME = datafile1 , FILENAME = ' c:\data1.ndf' , SIZE = 50 , MAXSIZE = 100 , FILEGROWTH = 10 ) TO FILEGROUP secondFG Và tạo mới một filegroup bằng lệnh : ALTER DATABASE customers ADD FILEGROUP secondFG
8 Bạn đã tạo một database cho ứng dụng Quản lý Hiệu suất công vịêc của công ty NorthWind Trader. CREATE DATABASE Efficiency ON PRIMARY ( NAME = EfficiencyData, FILENAME = N'c:\data\EfficiencyData.mdf', SIZE = 200, MAXSIZE = 400, FILEGROWTH = 10) LOG ON ( NAME = EfficiencyLog, FILENAME = N'd:\data\EfficiencyLog.ldf', SIZE = 50, MAXSIZE = 100, FILEGROWTH = 10) Sau một thời gian sử dụng, bạn thấy cần phải tăng kích thước cho data file đến 500MB . Câu lệnh nào giúp bạn thực hiện việc này : a) ALTER DATABASE Efficiency MODIFY FILE (NAME = EfficiencyData, MAXSIZE = 500MB) b) ALTER FILE EfficiencyData (MAXSIZE = 500MB) c) sp_filemaxsize EfficiencyData, 500 d) INCREASE FILE EfficiencyData TO 500MB 9 Bạn đang quản trị một Database server. Server chứa nhiều database của nhiều khách hàng. Một vài database không còn sử dụng nữa. Bạn quyết định xóa 3 database là Student1 , Student2 , Student3 để giải phóng không gian lưu trữ trên đĩa. Lệnh nào bạn sẽ chọn để thực hiện việc này : a) DELETE Student1 GO DELETE Student2 GO DELETE Student3 b) EXEC sp_dropdatabase Student1 EXEC sp_dropdatabase Student2 EXEC sp_dropdatabase Student3 c) DROP DATABASE 'Student%' d) DROP DATABASE Student1, Student2, Student3 10 Bạn vừa tạo database Customers bằng lệnh sau : CREATE DATABASE Customers ON PRIMARY ( NAME = CustData, FILENAME = N'c:\Data\CustData.mdf', SIZE = 200 ) LOG ON ( NAME = CustLog, FILENAME = N'd:\data\CustLog.ldf' ) Bạn phát hiện đã quên không đặt một số tham số vào trong lệnh ví dụ như kích thước tối đa, …Có vấn
đề gì ở đây ? a) Database được tạo với tham số default b) Database được tạo với giá trị các tham số không xác định c) Database được tạo với giá trị các tham số được xác định theo database Model d) Lệnh thực thi database không thành công 11 Bảng Customers sẽ được đặt trong các data file thuộc filegroup nào , sau khi thực thi lệnh : CREATE TABLE Customers ( CustomerID nchar (5) NOT NULL IDENTITY(1, 1), LastName nvarchar (40) NOT NULL, FirstName nvarchar (30) NULL, MiddleInitial nvarchar (3) NULL, ContactTitle nvarchar (30) NULL, Address nvarchar (60) NULL, City nvarchar (15) NULL, CONSTRAINT PK_Customers PRIMARY KEY CLUSTERED (CustomerID) ) a) Primary filegroup b) default filegroup c) user_defined filegroup d) Không được đặt trong filegroup nào 12 Các System Table và các System Object khác trong một User_defined Database được đặt trong các data file thuộc filegroup nào : a) Primary filegroup b) default filegroup c) user_defined filegroup d) secondary filegroup 13
Phát biểu nào sau đây là SAI : a) Cấu trúc lưu trữ của một database gồm tối thiều một Data file, một Log file . b) Cấu trúc lưu trữ của một database gồm tối thiều một Data file đựơc đặt trong các data file thuộc Primary filegroup c) Một Data file chỉ thuộc về một filegroup. Một Log file không khi nào thuộc một filegroup. d) Các file và filegroup của một database không thể dùng chung với databse khác.
14 Sau khi thực thi lệnh DROP DATABASE để xóa một database , Bạn cần thực hiện thao tác nào tiếp theo để giải phóng chỗ trống trên đĩa. a) Xoá các database file b) Xoá các database file từ Enterprise Manager , rồi xoá các file này một lần nữa bằng Windows Explorer c) Không phải làm gì nữa d) Sử dụng DBCC SHRINKDATABASE 15 Bạn chỉ muốn tạo một chỉ mục trên cột làm khoá chính của bảng Student , và chỉ mục phải là Nonclusterd index. Bạn sẽ thực hiện bằng đoạn script nào : a) CREATE TABLE student ( student_id int PRIMARY KEY, lname char(15) , fname char(15) ) go CREATE UNIQUE NONCLUSTERED INDEX idx_studentid ON student(student_id) b) CREATE TABLE student ( student_id int , lname char(15) , fname char(15) )
go CREATE UNIQUE NONCLUSTERED INDEX idx_studentid ON student(student_id) go ALTER TABLE student ADD CONSTRAINT pk_stid PRIMARY KEY(student_id) c) CREATE TABLE student ( student_id int PRIMARY KEY NONCLUSTERED, lname char(15) , fname char(15) ) d) CREATE TABLE student ( student_id int , lname char(15) , fname char(15) , PRIMARY NONCLUSTERED (student_id) ) 16 Bảng Sinh viên trong database Quản lý sinh viên gồm các cột : Mã sinh viên (student_id) , Họ sinh viên (lname) , Tên sinh viên (fname), Mã lớp (class_id) . Một khối lượng lớn dữ liệu được lưu trữ trong table này. Bạn khảo sát và thấy rằng : có rất nhiều truy vấn thực hiện trên table Sinh viên. Các truy vấn thường dựa vào Mã sinh viên để lấy ra thông tin của từng Sinh viên , Nhưng có nhiều truy vấn lấy ra một nhóm sinh viên dựa vào Mã lớp. Để tăng tốc độ thực thi các truy vấn này, bạn quyết định tạo chỉ mục trên bảng Sinh viên . Bạn sẽ thực hiện bằng cách nào : a) Bạn cần tạo một chỉ mục NonClustered Index trên cột Mã sinh viên , một chỉ mục Clustered Index trên cột Mã lớp b) Bạn cần tạo một chỉ mục Clustered Index trên cột Mã sinh viên , một chỉ mục NonClustered Index trên cột Mã lớp c) Bạn cần tạo một chỉ mục Clustered Index trên cột Mã sinh viên , một chỉ mục Clustered Index trên cột Mã lớp d) Bạn cần tạo một chỉ mục NonClustered Index trên cột Mã sinh viên , một chỉ mục NonClustered Index trên cột Mã lớp 17 Các chỉ mục (Index) được xây dựng dựa trên một hay một số Field trong table. Khi đó các Field này được gọi là : a) the secondary key b) the primary key c) the major key d) the index key 18
Index có thể được tạo trên loại đối tượng : a) table b) view c) table và view d) table, temporary table và view
19 Một chỉ mục được tự động tạo trên cột làm khoá chính khi thực hiện lệnh tạo table Student . Chỉ mục này thuộc loại nào : CREATE TABLE student ( student_id int PRIMARY KEY, lname char(15) , fname char(15) ) a) Clustered index b) NonClustered index c) Clustered , Unique index
d) Unique index 20
Trong các phát biểu sau , phát biểu nào là SAI : a) Một chỉ mục được tự động tạo trên cột làm khoá chính khi thực hiện lệnh tạo table b) Có hai loại chỉ mục là Clustered index và Nonclusterd index c) Trong một table , có thể tạo nhiều Clustered index , và một Nonclustered index d) Trong một table , chỉ có thể tạo một Clusterd index , và nhiều Nonclustered index
21 An tạo một table Nhanvien. An cấp quyền Select trên table Nhanvien cho Bi. Bi tạo một table có tên là Hoadon với một khoá ngoại tham chiếu đến table Nhanvien . Nhưng khi thi hành lệnh tạo table Hoadon , Bi nhận được một thông báo lỗi . Vấn đề Bi gặp phải là gì ? a) Bi cần phải được cấp quyền References trên table Nhanvien thì mới có thể tạo được table có khoá ngoại tham chiếu đến table Nhanvien b) Bi cần phải được cấp quyền Insert, Update, Delete trên table Nhanvien thì mới có thể tạo được table có khoá ngoại tham chiếu đến table Nhanvien c) Bi cần phải là owner của table Nhanvien d) Bi cần phải có quyền Select trên cột làm khoá chính của table Nhanvien 22 Bạn là DBA . Bạn được yêu cầu tạo một Login account và cấp quyền truy cập vào Sales database cho An một User mới . Bạn thực hiện yêu cầu này bằng sử dụng hộp thoại New Login trong Enterprise Manager để tạo Login account , và chọn Default Database là Sales . Bạn đã báo cho An password để login vào SQL Server . Tuy nhiên sau đó, bạn nhận được thông báo rằng : An không thể vào được Sales database. Vậy lỗi ở đây là gì ? a) Bạn đã quên không cấp quyền cho An là user của Sales database b) An đã gõ sai password c) An đã connect không đúng server d) Gồm cả 3 lỗi trên 23 Database Northwind có table Customers ,và 4 user là A , B, C và D . User A có quyền như DB Owner, các user B, C và D thuộc role public . Các lệnh sau lần lượt được thực hiện : A : GRANT SELECT ON customers TO B WITH GRANT OPTION A : GRANT SELECT ON customers TO C WITH GRANT OPTION B : GRANT SELECT ON customers TO D WITH GRANT OPTION C : GRANT SELECT ON customers TO D D : GRANT SELECT ON customers TO C WITH GRANT OPTION A : REVOKE SELECT ON customers FROM B CASCADE Sau khi các lệnh trên được thực hiện tuần tự , phát biểu nào sau đây là đúng ? a) D có quyền SELECT trên table customers , nhưng không có quyền cấp lại b) D có quyền SELECT trên table customers , và có quyền cấp lại c) Tuy D có tùy chọn GRANT SELECT ON customers cho user khác , nhưng không có quyền này đối với user B và C d) D không có quyền SELECT ON customers 24 Giả sử bạn là DBA trong một Công ty lớn có hàng trăm nhân viên. Công ty sử dụng một DB cài đặt trên SQL Server 2000. Bạn đã tạo một số role phù hợp với quyền làm việc trên DB theo chức năng của các phòng ban . Các nhân viên đã được cấp quyền thông qua role . Chẳng hạn , các nhân viên thuộc phòng Bán hàng thuộc về role Sales , các nhân viên thuộc phòng Kế tóan thuộc về role Account ... Một vấn đề mới phát sinh : ông trưởng phòng Bán hàng muốn hạn chế bớt quyền của 10 nhân viên trong số 100 nhân viên của phòng . Những nhân viên này sẽ không có quyền nhập các hóa đơn bán hàng (trong table Hoadon) , nhưng vẫn có những quyền hạn khác. Cách tốt nhất để thực hiện việc này là :
a) Tạo một role mới và di chuyển 10 nhân viên sang role mới. Role mới sẽ chứa các quyền giống như role Sales nhưng không có quyền trên table Hoadon b) Tạo một role mới và cấp role cho 10 nhân viên . Role mới chỉ chứa quyền SELECT trên table Hoadon c) Tạo một role mới và cấp role mới cho 10 nhân viên . Role mới chứa lệnh DENY cấm mọi chỉnh sửa trên table Hoadon d) Thực hiện lệnh DENY cho từng nhân viên trong số 10 nhân viên cần hạn chế quyền 25
Giả sử bạn là một DBA , bạn muốn tất cả các nhân viên thuộc phòng Tài chính không được phép
chỉnh sửa dữ liệu trong table Hoadon , chỉ được phép xem dữ liệu trong table này .Hiện tại, các nhân viên này đang thuộc về một Account role , có các quyền SELECT , INSERT , UPDATE , DELETE trên table Hoadon . Bạn cần làm thế nào ? a) Xóa tất cả các nhân viên khỏi Account role b) Thực hiện lệnh REVOKE để xóa bỏ tất cả quyền đã cấp cho các nhân viên c) Thực hiện một câu lệnh GRANT để cấp quyền SELECT cho các nhân viên này. d) Thực hiện một lệnh DENY để cấm các quyền chỉnh sửa dữ liệu trên bảng Hoadon. 26 Một nhân viên được chuyển từ phòng Marketing sang phòng Nhân sự . Bạn cần xóa bỏ quyền truy cập vào Database Marketing của nhân viên này . Thủ tục nào bạn có thể sử dụng để thực hiện : a) sp_revokeddbaccess b) sp_change_user_login c) sp_grantdbaccess d) sp_denylogin 27 Tuấn cấp quyền cho Minh được thực thi lệnh SELECT trên bảng Nhanvien . Minh tạo một View trên bảng Nhanvien , và cấp quyền SELECT trên bảng Nhanvien và trên View cho Lan . Sau đó , Tuấn quyết định thu hồi lại quyền SELECT trên Nhanvien của Minh , bằng lệnh : REVOKE SELECT ON Nhanvien FROM Minh CASCADE Khi đó , điều gì xảy ra khi Lan thực hiện lệnh SELECT trên table Nhanvien ? a) Lan sẽ nhận được một thông báo lỗi về quyền. b) Lan sẽ nhận được một tập record rỗng c) Lan sẽ chẳng nhận được tập record nào d) Lan sẽ nhận được tập record mong muốn . 28 Bạn là người quản trị database của công ty A .Phòng Tổ chức của công ty đang sử dụng một database NhanvienDB , gồm các table sau : table Nhanvien _ lưu dữ liệu về TênNV, Địa chỉ , Phòng ban , Mức lương . table Phucap_ lưu dữ liệu về Lợi tức chia thêm mỗi tháng cho nhân viên. table Thuong_ lưu dữ liệu về Tiền thưởng cho nhân viên. Phòng Tổ chức muốn các dữ liệu về TênNV, Địa chỉ và Tiền thưởng có thể được xem bởi bất cứ ai có quyền truy cập vào DB. Nhưng các dữ liệu về Mức lương căn bản, Lợi tức chia thêm thì chỉ được sử dụng bởi một số người nhất định . Bạn sẽ thực hiện yêu cầu này như thế nào ? a) Tạo một view chứa TênNV, Địa chỉ, Tiền thưởng. Cấp quyền SELECT trên view cho các user truy cập database là Guest. b) Chỉnh sửa bảng Nhanvien như sau : di chuyển cột chứa dữ liệu về Mức lương sang một table mới. Sau đó cấp quyền SELECT trên table Nhanvien cho các user là Guest c) Tạo một thủ tục thực hiện : lấy tất cả dữ liệu từ hai bảng Nhanvien và Thuong , rồi chèn dữ liệu vào một table tạm , cấp quyền SELECT trên table này cho user hiện hành. Quyền thực thi thủ tục này được cấp cho user là Guest. d) Tạo một trigger trên bảng Nhanvien để kiểm soát các thao tác trên cột Mức lương . 29 Trong database của một ngân hàng A , dữ liệu của table Khachhang được phân bố ngang qua 4 server . ServerA lưu dữ liệu các khách hàng có tên với ký tự đầu từ A đến F . ServerB lưu các khách hàng có tên với ký tự đầu từ G đến M . ServerC lưu các khách hàng có tên với ký tự đầu từ N đến T . Và ServerD lưu các khách hàng có tên với ký tự đầu từ T đến Z. Người ta sử dụng một Partitioned View có tên vwKH để truy xuất dũ liệu của table Khachhang . Bạn hãy cho biết câu lệnh nào sau đây sẽ dùng để cập nhật cột Tinhtrang của các khách hàng có tên bắt đầu bằng ký tự J a) UPDATE Khachhang SET Tinhtrang = 1 WHERE ServerB.Khachhang.TenKH = ‘J’ b) UPDATE ServerB.vwKH SET Tinhtrang = 1
WHERE ServerB.Khachhang.TenKH = ‘J’ c) UPDATE vwKH SET Tinhtrang = 1 WHERE TenKH LIKE ‘J%’ d) UPDATE vwKH SET Tinhtrang = 1 WHERE TenKH = ‘J’ 30 Dựa trên table sau : Create table Student ( student_id int NOT NULL UNIQUE, lname char(15) , fname char(15) ) một View được tạo bao gồm tất cả các cột trong table , trừ cột student_id . Bạn có thể thực hiện những thao tác nào trên View : a) Các lệnh Insert thực hiện được trên View, nhưng lệnh Update thì không b) Các lệnh Insert thực hiện được trên View, nhưng lệnh Delete thì không c) Các lệnh Insert không thực hiện được trên View d) Các lệnh Insert thực hiện được trên View, nhưng lỗi sẽ xuất hiện nếu nhập giá trị trùng lắp vào cột student_id 31 Giả sử bạn là người quản trị database của công ty X . Dữ liệu khách hàng của công ty được lưu trữ trong bảng Khachhang Trưởng phòng kinh doanh muốn phân công cho An quản lý khách hàng thuộc thành phố Hồ Chí Minh. Thực hiện yêu cầu này , Bạn đã tạo một view tên vwCust1 và cấp quyền cho An sử dụng view . CREATE VIEW vwCust1 AS SELECT Makh, Tenkh, Dienthoai , Tpho FROM Khachhang WHERE Tpho like 'tp Hcm' WITH CHECK OPTION An cần thêm 1 khách hàng vào table Khachhang. Vậy An có thể sử dụng lệnh nào ? a) INSERT vwCust1 VALUES('a0001' , 'John Black' ,'09125480' , NULL) b) INSERT vwCust1 VALUES('a0001','John Black' ,'09125480' , 'tp Hcm') c) INSERT vwCust1 VALUES('a0001','John Black' ,'09125480' , 'tp Hue') d) INSERT vwCust1 VALUES('a0001','John Black' ,'09125480' ) 32
Lựa chọn WITH ENCRYPTION trong lệnh tạo một view có nghĩa là gì ? a) Các query truy xuất view sẽ được mã hoá trước khi gửi tới SQL Server b) SQL Server mã hoá một mục vào (entry) tương ứng trong bảng syscomments để không ai , kể cả người tạo View, có thể đọc được lệnh tạo View. c) SQL Server mã hoá một mục vào (entry) tương ứng trong bảng syscomments để không ai có thể đọc được lệnh tạo View , ngoại trừ người tạo View d) SQL Server xoá mục vào (entry) tương ứng trong bảng syscomments để không ai có thể đọc được lệnh tạo View
33 Bạn đang thiết kế database cho ứng dụng quản lý bán hàng của một nhà máy Rượu. Bạn tạo bảng Quán ăn (Restaurants) để lưu tất cả các quán ăn là khách hàng của nhà máy. CREATE TABLE Restaurants ( RestaurantID int NOT NULL PRIMARY KEY, RestaurantName nvarchar (40) NOT NULL,
RestaurantOwner nvarchar (30) NULL, Address nvarchar (60) NULL, City nvarchar (15) NULL, Phone nvarchar (24) NULL, Fax nvarchar (24) NULL, HomePage ntext NULL, UNIQUE (RestaurantName, City) ) Trong câu lệnh trên có khai báo một ràng buộc Unique. Ràng buộc này đựơc dùng để : a) Đảm bảo mỗi tên quán ăn phải duy nhất trong bảng. b) Đảm bảo tên quán ăn và thành phố phải không chứa giá trị NULL. c) Đảm bảo không có hai quán ăn trùng tên trong cùng một thành phố. d) Đảm bảo không có hai quán ăn trùng tên trong hai thành phố khác nhau. 34 Bạn đang thiết kế database cho ứng dụng quản lý Thuê xe . Database gồm các bảng Khách hàng (Customers) , Hợp đồng (Argreements), Xe (Cars). Mỗi khách hàng có thể thuê một hay nhiều xe. Mỗi xe chỉ có thể được thuê bởi một khách hàng trong một thời điểm. Bạn cần thiết lập một ràng buộc giữa bảng Hợp đồng và bảng Xe. Bạn sẽ chọn cách nào để thực hiện việc này : a) Thêm một ràng buộc CHECK trên cột AgreementID b) Thêm field CarID vào bảng Agreements với một ràng buộc FOREIGN KEY tham chiếu tới bảng Cars c) Thêm field AgreementID vào bảng Cars với một ràng buộc FOREIGN KEY tham chiếu tới bảng Agreements d) Thêm một trigger kiểm soát thao tác Insert vào table Cars 35 Bạn đang thiết kế một database cho một nhà máy Rượu vang. Cần phải ghi nhận công việc của công nhân trong mùa thu hoạch nho . Người công nhân sau khi hái đầy nho vào giỏ, họ mang tới cân giỏ nho và lại tiếp tục công việc. Cứ mỗi một lần cân giỏ nho, thì khối lượng giỏ nho, ngày giờ thực hiện, và mã người công nhân đựơc ghi nhận lại . Bạn thiết kế một table cho việc này như sau : CREATE TABLE weighing ( WeighingDateTime datetime NOT NULL DEFAULT Getdate(), Weight int NOT NULL DEFAULT 0, EmployeeID int NOT NULL ) Bạn muốn giá trị nhập vào cột Weight là số dương . Vậy cần dùng phương thức nào để thực hiện yêu cầu này : a) Chỉnh sửa table và thêm một ràng buộc Check trên cột Weight b) Tạo một rule và một kiểu dữ liệu mới. Gán buộc rule cho kiểu dữ liệu. Chỉnh sửa table để thay đổi kiểu dữ liệu của cột Weight là kiểu dữ liệu vừa tạo. c) Viết một thủ tục thực hiện việc : chèn dữ liệu vào table , kiểm tra giá trị, ngăn chặn chèn dữ liệu trực tiếp d) Viết một trigger kiểm tra giá trị trong cột Weight và hủy các lệnh insert nếu giá trị nhập vào là số âm 36 Các ràng buộc được thực hiện để bảo đảm dữ liệu cập nhật đuợc chính xác và nhất quán. Các ràng buộc này được gọi là: a) relational constraints. b) table constraints. c) data constraints. d) integrity constraints. 37 Khi thiết kế một database cho ứng dụng quản lý việc đặt chỗ và cho thuê phòng của một khách sạn , bạn quên thiết lập mối quan hệ giữa bảng Phòng(Rooms) và bảng Đặt chỗ (Reservations) . Bạn cần bổ sung bằng lệnh nào sau đây : a) ALTER TABLE Reservations ADD FOREIGN KEY (RoomID) REFERENCES Rooms(RoomID) b) ALTER TABLE Reservations ADD RELATION Rooms ON RoomID c) ALTER TABLE Reservations ADD CONSTRAINT FK_Reservations_Rooms FOREIGN KEY REFERENCES Rooms(RoomID) d) CREATE FOREIGN KEY Reservations.RoomID REFERENCES Rooms(RoomID)
38
Những người sử dụng bảng Customers trong database quản lý khách hàng đều mong muốn một số field có chứa sẵn giá trị để không phải nhập vào . Ví dụ :90% khách hàng đều ở "tp HCM" , do vậy nếu cột City mang sẵn giá trị "tp HCM" thì sẽ nhanh hơn khi nhập dữ liệu. Cách nhanh nhất để thực hiện yêu cầu này là : a) Sử dụng Triggers b) Sử dụng User-defined datatypes c) Sử dụng Check constraint d) Sử dụng Default constraint
39 Ràng buộc yêu cầu giá trị của cột là khoá ngoại phải nằm trong tập giá trị của cột là khoá chính được gọi là a) Entity integrity b) Domain integrity c) Referential integrity d) User-defined integrity 40 Trong database Sales có bảng Khachhang và bảng Hoadon. Mỗi một hoá đơn chỉ bán cho một khách hàng , và mỗi một khách hàng có thể không có hoặc có nhiều hoá đơn. Nên chọn các cột làm khóa chính và khoá ngoại trong các bảng như thế nào ? a) Trong bảng Khachhang chọn khoá chính là Mã hóa đơn (MaHD) . Trong bảng Hoadon chọn khoá chính là Mã khách hàng (MaKH) b) Trong bảng Khachhang chọn khoá chính là Mã khách hàng (MaKH) . Trong bảng Hoadon chọn khoá chính là Mã khách hàng (MaKH) c) Trong bảng Khachhang chọn khoá chính là Mã khách hàng (MaKH) . Trong bảng Hoadon chọn khoá ngoại là Mã hoa don (MaHD) d) Trong bảng Khachhang chọn khoá chính là Mã khách hàng (MaKH) . Trong bảng Hoadon chọn khoá ngoại là Mã khách hàng (MaKH) 41 Ed là 1 nhà quản trị CSDL của công ty FlyFastCourier. Công ty đang cập nhật lại SQL server của họ và muốn lưu trữ các chi tiết như kích cỡ và các thông tin khác của DB. Hãy giúp Ed xem các thông tin này a) sp_helptext b) sp_databases c) sp_help d) sp_helpdb 42 Thủ tục hệ thống nào được dùng để xem thông tin về các đối tương của Database cũng như loại dữ liệu của người dùng a) sp_lock b) sp_helptext c) sp_help d) sp_helpuser 43 Bạn cần tạo CSDL tên Toys có ít nhất 50MB trống dành cho dữ liệu và kích cỡ lúc đầu 15MB dành cho transaction log. Lệnh nào sau đây bạn nên dùng để tạo CSDL? a) CREATE DATABASE Toys ON (NAME = Toys_dat,SIZE = 50 )LOG ON (NAME = Toys_log,SIZE = 15 ) b) CREATE DATABASE Toys ON (NAME = Toys_dat,FILENAME = 'D:\Microsoft SQL Server\MSSQL\Data\Toys.mdf',SIZE = 60 ) c) CREATE DATABASE Toys ON (FILENAME = 'D:\Microsoft SQL Server\MSSQL\Data\Toys.mdf',SIZE = 51200 ) LOG ON (FILENAME = 'D:\Microsoft SQL Server\MSSQL\Data\Toys.ldf',SIZE = 15360 ) d) CREATE DATABASE Toys ON (NAME = Toys_dat,FILENAME = 'D:\Microsoft SQL Server\MSSQL\Data\Toys.mdf',SIZE = 50 ) 44 Việc lưu trữ dữ liệu trong một cơ sở dữ liệu được thực hiện thông qua 3 loại file – sơ cấp .mdf, thứ cấp .ndf và nhật ký .log. Nếu tập tin thứ cấp bị đầy , bạn sẽ lưu trữ dữ liệu phát sinh thêm như thế nào vào CSDL? a) Tạo một file sơ cấp khác b) Tạo 1 file thứ cấp khác
c) Tạo 1 file nhật ký khác d) Tạo thêm 1 file sơ cầp và thứ cấp 45
46
DB nào được dùng bởi SQL server để sắp xếp dữ liệu trước khi trả kết quả về cho người dùng a) master b) msdb c) tempdb d) model Mô hình client/server thuộc kiến trúc nào sau đây: a) Kiến trúc 1 lớp (single-tier) b) Kiến trúc 2 lớp (Two-tier) c) Kiến trúc 3 lớp (Three-tier) d) Đa kiến trúc ( multi-tier)
47
Một filegroup là a) Là 1 tập hợp các file sơ cấp ( primary) và thứ cấp (secondary) b) Có thể tồn tại 1 cách độc lập c) Có thể chứa các file transaction log d) Chứa thông tin về các file, kích cỡ file và tỷ lệ gia tăng file
48
Đối tượng nào sau đây để tăng tốc truy tìm các hàng trong 1 bảng hay view a) Ràng buộc (constraints) b) Triggers c) Stored procedures d) Chỉ mục (Indexes)
49 Để lưu trữ chi tiết hoá đơn, một bảng có tên là Orders được tạo ra theo lệnh sau: CREATE TABLE Orders ( cOrderNo char(4) not null, cCustomerId char(4) not null, mTax money not null, mOrderCost money not null constraint chkOrderCost check(mOrderCost>0)) a) Mã khách hàng cCustomersId nên cho phép có giá trị NULL b) Trị giá hoá đơn mOrderCost nên luôn luôn là 1 số dương c) Ngày lập hoá đơn (dOerderDate) nên luôn luôn là ngày hiện hành d) Số hoá đơn (cOrderNo) không được phép có giá trị trùng nhau 50 Lệnh nào dùng để thêm cột Emp_EmailId vào bảng Emp_details với kiểu dữ liệu là varchar và kích cỡ là 20 a) Alter COLUMN EMP_Details ADD (Emp_EmailId) vchar(10) NOT NULL b) Alter COLUMN EMP_Details ADD (Emp_EmailId) varchar(10) c) Alter EMP_Details ADD Emp_EmailId varchar(10) d) Alter Table EMP_Details ADD Emp_EmailId varchar(10) 51
Constraint nào được dùng để gán giá trị hằng cho 1 cột? a) PRIMARY KEY b) UNIQUE c) CHECK d) DEFAULT
52
Xác định thủ tục hệ thống nào được dùng để tạo loại dữ liệu của người dùng a) sp_addtype b) sp_droptype c) sp_bindrule d) sp_unbindrule
53
Rắc rối nào xảy ra khi primary key cho phép có giá trị NULL a) Khó xác định tính duy nhất của các hàng b) Khó xác định tính duy nhất của các cột c) Khó kết nối các bảng
d) Khó xác định foreign key 54
Xác định tuỳ chọn nào đúng khi nói về nonclustered index a) Dữ liệu được sắp xếp 1 cách vật lý b) Thứ tự của index giống như thứ tự vật lý của các hàng trong bảng c) Thứ tự của index không giống như thứ tự vật lý của các hàng trong bảng d) Nonclustered index không được tạo ra trên các cột đã được dùng trong các mệnh đề JOIN và WHERE
55
Xác định loại bảo toàn dữ liệu (data integrity) nào được xác định bởi thuộc tính primary key a) Bảo toàn tham chiếu (referential integrity) b) Bảo toàn thực thể ( entity integrity) c) Bảo toàn miền ( Domain integrity) d) Bảo toàn được xác định bởi người dùng ( user-defined integrity)
56 Sara muốn bảo đám rằng chỉ có 1 một bản ghi cho mỗi sinh viên trong bảng students. Loại bảo toàn dữ liệu nào sau đây được sử dụng a) Bảo toàn thực thể (Entity integrity) b) Bảo toàn miền (Domain integrity) c) Bảo toàn tham chiếu (Referential integrity) d) Bảo toàn thủ tục ( Procedure integrity) 57 Jenny muốn lưu trữ chi tiết các nhà cung cấp vật liệu cho nhà máy cô đang làm việc. Cô tạo ra 1 loại dữ liệu của người dùng ( user-defined datatype) dùng cho cột address_details và đã tạo ra 1 rule gắn kết vào cột này. Phát biểu nào sau đây là đúng trong ngữ cảnh này a) Rule sẽ ảnh hưởng đến tất cả các cột trong CSDL b) Rule sẽ ảnh hưởng đến tất cả các bảng mà có cột cũng dùng cùng kiểu dữ liệu người dùng này c) Rule sẽ ảnh hưởng đến tất cả các bảng trong CSDL d) Rule sẽ chỉ ảnh hưởng đến các bảng mà tên của nó được xác định trong lúc gắn kết ( binding) 58 Hãy khảo sát lệnh tạo bảng Project sau: CREATE TABLE Project (cProjectCode char(6) not null,cProjectName char(20) not null,iDuration int) Bạn nên làm gì để mã project (Project Code) có định dạng [0-9][0-9][0-9]? a) Tạo 1 chỉ mục clustered cho thuộc tính cProjectCode b) Thêm 1 constraint kiểu unique cho thuộc tính cProjectCode c) Thêm 1 constraint kiểu check cho thuộc tính cProjectCode d) Tạo 1 default rồi gắn nó cho thuộc tính cProjectCode 59
Để tạo bảng Employee, loại dữ liệu mới typEmployeeCode đã được tạo ra cho trường cEmployeeCode. Bạn nên thực hiện lệnh gì để sử dụng loại dữ liệu mới này trong bảng Employee? a) Dùng lệnh sp_bindefault để gắn loại dữ liệu này vào trường typEmployeeCode của bảng Employee b) Dùng lệnh sp_binrule để gắn loại dữ liệu này vào trường typEmployeeCode của bảng Employee c) Dùng loại dữ liệu mới này ngay trong lệnh CREATE TABLE để tạo bảng Employee d) Dùng lệnh sp_addtype để thêm loại dữ liệu này vào bảng Employee
60 Bảng Products có các trường sau: product ID, product name, price,quantity on hand. Từ khoá nào sau đây bạn nên dùng để trường product ID có tính chất tăng tự động (auto-increment). Mã (Product ID) cho sản phẩm (product) đầu tiên trong bảng nên bắt đầu bằng 1 và tăng tự động là 1 cho các sản phẩm kế tiếp a) SEED b) INCREMENT c) IDENTITY d) AUTOINCREMENT 61 Bảng sale cần được tạo với 1 số điều kiện sau: Điều kiện 1: Không có truờng nào được để trống Điều kiện 2:Giá trị cùa thành tiền ( sale amount ) phải dương
Điều kiện 3: Giá trị mặc định của ngày bán hàng (sale date) nên là ngày hiện hành Điều kiện 4: Mã sale ID không được phép có giá trị trùng nhau Lệnh sau được dùng để tạo bảng trên CREATE TABLE Sales ( cSalesId char(4) constraint pkSales primary key, mSalesAmount money not null, mTax money not null, dSalesDate datetime not null constraint defOrderdate DEFAULT getdate() ) Điều kiện nào ở trên đuợc thể hiện trong lệnh tạo bảng ? a) Điều kiện 1 và 2 b) Điều kiện 1 và 3 c) Điều kiện 1 và 4 d) Điều kiện 1,3 và 4 62
Phát biểu nào sau đây là đúng khi nói về chỉ mục nonclustered a) Chỉ mục nonclustered được tạo chủ yếu là trên khoá ngoại b) Chỉ có duy nhất một chỉ mục nonclustered cho mỗi bảng c) Chỉ mục nonclustered nên được tạo trước khi tạo chỉ mục clustered d) Chỉ mục nonclustered không bắt buộc tính duy nhất của các bản ghi
63 Anna được giao nhiệm vụ cải thiện việc thực thi cho truy vấn có liên quan đến 2 bảng, student và marks. Sau khi phân tích, cô ta nhận thấy rằng bảng student hiếm khi bị cập nhật, còn bảng marks thì có rất nhiều transaction. Vì vậy cô ta quyết định tạo các chỉ mục cho các bảng này. Tổ hợp nào sau đây mà cô ta nên dùng để tối ưu hoá việc thực thi truy vấn? a) Bảng Student : tạo chỉ mục clustered trên trường roll_numberBảng Marks : tạo chỉ mục nonclustered trên trường roll_number b) Bảng Student :tạo chỉ mục unique clustered trên trường roll_numberBảng Marks : tạo chỉ mục clustered trên trường roll_number c) Bảng Student :tạo chỉ mục unique clustered trên trường roll_numberBảng Marks : tạo chỉ mục nonclustered trên trường roll_number d) Bảng Student :tạo chỉ mục unique nonclustered trên trường roll_numberBảng Marks : tạo chỉ mục nonclustered trên trường roll_number 64
Lệnh nào sau đây là không đúng khi nói về tính bảo toàn dữ liệu? a) Ràng buộc PRIMARY KEY được dùng để bảo đảm là không có giá trị NULL hay trùng nhau trong 1 hàng đã cho của bảng b) Ràng buộc CHECK được dùng để bảo đảm là chỉ có 1 bộ các giá trị xác định đuợc phép nhập vào 1 cột đã cho của bảng c) Ràng buộc UNIQUE KEY được dùng để bảo đảm là các cột giông nhau trong bảng chứa các giá trị giống nhau d) Ràng buộc DEFAULT để bảo đảm là 1 giá trị hằng sẽ được đưa vào 1 cột khi người dùng không xác định nó
65 Loại bảo toàn dữ liệu nào bảo đảm mối quan hệ giữa các bảng được bảo tồn khi các bản ghi được thêm vào hay xoá đi a) Bảo toàn thực thể (Entity Integrity) b) Bảo toàn miền giá trị (Domain Integrity) c) Bảo toàn tham chiếu (Referential Integrity) d) Bảo toàn quy luật của người dùng (User-defined Integrity) 66
John muốn tạo thêm 1 ràng buộc CHECK mà ràng buộc này sẽ bỏ qua không kiểm tra điều kiện của các hàng đã có sẵn trong 1 bảng. Tuỳ chọn nào nên được dùng trong khi tạo ràng buộc này? a) WITH NOCHECK b) WITH CHECK c) WITH RECOMPILE d) NOCHECK
67
Ron muốn lưu trữ tự động ngày hiện hành vào cột Date of Joining khi anh ta nhập 1 bản ghi mới
vào bảng Employee. Anh ta nên dùng cách nào để đạt được ý định này a) Ràng buộc Check b) Ràng buộc Foreign Key c) Default d) Not Null 68 Giả sử đã có 1 bảng có cấu trúc HoChieu như sau: MaHoSo: Char(5), Not null, Unique SoHoChieu:Char(10), Null,Không TenKhach: Char(20),Not null,Không Trường SoHoChieu có giá trị duy nhất cho tất cả các bản ghi hiện có. Tuy nhiên khi người dùng chọn trường này làm khoá chính (primary key) cho bảng bằng lệnh ALTER TABLE thì bị báo lỗi. Hãy cho biết lý do? a) Khoá chính không thể tạo được bằng lệnh ALTER TABLE b) Khóa chính không thể tao được bởi vì đã có sẵn 1 ràng bụôc unique trong bảng c) Khoá chính không thể tạo đựơc trên các trường đã xác định là NULL trong lúc tạo bảng d) Khoá chính không thể tạo được trên những trường có giá trị trùng nhau 69 Để lưu trữ chi tiết sách trong thư viện, bảng Books đã được tạo ra như sau: CREATE TABLE Books ( cBookId char(4) NOT NULL, cTitle char(20) NOT NULL, cAuthor char(30) NOT NULL, sIssueDate datetime NULL) Người ta muốn là khi ngày phát hành (Issue Date) của 1 cuốn sách nào đó không đuợc nhập vào thì ngày hiện hành sẽ được tự động gán vào. Bạn đã tạo ra 1 default như sau: CREATE DEFAULT defDate As Getdate() Sau khi tạo default, bạn quan sát thấy rằng khi thêm 1 bản ghi mới mà không nhập gì vào trường dIssueDate thì ngày hiện hành không được tự động chèn vào mà thay vào đó là giá trị NULL. Lý do gí sau đây khiến cho ngày hiện hành không được tự động chèn vào trường dIssueDate a) Phải tạo 1 rule thay vì default cho trường dIssueDate b) Trường dIssueDate đã được định nghĩa là NULL trong lúc tạo bảng c) Default đã được tạo nhưng chưa được gắn vào trường dIssueDate bằng lệnh sp_bindefault d) Thay vì tạo default, nên tạo 1 kiểu dữ liệu của người dùng riêng cho trường dIssueDate 70
Phát biểu nào sau đây không đúng khi nói về ràng buộc (constraint) khoá chính (Primary Key) a) Ràng buộc khoá chính không cho phép các giá trị Null hay trùng nhau b) Không thể có nhiều hơn 1 khóa chính trong mỗi bảng c) Ràng bụôc khoá chính chỉ có thể được tạo ra trên 1 cột của bảng d) Chỉ mục clustered được tạo tự động khi ràng buộc khoá chính được tạo ra
71 Bảng tmpCount được tạo ra với khoá chính ID là trường số tự động và trường page (số trang) phải nhỏ hơn 50. Lệnh nào sau đây là hợp lệ a) Create table tmpCount (id int identity(1,1), page int constraint check page between 1 and 49) b) Create table tmpCount (id int identity(1,1),page char constraint check page between 1 and 49) c) Create table tmpCount (id char identity(1,1), page int constraint check page between 1 and 49) d) Create table tmpCount (id int identity(1,1), page int constraint check page between 1 and 50) 72 Bạn đang tạo 1 bảng tên là Orders cho công ty. Mỗi hoá đơn (order) chứa số hóa đơn (OrderID), ngày (OrderDate), Mã khách (CustomerID) mã nhà vận chuyển (ShipperID) và ngày chuyển hàng (ShipDate). Số hoá đơn được phát tự động và phải bảo đảm duy nhất. Cá a) CREATE TABLE Orders (OrderID unique identifier PRIMARY KEY NOT NULL, OrderDate datetime NULL, CustomerID char(5) NOT NULL FOREIGN KEY REFERENCES Customer (Customer ID), ShipperID int NOT NULL FOREIGN KEY REFERENCES Shippers(ShipperID), ShipDate
date) b) CREATE TABLE Orders (OrderID int identity (1, 1) PRIMARY KEY NOT NULL, OrderDate datetime NOT NULL, CustomerID char(5) NOT NULL FOREIGN KEY REFERENCES Customer (Customer ID), ShipperID int NOT NULL FOREIGN KEY REFERENCES Shippers(ShipperID), ShipDate datetime Null ) c) CREATE TABLE Orders (OrderID int identity (1, 1) PRIMARY KEY NOT NULL, OrderDate datetime NULL, CustomerID char(5) NOT NULL FOREIGN KEY REFERENCES Customer (Customer ID), ShipperID int NULL, ShipDate datetime Null ) d) CREATE TABLE Orders (OrderID unique identifier PRIMARY KEY NOT NULL, OrderDate datetime NOT NULL, CustomerID char(5) NOT NULL FOREIGN KEY REFERENCES Customer (Customer ID), ShipperID int NOT NULL FOREIGN KEY REFERENCES Shippers(ShipperID), ShipDate datetime Null ) 73 Bảng EmployeeContact có các cột sau:HomePhone, BusinessPhone, FaxNumber, and EmailAddress Bạn phải đảm bảo yêu cầu là mỗi nhân viên phải có ít nhất 1 số điển thoại để liên lạc nghĩa là mỗi bản ghi phải ít nhất 1 giá trị hoặc ở trường HomePhone hoặc trường BusinessPhone. Bạn nên làm gì? a) Tạo 1 rule cấm giá trị null rồi gắn rule này vào cả 2 cột HomePhone và BusinessPhone b) Thêm các constraint kiểu CHECK vào mỗi trường HomePhone và BusinessPhone để cấm giá trị null cho mỗi trường đó c) Thêm 1 ràng buộc kiểu CHECK vào bảng để kiểm tra xem có ít nhất 1 trong 2 giá trị của trường HomePhone và BusinessPhone là khác null hay không d) Tạo 1 trigger đếm số lần có giá trị null trong mỗi cột HomePhone và BusinessPhone, so sánh để commit hay roll back lệnh 74 Bảng Orders được xác định như sau: CREATE TABLE Orders ( OrderID Int IDENTITY (1,1) NOT NULL, SalesPersonID Int NOT NULL, RegionID Int NOT NULL, OrderDate Datetime NOT NULL, OrderAmount Int NOT NULL) Gần đây bảng chứa quá nhiều bản ghi. Bạn muốn xóa toàn bộ các hoá đơn bán hàng đã quá 3 năm. Bạn sẽ dùng truy vấn nào? a) DELETE FROM Orders WHERE OrderDate < DATEADD(YY,-3,GETDATE()) b) DELETE FROM Orders WHERE OrderDate < DATEADD(YY,3,GETDATE()) c) DELETE FROM Orders WHERE OrderDate < GETDATE(), -3 d) DELETE FROM Orders WHERE OrderDate < GETDATE(),+3 75 Một user muốn tạo một báo cáo về các nhân viên (employee) trong công ty. Anh ta muốn hiển thị cột empno với tiêu đề “Employee Number” và cột empname với tiêu đề “ Employee Name”, dữ liệu lấy từ bảng Employees. a) SELECT 'Employee Number' * empno, 'Employee Name' * empname FROM employees b) SELECT empno 'Employee Number ', empname ‘Employee Name' FROM employees c) SELECT empno ('Employee Number'), empname ('Employee Name') FROM employees d) SELECT empno Employee Number,empname Employee Name from employees 76
Lệnh nào sau đây dùng để hiển thị 10 hàng đầu tiên trong bảng Titles a) SELECT * FROM Titles WHERE count(*) = 10 b) SELECT count(10) FROM Titles c) SELECT TOP(10) FROM Titles d) SELECT TOP 10 * FROM Titles
77
Sử dụng lệnh Select với tùy chọn nào để giới hạn số hàng được trả về a) Với mệnh đề WHERE b) Với mệnh đề GROUP BY c) Với mệnh đề TOP
d) Với từ khoá DISTINCT 78 Paul thực hiện lệnh SQL sau: SELECT Customers.name, Customers.ord_id, Orders.ord_date FROM Customers INNER JOIN Orders WHERE Customers.cust_id = Orders.cust_id Cả hai bảng đều có 10000 hàng. Truy vấn này mất nhiều thời gian để thực hiện, Để cải thiện việc thực thi truy vấn ta nên dùng đối tượng nào sau đây: a) Triggers b) Stored procedures c) Views d) Batches 79
Xác định toán tử nào cho phép chọn 1 giá trị phù hợp với 1 trong các giá trị của một danh sách a) IN b) AND c) OR d) NOT
80
Một kết nối giữa 2 bảng mà không có bất kỳ điều kịên nào trong mệnh đề ON thì được gọi là: a) Inner join b) Outer join c) Cross join d) Equi join
81 Viện quản trị quốc tế đang lưu trữ dữ liệu của nhiều thành phố mà họ có quan hệ. Để hiển thị số thành phố mà sinh viên đang thường trú, cần thực hiện lệnh sau: a) SELECT COUNT(UNIQUE(city)) FROM student b) SELECT COUNT(*) FROM student c) SELECT COUNT(ALL city) FROM student d) SELECT COUNT(DISTINCT (city)) FROM student 82 Thủ tục hệ thống (system-stored procedure) nào dùng để cung cấp thông tin về các đối tượng Db hay loại dữ liệu của người dùng a) sp_droptype b) Sp_helptext c) Sp_help d) Sp_bindrule 83 Khảo sát lệnh SQL sau: Select * from ExternalCandidate Where siTestscore < 20 and siTestscore >=80 Đầu ra của lệnh trên là gì? a) Truy vấn sẽ hiển thị các bản ghi của những ứng viên (candidate) mà có hoặc điểm thi (test score) nhỏ hơn 20 hoặc lớn hơn hay bằng 80 b) Truy vấn sẽ hiển thị các bản ghi của chỉ những ứng viên nào mà điểm lớn hơn 20 c) Truy vấn sẽ hiển thị các bản ghi của chỉ những ứng viên nào mà điểm lớn hơn hay bằng 80 d) Truy vấn sẽ thực thi được nhưng không hiển thị bất kỳ bản ghi nào 84 Mệnh đề nào sau đây được dùng để hiển thị tên của tất cả các nhóm, kể cả những nhóm bị loại trừ khỏi mệnh đề WHERE từ 1 bảng được cho a) GROUP BY b) HAVING c) GROUP BY ALL d) COMPUTE 85 Phát biểu SQL nào sau đây được dùng để hiển thị chỉ những hàng của bảng Titles mà trường ytd_sales chưa được tính toán a) SELECT * FROM Titles WHERE Ytd_Sales = NULL b) SELECT * FROM Titles WHERE Ytd_Sales is NULL c) SELECT * FROM Titles WHERE Ytd_Sales =0
d) SELECT * FROM Titles WHERE Ytd_Sales = ?? 86
Lệnh nào sau đây dùng để xoá tất cả các hàng của 1 một bảng mà không kích hoạt trigger a) DELETE b) TRUNCATE c) DROP d) REMOVE
87
Xác định lệnh SELECT nào sau đây là không đúng cú pháp a) SELECT ALL* from Suppliers b) SELECT SECOND SupplierName, SupplierAddress, from Suppliers c) SELECT DISTINCT SupplierName, SupplierAddress from Suppliers d) SELECT SupplierName, SupplierAddress from Suppliers
88
Để kết hợp dữ liệu của các loại dữ liệu khác nhau, bạn sẽ dùng: a) Các hàm biến đổi (conversion) b) Hàm luận lý (logical) c) Hàm chuỗi ( string) d) Hàm toán học (mathematical)
89
Lệnh SQL nào để hiển hị ngày hiện hành theo dạng sau : dd.mm.yyyy a) SELECT CONVERT(CHAR(12),GETDATE(),4) b) SELECT CONVERT(CHAR(12),GETDATE(),1) c) SELECT CONVERT(CHAR(12),GETDATE(),104) d) SELECT date=’dd.mm.yy’,GETDATE()
90 Một CSDL có tên là HumanResources chứa thông tin tất cả nhân viên (employee) và vị trí các văn phòng chi nhánh (office location). Nhân viên hiện hành được gán cụ thể cho 1 văn phòng nào đó và 1 văn phòng hiện hành có 1 hay nhiều nhân viên. Tuy nhiên CSDL cũng chứa các nhân viên năng động , họ không thuộc văn phòng nào cả, và cũng có những văn phòng năng động, nó không thực sự có 1 nhân viên nào cả. Bạn cần tạo 1 báo cáo hiển thị tất cả nhân viên và vị trí văn phòng, bao gồm cả hiện hành và năng động. Báo cáo sẽ hiển thị vị trí văn phòng (hiện hành hay năng động) tiếp theo là nhân viên thuộc văn phòng đó. Các nhân viên năng động nên hiển thị cùng chỗ với nhau trên báo cáo. Bạn sẽ dùng kịch bản nào sau đây? a) SELECT l.LocationName, e.FirstName, e.LastName FROM Employee AS e LEFT OUTER JOIN Location AS l ON e.LocationID= l.LocationID ORDER BY l.LocationName, e.LastName, e.FirstName b) SELECT l.LocationName, e.FirstName, e.LastName FROM Location AS 1 LEFT OUTER JOIN EMPLOYEE AS 1ON e.LocationID= l.LocationID ORDER BY l.LocationName, e.LastName, e.FirstName c) SELECT l.LocationName, e.FirstName, e.LastName FROM Employee AS e FULL OUTER JOIN Location AS 1ON e.LocationID= l.LocationID ORDER BY l.LocationName, e.LastName, e.FirstName d) SELECT l.LocationName, e.FirstName, e.LastName FROM Employee AS e CROSS JOIN Location AS 1 ORDER BY l.LocationName, e.LastName, e.FirstName 91 Trong CSDL của 1 công ty, thông tin khách hàng (customer) được lưu trữ trong bảng Customers. Lệnh tạo bảng này như sau: CREATE TABLE Customers (CustomerID int NOT NULL, CustomerName varchar(30) NOT NULL, ContactName varchar(30) NULL, Phone varchar(20) NULL, Country varchar(30) NOT NULL, CONSTRAINT PK_Customers PRIMARY KEY (CustomerID)) Thường thì mỗi quốc gia (country) chỉ có từ 1 tới 2 khách hàng. Tuy nhiên cũng có 1 số quốc gia có tới 20 khách hàng. Phòng tiếp thị của công ty muốn gửi quảng cáo đến những quốc gia mà có nhiều hơn 10 khách hàng. Để tạo danh sách các quốc gia này, bạn sẽ dùng lệnh nào sau đây? a) SELECT Country FROM CustomersGROUP BY Country HAVING COUNT (Country)>10 b) SELECT TOP 10 Country FROM Customers
c) SELECT TOP 10 Country FROM CustomersFROM (SELECT DISTINCT Country FROM Customers) AS XGROUP BY Country HAVING COUNT(*)> 10 SET ROWCOUNT 10 d) SELECT Country, COUNT (*) as “NumCountries” FROM Customers GROUP BY Country ORDER BY NumCountries, Desc 92
Tính chất nào sau đây là cần thiết để 2 bảng có thể union (hợp) với nhau a) Các thuộc tính phải cùng loại dữ liệu b) Các thuộc tính phải cùng dữ liệu c) Các thuộc tính có dữ liệu là duy nhất d) Các thuộc tính có loại dữ liệu khác nhau
93 Bảng Appraisal (đánh giá) được tạo ra dùng để chứa kết quả đánh giá năng lực nhân viên mỗi quý. Lệnh tạo bảng này như sau: CREATE TABLE Appraisal ( cEmployeeCode char(6) not null, dDateOfAppraisal datetime not null, cReviewer char(15) not null, cStatus char(3) not null) Trường dDateOfAppraisal chứa ngày của mỗi đợt kiểm tra. Lệnh truy vấn nào sau đây giúp nhân viên tìm đuợc ngày thi kế tiếp của họ? a) SELECT datepart(mm,dDateOfAppraisal)+3 FROM Appraisal b) SELECT dateadd(mm,3,dDateOfAppraisal) FROM Appraisal c) SELECT dateadd(qq,3, dDateOfAppraisal) FROM Appraisal d) SELECT datepart(mm,dDateOfAppraisal) FROM Appraisal 94 Trong CSDL của 1 công ty điện tử nọ có bảng Products chứa các sản phẩm của công ty. Bảng này thường xuyên được truy xuất trong suốt thời gian làm việc của công ty. Các sửa đổi vào bảng Products được ghi vào bảng đợi có tên PendingProductsUpdate. Bảng này sẽ được cập nhật vào bảng Products sau giờ làm việc. Bạn cần tạo script để thực hiện việc cập nhật này. Script nào bạn nên dùng? a) UPDATE Products SET p1.[Description] = p2.[Description], p1.UnitPrice = p2.UnitPrice FROM Products p1, PendingProductUpdate p2 WHERE p1.ProductID= p2.ProductID GO TRUNCATE TABLE PendingProductUpdate GO b) UPDATE Products p1 SET [Description] = p2.[Description], UnitPrice = p2.UnitPrice FROM Products, PendingProductUpdate p2 WHERE p1.ProductID= p2.ProductID GO TRUNCATE TABLE PendingProductUpdate GO c) UPDATE Products p1 SET p1.[Description] = p2.[Description], p1.UnitPrice = p2.UnitPrice FROM (SELECT [Description], UnitPrice FROM PendingProductUpdate p2 WHERE p1.ProductID= p2.ProductID) GO TRUNCATE TABLE PendingProductUpdate GO d) UPDATE p1 SET p1.[Description] = p2.[Description], p1.UnitPrice = p2.UnitPrice FROM Products p1, PendingProductUpdate p2 WHERE p1.ProductID= p2.ProductID GO TRUNCATE TABLE PendingProductUpdate 95 Trong CSDL Sales có bảng Sales chứa thông tin của các hoá đơn bán hàng từ các nhân viên bán hàng. Người quản lý yêu cầu bạn tạo 1 báo cáo chứa 20 nhân viên bán hàng giỏi nhất ( có doanh số bán hàng cao nhất) Truy vấn nào sau đây thực hiện được yêu cầu này?
a) SELECT TOP 20 PERCENT LastName, FirstName, SUM (OrderAmount) AS ytd FROM sales GROUP BY LastName, FirstName ORDER BY SUM(OrderAmount) DESC b) SELECT LastName, FirstName, COUNT(*) AS sales FROM sales GROUP BY LastName, FirstName HAVING COUNT (*) > 20 ORDER BY SUM(OrderAmount) DESC c) SELECT TOP 20 LastName, FirstName, SUM (OrderAmount) AS ytd FROM sales GROUP BY LastName, FirstName ORDER BY SUM(OrderAmount) DESC d) SELECT TOP 20 WITH TIES LastName, FirstName, SUM (OrderAmount) AS ytd FROM sales GROUP BY LastName, FirstName ORDER BY SUM(OrderAmount) DESC 96 Trong 1 CSDL có 1 bảng tạm có tên là staging. Sau khi hoàn tất quá trình chuyển đổi dữ liệu, dữ liệu trong bảng staging cần được xoá đi. Dữ liệu bị xoá này thực tế không bao giờ cần khôi phục lại. Để xoá nhanh nhất dữ liệu trong bảng staging, bạn nên dùng lệnh gì? a) Dùng lệnh DELETE b) Dùng lệnh TRUNCATE TABLE c) Dùng lệnh DROP TABLE d) Dùng cursor có thể cập nhật được để truy xuất và xóa dữ liệu khỏi bảng 97 Bảng Orders có cấu trúc như sau: CREATE TABLE Orders ( OrderID Int IDENTITY(1,1) NOT NULL, RegionID Int NOT NULL, SalesPersonID Int NOT NULL, OrderDate Datetime NOT NULL, OrderAmount Int NOT NULL) Giám đốc muốn xem báo cáo tổng doanh số bán đuợc theo từng vùng (region). Truy vấn nào sau đây bạn sẽ dùng để tạo báo cáo? a) SELECT SalesPersonID, RegionID, OrderAmount FROM orders GROUP BY RegionID COMPUTE SUM (OrderAmount) b) SELECT SalesPersonID, RegionID, OrderAmount FROM orders ORDER BY RegionID COMPUTE SUM(OrderAmount) BY RegionID c) SELECT SalesPersonID, RegionID, SUM(OrderAmount) FROM orders GROUP BY SalesPersonID, RegionID d) SELECT SalesPersonID, RegionID,SUM(OrderAmount) FROM Orders GROUP BY SalesPersonID, RegionID HAVING SUM (OrderAmount) = RegionID 98 Xác định ý nghĩa thủ tục sau: CREATE PROC get_playername @sport_id varchar(10) AS SELECT layer_lname, player_fname FROM sports WHERE sport_id = sport_id a) Thủ tục có 1 tham số vào là sport_id và sẽ hiển thị tên các môn thể thao mà có Id bằng với tham sô đàu vào b) Thủ tục có 1 tham số vào là sport_id và sẽ hiển thị tên các môn thể thao mà có Id không bằng với tham sô đầu vào c) Thủ tục có 1 tham số vào là sport_id và sẽ hiển thị tên vận động viên (player) mà có Id bằng với tham sô đàu vào
d) Thủ tục có 1 tham số vào là sport_id và sẽ hiển thị tên vận động viên (player) mà có Id không bằng với tham sô đàu vào 99 Thủ tục GetSalesPersonData được tạo ra trả về số tiền bán được của nhân viên: CREATE PROCEDURE GetSalesPersonData @SalesPersonID int, @RegionID int, @SalesAmount money OUTPUT AS SELECT @SalesAmount = SUM(SalesAmount) FROM SalesInformation WHERE @SalesPersonID = SalesPersonID Lệnh nào sau đây sẽ thực thi đúng thủ tục trên? a) EXECUTE GetSalesPersonData 1, 1, NULL b) EXECUTE GetSalesPersonData @SalesPersonID=1, @RegionID=1, @SalesAmount=0 c) EXECUTE GetSalesPersonData 1,1, @SalesAmount OUTPUT d) EXECUTE GetSalesPersonData @SalesPersonID = 1, @RegionID= 1, @SalesAmount= NULL 100 Bill vừa tạo một view có tên là ‘student_view’ trên bảng ‘students’. Anh ta cũng vừa xóa 1 hàng từ view khi cập nhật thông tin của sinh viên. Phát biểu nào sau đây là hợp lý: a) View vẫn có thể được truy vấn sau khi xoá bảng b) Việc xoá không ảnh hưởng gì đến bảng gốc c) Vịêc xoá làm thay đổi dữ liệu của bảng gốc d) Dữ liệu mà view lưu trữ hoàn toàn độc lập với bảng gốc 101
Ưu điểm của View là: a) Cung cấp dữ liệu thích hợp cho người dùng b) Tăng độ phức tạp dữ liệu c) Tạo bảng nhanh d) Phân chia dữ liệu cho nhiều server cách xa nhau
102 Paul thực hiện lệnh SQL sau: SELECT Customers.name, Customers.ord_id, Orders.ord_date FROM Customers INNER JOIN Orders WHERE Customers.cust_id = Orders.cust_id Mỗi bảng trong lệnh trên đều chứa 10000 hàng, do đó phải mất nhiều thời gian để thực hiện Để cải thiện việc thực thi truy vấn này, nên dùng đối tượng nào sau đây: a) Triggers b) Stored Procedures c) View d) Batches 103 Các lệnh nào sau đây bạn sẽ dùng để tạo thủ tục (procedure) mà nhận vào 1 ký tự và hiển thị các tiêu đề bắt đầu với ký tự đó a) Create procedure prcDispName @cValue char(1) as Select * from titles Where title like ‘@cValue%’ b) Create procedure prcDispName @cValue char(1) as Select * from titles Where title like @cValue%. c) Create procedure prcDispName @cValue char(1) as Declare @temp char(2) Select @temp=@cValue+ ‘%’ Select * from titles Where title like @temp d) Create procedure prcDispName as Declare @temp char(2) Select @temp=’A%’ Select * from titles Where title like @temp
104 Khảo sát thủ tục sau: Create procedure prcTemp @tmp int output As Select @tmp=ytd_sales from titles Return Hãy xác định lệnh SQL được dùng để hiển thị giá trị của biến đầu ra khi thủ tục này được gọi a) Declare @temp int Exec prcTemp @tmp=@temp output Print @temp b) Exec prcTemp @tmp output Print @tmp c) Declare @tmp int Exec prcTemp @tmp Print @tmp d) Declare @temp int Exec prcTemp @tmp=@temp Print @temp 105 Bảng Marks có các trường sau: Rno, Subject, Marks. Lệnh nào sau đây để hiển thị báo cáo sinh viên chứa tên đầy đủ của các môn học. Danh sách các môn viết tắt như sau: ENG là viết tắt của English MTH là viết tắt của Maths Sc là viết tắt của Science Comp là viết tắt của Computers a) Select rno, marks, subject= Case subject When ‘ENG’ Then ‘English’ When ‘MTH’ Then ‘Maths’ When ‘Sc’ Then ‘Science’ When ‘Comp’ Then ‘Computer’ end from Marks b) Select rno, marks, subject= Case When ‘ENG’ Then ‘English’ When ‘MTH’ Then ‘Maths’ When ‘Sc’ Then ‘Science’ When ‘Comp’ Then ‘Computer’ end from Marks c) Select subject= Case subject when ‘ENG’ Then ‘English’ When ‘MTH’ Then ‘Maths’ When ‘Sc’ Then ‘Science’ When ‘Comp’ Then ‘Computer’ from Marks d) Select rno, marks, subject= Case subject when ‘ENG’ Then ‘English’ When ‘MTH’ Then ‘Maths’ When ‘Sc’ Then ‘Science’ When ‘Comp’ Then ‘Computer’ from Marks Order by rno 106
Quy luật nào sau đây không đúng đối với một thủ tục (stored procedure) a) Bạn có thể thực thi 1 thủ tục mà thủ tục này gọi 1 thủ tục khác. Thủ tục được gọi có thể truy xuất đến các đối tượng được tạo ra bởi thủ tục gọi b) Bạn có thể tham chiếu đến 1 đối tượng không nằm trong cùng 1 database với thủ tục của bạn c) Bạn có thể tạo, tạo lại, hay xóa các đối tượng bện trong 1 thủ tục. Các lệnh mà bạn có thể sử dụng là CREATE, DROP, và SELECT INTO trong thủ tục của bạn d) Bạn có thể tạo một bảng tạm riêng bên trong 1 thủ tục.
107 Để báo cáo số lượng bán được theo từng năm của 1 đầu sách (title) nào đó, người ta đã tạo 1 thủ tục với nội dung như sau: CREATE PROCEDURE get_sales_for_title @title varchar(80), @ytd_sales int OUTPUT AS SELECT @ytd_sales = ytd_sales FROM titles WHERE title = @title IF @@ROWCOUNT = 0 RETURN(-1) ELSE RETURN(0) Biến hệ thống @@ROWCOUNT luôn trả về số bản ghi của lệnh SQL vừa được thực hiện trước đó. Bạn
cần tạo 1 script để gọi thủ tục trên. Nếu thủ tục chạy thành công, nó sẽ báo cáo số luợng bán được, ngược lại thì hiển thị thông báo “No Sales Found”. Script này được tạo như thế nào? a) DECLARE @retval int DECLARE @ytd int EXEC get_sales_for_title ‘Net Etiquette’, @ytd IF @retval < 0 PRINT ‘No sales found’ ELSE PRINT ‘Year to date sales: ’ + STR (@ytd) GO b) DECLARE @retval int DECLARE @ytd int EXEC get_sales_for_title ‘Net Etiquette’, @ytd OUTPUT IF @retval < 0 PRINT ‘No sales found’ ELSE PRINT ‘Year to date sales: ’ + STR (@ytd) GO c) DECLARE @retval int DECLARE @ytd int EXEC get_sales_for_title ‘Net Etiquette’,@retval OUTPUT IF @retval < 0 PRINT ‘No sales found’ ELSE PRINT ‘Year to date sales: ’ + STR (@ytd) GO d) DECLARE @retval int DECLARE @ytd int EXEC @retval = get_sales_for_title ‘Net Etiquette’, @ytd OUTPUT IF @retval < 0 PRINT ‘No sales found’ ELSE PRINT ‘Year to date sales: ’ + STR (@ytd) GO 108 Lệnh sửa đổi 1 thủ tục có tên là prcPrintStoreList như sau: ALTER PROCEDURE prcPrintStoreList @state char(15) AS BEGIN IF EXISTS(SELECT * FROM Stores WHERE state=@state) BEGIN PRINT 'List of Stores' SELECT stor_id,stor_name, stor_address,city FROM Stores WHERE state = state Return 0 END ELSE BEGIN PRINT 'No Records Found for given state' RETURN 1 END END Hãy xác định kết quả sửa đổi này a) Lỗi biên dịch ( Compile-time error ) b) Lỗi khi chạy thủ tục (Run-time error ) c) 0 d) 1 109 Bạn đang xây dựng CSDL phục vụ cho việc bán lẻ sách qua mạng của 1 công ty. Khách hàng có thể sử dụng web site để đặt mua sách. Các đơn đặt hàng sẽ được đưa vào CSDL BookOrders. Thông tin đặt hàng này sẽ được chuyển vào CSDL Reports vào cuối mỗi ngày. CSDL Reports chứa các bảng Order và LineItem. Khách hàng có thể sử dụng web site của công ty để xem các đơn đặt hàng trong CSDL Reports. Khách hàng chỉ nên thấy đơn đặt hàng của riêng họ mà thôi và không được quyền chỉnh sửa hoá đơn cũ. Họ cùng không đuợc nhìn thấy giá trị của khoá chính của đơn đặt hàng. Bạn nên làm gì? a) Tạo 1 view hiển thị thông tin đặt hàng cho mỗi khách hàng
b) Tạo 1 thủ tục người dùng để hiển thị thông tin đơn đặt hàng cho 1 khách hàng được cho c) Tạo 1 hàm người dùng loại scalar để trả về thông tin đơn đặt hàng cho 1 khách hàng được cho d) Gán quyền SELECT trên bảng Order và LineItem cho tất cả các khách hàng 110 Giả sử có 1 CSDL chứa thông tin của các công ty cùng với mã vùng (zip code). Hiện tại CSDL chỉ mới chứa dữ liệu của các công ty với 5 mã vùng khác nhau. Số công ty trong mỗi mã vùng có thể từ 10 đến 5000. Trong tương lai sẽ có thêm nhiều công ty với các mã vùng mới khác.Bạn cần tạo 1 truy vấn để xem thông tin từ CSDL. Việc thực thi truy vấn không được ảnh hưởng đến số công ty được trả về. Truy vấn được tạo ra cần thông nhất và làm tối thiểu việc phải bảo trì sửa đổi truy vấn này trong tương lai. Bạn nên làm gi? a) Tạo 1 thủ tục (stored procedure) yêu cầu mã vùng như tham số đầu vào, bao gồm tuỳ chọn WITH RECOMPILE khi tạo thủ tục b) Tạo 1 thủ tục cho mỗi mã vùng c) Tạo 1 view cho mỗi mã vùng d) Chia bảng thành nhiều bảng, mỗi bảng chứa 1 mã vùng. Sau đó xây dựng 1 view kết các bảng này lại sao cho dữ liệu có thể vẫn được xem như chỉ từ 1 bảng 111
Phát biểu nào sau đây mô tả thuộc tính atomicity của 1 transaction ? a) Việc chỉnh sửa dữ liệu được làm bởi 1 transaction này thì độc lập với việc chỉnh sửa dữ liệu của 1 transaction khác b) Mọi chỉnh sửa trong 1 transaction hoặc được thi hành hết hoặc không có 1 chỉnh sửa nào được thực hiện c) Bất kỳ thay đổi dữ liệu được thực hiện bởi một transaction vẫn giữ nguyên hiệu quả sau khi transaction hoàn tất d) Mọi dữ liệu đều ở trạng thái không thay đổi sau khi transaction đã thực hiện thành công
112
Thuộc tính nào của transaction bảo đảm tính tuần tự? a) Atomicity b) Consistency c) Isolation d) Durability
113 CSDL của Công ty Cyber Inc. có 1 bảng tên là “issue” dùng để theo dõi sách được phát hành. Đã có sẵn 1 trigger “issue_insert” dùng để cập nhật trạng thái của sách đã phát hành cho khách hàng vào 1 bảng tên “copy” mỗi khi có 1 bản ghi mới trong bảng “issue”. Hiện nay công ty muốn trigger này cũng nên cập nhật trạng thái của sách trong bảng “copy” mỗi khi có 1 bản ghi được xoá khỏi bảng “books”. Tuỳ chọn nào sau đây nên được thực hiện? a) Sử dụng lệnh DELETE TRIGGER để sửa đổi trigger b) Sử dụng lệnh ALTER TRIGGER để sửa đổi lại trigger c) Tạo 1 trigger khác cho bảng books d) Tạo 1 trigger cho lệnh update 114 Bạn là nhà quản trị CSDL SQL. Bạn đang phát triển 1 ứng dụng DB cho phòng kế toán công ty của bạn. Ứng dụng này chứa nhiều modules được tích hợp nhau. Các user thuờng gặp phải deadlock bất kỳ lúc nào một người nào đó thực hiện 1 hàm mà nó cần tích hợp từ nhiều module. Làm thế nào đê giảm thiểu các deadlock này? a) Bạn cần phải bảo đảm là tất cả các transaction chỉnh sửa dữ liệu các bảng phải theo cùng 1 thứ tự b) Bạn cần phải bảo đảm là tất cả các transaction chỉnh sửa dữ liệu các bảng phải theo thứ tự ngược nhau c) Bạn cần phải bảo đảm là tất cả các transaction chỉnh sửa dữ liệu các bảng không theo cùng thứ tự d) Bạn cần phải bảo đảm là tất cả các transaction chỉnh sửa phù hợp với cách thực thi của công cụ query optimizer 115 Khi chạy script sau trong cửa sổ Analyzer: CREATE TABLE Archived_Orders_1995_1999 ( OrderID int, CustomerID char (5), EmployeeID int, OrderDate datetime, ShippedDate datetime ) INSERT INTO Archived_Orders_1995_1999 SELECT OrderID, CustomerID, EmployeeID, OrderDate, ShippedDate FROM SalesOrders WHERE ShippedDate < DATEADD (year, -1, getdate())
Go Thì bị báo lỗi như sau: Invalid object name ‘ Archived_Orders_1995_1999’. Bạn nên làm gì để giải quyết lỗi này? a) Phải ghi đầy đủ tên bảng Archived_Orders_1995_1999 cùng với tên owner b) Yêu cầu quyền CREATE TABLE c) Tạo bảng Archived_Orders_1995_1999 table trước rồi mới thực hiện lệnh INSERT sau. Giữa hai lệnh này cần chèn thêm lệnh GO d) Phải thay đổi tên bảng thành ArchivedOrders 116 Bạn đang thiết kế CSDL chứa thông tin về nhân lực của 1 ngân hàng. Sau đây là 2 transaction bạn đang thiết kế để hổ trợ việc nhập liệu Transaction 1 BEGIN TRANSACTION UPDATE Customer SET CustomerName=@Name WHERE CustomerID=@CustID UPDATE CustomerPhone SET PhoneNumber=@Phone WHERECustomerID= @CustID AND PhoneType=@Ptype COMMIT TRANSACTION Transaction 2 BEGIN TRANSACTION UPDATE CustomerPhone SET PhoneNumber =@Phone WHERE CustomerID= @CustID AND PhoneType = @Ptype UPDATE CustomerAddress SET Street = @Street WHERE CustomerID =@CustID AND AddressType =@Atype UPDATE Customer SET CustomerName = @Name WHERE CustomerID = @CustID COMMIT TRANSACTION Trong lúc chạy thử các script này, bạn nhận thấy đôi khi server phát hiện có deadlock. Bạn nên làm gì? a) Trong transaction 2, chuyển lệnh UPDATE Customer lên trước lệnh UPDATE CustomerPhone b) Thêm lệnh SET DEADLOCK_PRIORITY LOW vào cả 2 transaction c) Thêm mã để kiểm tra lỗi 1205 của server vào mỗi script. Nếu lỗi này xảy ra, thì khởi động lại transaction d) Thêm lệnh SET LOCK_TIMEOUT 0 vào cả hai transaction 117
Hai bảng nào được phép dùng trong UPDATE trigger? a) Bảng inserted và bảng deleted b) Bảng inserted và bảng trigger c) Bảng inserted và bảng updated d) Bảng deleted và bảng trigger
118
Bảo toàn (integrity) nào được dùng cho trigger DELETE a) Thực thể ( entity) b) Miền (Domain) c) Người dùng (user defined) d) Tham chiếu (referential)
119 Dữ liệu thống kê về các đội bóng được lưu trữ trong CSDL Statistics. Các cầu thủ của mỗi đội được nhập vào bảng Rosters. Cấu trúc của bảng này như sau: CREATE TABLE Rosters ( RosterID int NOT NULL, TeamID int NOT NULL, FirstName char(20) NOT NULL, LastName char(20) NOT NULL, CONSTRAINT PK_Rosters PRIMARY KEY (RosterID), CONSTRAINT FK_TeamRoster FOREIGN KEY (TeamID) REFERENCES Team (TeamID) ) Mỗi đội có tối đa 24 cầu thủ.trong bảng phân công (roster) vào bất kỳ lúc nào. Bạn cần phải bảo đảm là số cầu thủ của 1 đội không bao giờ được vượt quá số tối đa. Bạn nên làm gì? a) Tạo 1 trigger trên bảng Rosters để xét tính hợp lệ của dữ liệu nhập vào b) Tạo 1 rule để xét tính hợp lệ của dữ liệu c) Tạo 1 view để thực hiện lệnh UPDATE bao gồm mệnh đề WITH CHECK OPTION trong
lệnh định nghĩa VIEW d) Thêm 1 ràng buộc CHECK trên bảng Rosters để kiểm tra tính hợp lệ của dữ liệu 120 Bạn đang làm việc cho công ty môi giới đầu tư. Công ty có 1 CSDL tên là Stocks chứa 2 bảng CurrentPrice và PastPrice. Giá hiện thời cùa cổ phiếu đầu tư nằm trong bảng CurrentPrice table. Giá cũ trước đó được lưu vào bảng PastPrice. Tầt cả các hàng trong bảng CurrentPrice table đều được cập nhật vào cuối ngày làm việc ngay cả khi cổ phiếu không bị thay đổi kể từ lần cập nhật trước đó. Nếu giá cổ phiếu (stock price) bị thay đổi thì 1 hàng cần được chèn thêm vào bảng PastPrice. Bạn sẽ dùng cách nào sao cho hành động thêm bản ghi mới này được thực hiện tự động. a) Tạo 1 trigger AFTER trên bảng CurrentPrice để so sánh giá trị của trường StockPrice trong các bảng inserted và deleted. Nếu giá trị khác nhau thì trigger sẽ chèn 1 hàng vào bảng PastPrice b) Tạo 1 trigger AFTER trên bảng CurrentPrice để so sánh giá trị của trường StockPrice trong bảng inserted với trường StockPrice trong bảng CurrentPrice. Nếu giá trị khác nhau thì trigger sẽ chèn 1 hàng vào bảng PastPrice c) Tạo 2 ràng buộc (constraint) loại cascading update trên bảng CurrentPrice table để cập nhật đồng thời 1 hàng trên bảng PastPrice d) Tạo 1 thủ tục (stored procedure) so sánh giá trị mới của cột StockPrice trong bảng CurrentPrice với giá trị cũ. Nếu giá trị khác nhau thì thủ tục sẽ chèn 1 hàng vào bảng PastPrice 121 Jack cần chèn 1 điểm dừng (save point) có tên là ‘Returnback’ vào transaction của anh ta. Nên dùng lệnh nào sau đây: a) INSERT SAVEPOINT Returnback b) SAVE SAVEPOINT Returnback c) SAVE TRANSACTION Returnback d) INSERT TRANSACTION Returnback 122 Xét thủ tục sau: CREATE PROCEDURE prcResign (@Ecode char(4), @status char(2)) As BEGIN TRAN trnResign SELECT * from Employee WHERE cEcode=@Ecode UPDATE EmployeePersonal SET cStatus= ‘RE’ WHERE cStatus= @Status COMMIT TRAN Return Hãy xác định loại khoá đuợc dùng cho bảng Employee a) Shared lock b) Exclusive lock c) Shared intent lock d) Schema lock 123 Nếu thiếu cơ chế khoá (lock) thì vấn đề nào sẽ xảy ra khi 2 hay nhiều transaction đều chỉnh sửa cùng 1 hàng dữ liệu a) Cập nhật mất dữ liệu (Lost updates) b) Đọc dữ liệu sai (Dirty Read) c) Đọc không cùng nội dung (Inconsistent Analysis) d) Đọc các mẫu tin không đúng (Phantom Reads) 124 Một CSDL có 2 bảng dữ liệu như sau: bảng Order có các trường OrderID, CustomerID, OrderDate; Bảng LineItem có các trường ItemID, OrderID, ProductID, Price. Người dùng sẽ nhập hoá đơn vào thông qua 1 CT ứng dụng. Khi 1 hoá đơn mới được nhập vào, thì dữ liệu sẽ được lưu vào 2 bảng trên.Bạn cần phải bảo đảm là toàn bộ hoá đơn được lưu vào đầy đủ vào CSDL. Script nào sau đây là nên dùng? a) BEGIN TRANSACTION Order INSERT INTO Order VALUES (@ID, @CustomerID, @OrderDate) INSERT INTO LineItem VALUES (@ItemID, @ID, @ProductID, @Price) SAVE TRANSACTION Order
b) INSERT INTO Order VALUES (@ID, @CustomerID, @OrderDate) INSERT INTO LineItem VALUES (@ItemID, @ID, @ProductID, @Price) IF (@@Error = 0) COMMIT TRANSACTION ELSE ROLLBACK TRANSACTION c) BEGIN TRANSACTION INSERT INTO Order VALUES (@ID, @CustomerID, @OrderDate) IF (@@Error = 0) BEGIN INSERT INTO LineItem VALUES (@ItemID, @ID, @ProductID, @Price) IF (@@Error = 0) COMMIT TRANSACTION ELSE ROLLBACK TRANSACTION END ELSE ROLLBACK TRANSACTION END d) BEGIN TRANSACTION INSERT INTO Order VALUES (@ID, @CustomerID, @OrderDate) IF (@@Error = 0) COMMIT TRANSACTION ELSE ROLLBACK TRANSACTION BEGIN TRANSACTION INSERT INTO LineItem VALUES (@ItemID, @ID, @ProductID, @Price) IF (@@Error = 0) COMMIT TRANSACTION ELSE ROLLBACK TRANSACTION 125
Phát biểu nào sau đây là đúng khi nói về trigger a) Trigger cần được thực thi 1 cách tường minh b) Trigger có thể giám sát được các thay đổi dữ liệu không được phép c) Trigger được thực hiện tự động mỗi khi lệnh TRUNCATE TABLE được dùng d) Trigger có thể trả về dữ liệu cho người dùng
126 Hãy khảo sát bảng Items có 1 hàng dữ liệu như sau: Tno QOH Price I001 30 10 Hãy cho biết đầu ra của trigger sau khi mặt hàng I001 được bán với số lượng là 30 Create trigger trgInsSales On Sales For insert As begin Declare @var1 int,@var2 int Select @var1=qoh from items, inserted Where items.itno=inserted.itno Select @var2=@var1-qty_reqd From inserted if @var2 <=10 Begin Print ‘ Hàng tồn kho quá ít’ Rollback transaction End Update items Set qoh=qoh-@var1 From items, inserted Where items.itno=inserted.itno End a) Trigger sẽ chạy khi có 1 bản ghi được chèn vào bảng sales. Transaction sẽ bị từ chối do lượng tồn kho thấp b) Trigger sẽ chạy khi có 1 bản ghi được chèn vào bảng sales. Việc thêm bản ghi mới vào bảng sales và cập nhật dữ liệu trong bảng item được thực hiện trọn vẹn c) Trigger sẽ chạy khi có 1 bản ghi được chèn vào bảng sales. Bản ghi mới được chèn thành công vào bảng sales nhưng dữ liệu trong bảng items không được cập nhật do số lượng tồn kho ít d) Trigger sẽ chạy khi có 1 bản ghi được chèn vào bảng sales. Tuy nhiên do lượng tồn kho còn ít nên việc thêm vào bảng sales sẽ bị từ chối nhưng bảng items vẫn được cập nhật để thể hiện lượng tồn kho hiện hành 127 Đối tượng nào sau đây được dùng để áp đặt các quy luật hoạt động vào CSDL và duy trì các quy luật bảo toàn a) Rules b) Procedure
c) Trigger d) View 128
Phát biểu nào sau đây là đúng khi định nghĩa về trigger a) Trigger giống như procedure, có thể được gọi 1 cách tường minh để thực hiện b) Trigger có thể giúp tránh được những thay đổi về dữ liệu không được phép, hoặc sai c) Trigger có thể trả về dữ liệu cho người dùng d) Trigger không thể gọi 1 trigger khác bởi vì trigger không thể gọi tường minh được
129 Hãy xét các phát biểu sau: Phát biểu A: bạn không thể thay đổi một bảng và truy xuất cột mới trong cùng 1 batch Phát biểu B: Bạn không thể drop nhiều đối tượng trong cùng 1 batch Các tuỳ chọn nào sau đây là đúng? a) Cả hai phát biểu đều đúng b) Cả hai phát biểu đều sai c) Phát biểu A đúng, phát biểu B sai d) Phát biều A sai, và phát biểu B đúng 130
Các lệnh nào sau đây tạo thành 1 batch? a) USE Northwind Select * from Employees Go b) USE Pubs Create Table Publisher_Details as select * from Publisher Insert into Publisher_details values (select * from Publisher) c) Create View supp_Details as select * from Suppliers Execute d) Create Table Employee_History (Emp_Id Numeric, Emp_Name Char) Insert into Employee_History (Select Emp_Id,Emp_Name from Employee)
131 Bảng Student được tạo ra bởi lệnh sau: CREATE TABLE Student ( OwnerID int IDENTITY (1, 1) NOT NULL, FirstName char(20) NULL, LastName char(30) NULL, BirthDate date NULL, CONSTRAINT PK_Owners PRIMARY KEY (Owner ID) ) Khi thông tin về 1 sinh viên (student) nào đó được tạo ra, ngày sinh của sinh viên đó nếu không được nhập vào thì database cần tạo 1 thông báo lỗi. Bạn cần chọn cách thực hiện nào để kiểm tra tính hợp lệ của trường ngày sinh và tạo thông báo lỗi khi không hợp lệ a) Thêm ràng buộc CHECK vào trường BirthDate (ngày sinh) b) Tạo 1 rule rồi gán nó cho trường BirthDate c) Thay đổi cấu trúc bảng sao cho trường BirthDate không được phép giái trị null d) Tạo trigger trên bảng Student để xét tính hợp lệ của trường birthDate 132 Một cửa hàng bán hoa trực tuyến lưu trữ chi tiết của các hoa trong bảng Flower sau: CREATE TABLE Flower ( cFlowerCode char(5) not null, cFlowerName char(30) not null, cFlowerDescription char(50) not null, mPrice money not null, mShippingCharges money not null, iWeight int not null ) Phí chuyển hàng (shipping charge) được tăng lên $1 cho tất cả hoa cho đến khi phí chuyển hàng bình quân tiến đến $8. Tuy nhiên phí chuyển hàng cao nhất không được vượt quá $10 Batch nào sau đây bạn nên dùng cho yêu cầu trên? a) WHILE (SELECT AVG(mShippingCharges) FRM Flower) <8 BEGIN UPDATE Flower SET mShippingCharges = mShpippingCharges + 1 IF (SELECT MAX(mShippingCharges) FROM Flower)>10 BREAK ELSE CONTINUE END b) WHILE (SELECT max(mShippingCharges) FRM Flower) <8 BEGIN UPDATE Flower SET mShippingCharges = 1
IF (SELECT MAX(mShippingCharges)+1 FROM Flower)>10 BREAK ELSE CONTINUE END c) WHILE (SELECT AVG(mShippingCharges) FRM Flower) <8 BEGIN UPDATE Flower SET mShippingCharges = 1 IF (SELECT MAX(mShippingCharges)+1 FROM Flower)>10 BREAK ELSE CONTINUE END d) WHILE (SELECT MAX(mShippingCharges) FROM Flower) <8 BEGIN UPDATE Flower SET mShippingCharges = mShpippingCharges + 1 IF (SELECT AVG(mShippingCharges) FROM Flower)>10 BREAK ELSE CONTINUE END 133 Có 1 CSDL tên là Invoices. Bạn là thành viên của role db_owner. Eric là 1 thành viên của database role tên là HR, đã tạo 1 trigger có tên Research_UpdateInvoices trên bảng Invoices. Anh ta hiện thời đã rời khỏi công ty và trigger của anh ta cũng không cần dùng nữa. Khi bạn xoá trigger này bằng lệnh sau: DROP TRIGGER Research_UpdateInvoices Nhưng lại bị báo lỗi như sau: Cannot drop the trigger ‘Research_UpdateInvoices’, because it does not exist in the system catalog. Bạn nên làm gì trước khi xoá trigger trên? a) Thêm login của bạn vào database role HR b) Phải xác định đầy đủ tên trigger (bao gồm cả tên của người tạo ra trigger) trong lệnh DROP TRIGGER c) Cấm trigger hoạt động trước khi thực thi lệnh DROP TRIGGER d) Xác định số hiệu trigger trong lệnh DROP TRIGGER 134 Từ 2 bảng Person và Employee, người ta đã tạo 1 view như sau: CREATE VIEW Employee AS SELECT P.SSN, P.LastName, P.FirstName, P.Address, P.City, P.State, P.Birthdate, E.EmployeeID, E.Department, E.Salary FROM Person AS P JOIN Employees AS E ON (P.SSN = E.SSN) View này được dùng cho 1 ứng dụng để chèn các bản ghi vào hai bảng gốc Person và Employee. Cấu trúc của 2 bảng như sau: CREATE TABLE Person ( SSN char(11) NOT NULL PRIMARY KEY, LastName varchar (50) NOT NULL, FirstName varchar (50) NOT NULL, Address varchar (100) NOT NULL, City varchar (50) NOT NULL, State char (2) NOT NULL, Birthdate datetime NOT NULL ) GO CREATE TABLE Employees ( EmployeeID int NOT NULL PRIMARY KEY, SSN char (11) UNIQUE NOT NULL, Department varchar (10) NOT NULL, Salary money NOT NULL, CONSTRAINT FKEmpPER FOREIGN KEY (SSN)REFERENCES Person (SSN) ) Để ứng dụng có thể dùng lệnh INSERT với view ở trên , bạn nên làm gì? a) Tạo 1 trigger AFTER trên view b) Tạo 1 trigger INSTEAD OF trên view c) Tạo 1 trigger INSTEAD OF trên bảng Person và Employee d) Dùng lệnh ALTER VIEW để đưa thêm tuỳ chọn WITH CHECK vào
135 Mỗi công ty thường gồm nhiều phòng ban (department) , mỗi phòng ban đều có nhân viên của phòng. Bạn đã tạo 1 bảng tên là Employee chứa thông tin liên quan đến tất cả các nhân viên và phòng ban mà họ làm việc. Lệnh tạo bảng như sau: CREATE TABLE Employee (EmployeeID uniqueidentifier NOT NULL, FirstName char (20) NOT NULL, LastName char (25) NOT NULL, DepartmentID int NOT NULL, Salary money NOT NULL, CONSTRAINT PK_Employee PRIMARY KEY (EmployeeID) ) Mỗi trưởng phòng chỉ có thể xem được thông tin của nhân viên phòng mình mà thôi. Bạn nên làm gì với yêu cầu này? a) Dùng các lệnh GRANT, REVOKE, và DENY để gán quyền cho mỗi trưởng phòng b) Thêm login ID cho mỗi trưởng phòng vào role db_datareader c) Xây dưng các view trên bảng Employee để hạn chế các bản ghi cần xem d) Dùng SQL Server Enterprise Manager để gán quyền vào bảng Employee 137
Phát biểu nào sau đây là đúng khi nói về cursor a) Bạn cần thiết lập các thuộc tính của cursor trước khi mở nó b) Bạn có thể chỉnh sửa hàng hiện hành trong bộ kết quả (result set) đuợc trả về bởi cursor c) Bạn không thể xem dữ liệu được chỉnh sửa bởi các user khác trong bộ bộ kết quả được trả về bởi cursor d) Bạn có thể di chuyển lên xuống giữa các hàng trong bộ kết quả
138 Bạn đang xây dựng CSDL cho 1 công ty để theo dõi các điều tra qua điện thoại sở thích âm nhạc của khách hàng. Mỗi lần có nguời trả lời thì thông tin đều đượcchèn vào bảng có tên là SurveyData. Sau khi đã nhận được tất cả các trả lời , thì cần đưa ra bảng tổng hợp. Bạn được yêu cầu tạo bảng tổng hợp này bằng cách cứ lấy mẫu bản ghi đầu tiên trong mỗi 5 bản ghi cho đến hết trong bảng dữ liệu SurveyData ( nghĩa là bạn sẽ lấy bản ghi 1,6,11, 16,..). Yêu cầu cần tạo bảng tổng hợp này nhanh nhất nếu có thể được. Bạn sẽ làm như thế nào?? a) Dùng 1 cursor chứa tất cả các dữ liệu trong bảng SurveyData. Rồi dùng lệnh FETCH RELATIVE 5 để chọn bản ghi đưa vào bảng tổng hợp b) Dùng lệnh SELECT INTO để tạo 1 bảng tạm thời chứa toàn bộ bản ghi của bảng SurveyData. Rồi dùng lệnh SELECT TOP 1 để nhận được hàng đầu tiên trong bảng tạm c) Đặt biến hệ thống @@ROWCOUNT =5. Dùng lệnh SELECT để tạo bảng tổng hợp d) Dùng lệnh SELECT TOP 5 để nhận được dữ liệu cần thiết cho bảng tổng hợp 139 Bạn cần tạo một hàm mà sẽ trả về tên của tất cả các nhà xuất bản ở quốc gia được xác định khi người dùng gọi hàm. Hàm nào dưới đây thực hiện được yêu cầu này a) CREATE FUNCTION dispName(@country varchar(30)) RETURNS table AS BEGIN Select * FROM Publishers where country = @country END SELECT * FROM dispName('Germany') b) CREATE FUNCTION dispName(@country varchar(30)) RETURNS varchar(30) AS BEGIN Select * FROM Publishers where country = @country END SELECT * FROM dispName('Germany') c) CREATE FUNCTION dispName(@country varchar(30)) RETURNS table AS RETURN(Select * FROM Publishers where country = @country) SELECT * FROM dispName('Germany') d) CREATE FUNCTION dispName(@country varchar(30)) RETURNS table AS BEGIN RETURN(Select * FROM Publishers where country = @country) END SELECT * FROM dispName('Germany')
140
Hàm nào sau đây không phải là hàm của người dùng ( user – defined function) a) Hàm Scalar b) Hàm Inline Table-Valued c) Hàm bảo mật (security) d) Hàm Multi Statement Table-Valued
141
Allen muốn xoá hàm dbo.fx_order_cost. Lệnh nào được dùng để xoá hàm này? a) Hàm DROP b) Hàm DELETE c) Hàm EDIT d) Hàm REMOVE
142 Xác định loại cho hàm của người dùng sau: CREATE FUNCTION fn_Pub (@CountryPar nvarchar(30)) RETURNS table AS RETURN ( SELECT pub_Id, pub_Name FROM pubs.dbo.Publishers WHERE country = @CountryPar ) a) Hàm Inline table-valued b) Hàm scalar c) Hàm hệ thống d) Hàm Multi-statement table-valued 143 Bạn đang xây dựng database cho 1 công ty sản xuất thùng đựng hàng (container). Các thùng đựng hàng có thể có nhiều kích cỡ (size) và hình dạng (shape). Các bảng lưu trữ thông tin về thùng đựng hàng như sau: Size ( SizeID, SizeName, Height) Container (ContainerID, ShapeID, SizeID) Shape (ShapeID, ShapeName, Measurement) Các kích thước thùng đựng hàng có thể thay đổi một cách định kỳ. Khách hàng thường muốn xem thể tích của thùng đựng hàng. Thể tích được tính toán dựa vào kích cỡ và hình dạng của thùng. Bạn không muốn hiển thị chi tiết tính tóan nhưng vẫn muốn thể tích được hiển thị cùng với các thông tin khác khi thực hiện lệnh SELECT. Bạn nên làm gì? a) Tạo 1 hàm người dùng yêu cầu mã thùng hàng (ContainerID) như 1 đối số và trả về thể tích của thùng b) Tạo 1 thủ tục của người dùng yêu cầu mã thùng hàng (ContainerID) như 1 đối số và trả về thể tích của thùng c) Thêm 1 cột có tên là Volume (thể tích) trong bảng Container. Tạo 1 trigger để tính toán và lưu trữ kết quả vào cột này d) Thêm 1 cột tính toán vào bảng Container để tính toán thể tích của thùng chứa 144 Bạn đã thiềt kế được view chứa dữ liệu bán hàng theo từng quý của 1 cSDL. View này kết nối nhiều bảng và thực hiện những tính toán tổng hợp. Bạn muốn cung cấp 1 truy vấn có tham số (parameterized query) để truy xuất dữ liệu trong view và kết quả ra có thể dùng trong mệnh đề SELECT khác. Bạn sẽ hoàn thành mục tiêu này như thế nào? a) Dùng lệnh ALTER VIEW để thêm tham số vào định nghĩa view b) Tạo 1 thủ tục (stored procedure) chấp nhận tham số như đầu vào thủ tục và trả về 1 bảng kết quả c) Tạo 1 hàm người dùng dạng scalar ( scalar user-defined function) nhận tham số như đầu vào của hàm d) Tạo 1 hàm dạng inline (inline user-defined function) nhận tham số như đầu vào của hàm 145 Bạn đang quản lý 1 DB của SQL server cho phòng giao dịch. Jim là trưởng phòng đang cần chuyển đổi dữ liệu giữa SQL server và Oracle. Công cụ nào sau đây bạn nên tư vấn để Jim sử dụng a) Lệnh SELECT INTO b) Tiện ích BCP c) Tiên ích DST d) Lệnh BULK INSERT 146
Phát biểu nào sau đây không đúng khi nói về lệnh BULK INSERT? a) Trong khi chèn dữ liệu bằng lệnh BLUK INSERT vào bảng có index clustered, bạn có thể
làm tăng việc thực thi bằng cách sắp xếp file dữ liệu theo cùng thứ tự của index clustered b) Lệnh BULK INSERT có thể được thực thi như 1 phần của transaction c) Lệnh BULK INSERT không thể được thực thi như 1 phần của transaction d) Mệnh đề TABLOCK của lệnh BULK INSERT có thể được dùng để khoá bảng trong lúc sao chép hàng loạt 147 True Travel Services là 1 hãng du lịch trực tuyến. Hãng dùng SQL server để lưu trữ dữ liệu. Hãng vừa tuyển 1 phân tích viên để đánh giá và lên kế hoạch phát triển mở rộng hãng. Phân tích viên này muốn sử dụng các ứng dụng khác nhau để thu thập thông tin và chuyển tất cả về dạng text. Tiên tích gì anh ta nên dùng trong trường hợp này a) DST import/export wizard b) DST designer c) Lệnh BULK INSERT d) BCP 148 Có 1 file dạng text, mà các cột phân cách nhau bằng dấu phẩy như mẫu sau: 1111, ‘*4 Interior’, 4, ‘Interior Lumber’, 1.12 1112, ‘2*4 Exterior’, 5, ‘Exterior Lumbar’, 1.87 2001, ‘16d galvanized’,2, ‘Bulk Nails’, 2.02 2221, ‘8d Finishing brads’,3, ‘Nails’, 0.01 Bạn cần nhập file này vào hai bảng Product và Category cùa SQL server. Cấu trúc của 2 bảng này như sau: Product (ProductID, [Desc], Cost, CategoryID) và bảng Category (CategoryID, CatDesc) Bạn muốn nhập dữ liệu mà ít mất công sức nhất. Bạn nên làm gì? a) Dùng tiện ích bcp với tuỳ chọn –t b) Dùng lệnh BULK INSERT c) Dùng DST để tạo 2 nhiệm vụ (task) chuyển đổi dữ liệu. Với mỗi nhiệm vụ, chọn cac cột thích hợp trong file text để đưa vào cột tương ứng của 2 bảng d) Không thể nhập 1 file text vào cho 2 bảng trong CSDL được 149 Bạn là nhà quản trị CSDL SQL. Bạn đang phát triển 1 DB cho công ty của bạn. Đồng nghiệp Peter của bạn đang dùng 1 ứng dụng nhập liệu hoá đơn mà ứng dụng này yêu cầu quyền của các lệnh SELECT, UPDATE và INSERT trên bảng Products. Anh ta không có quyền dùng các lệnh SELECT, INSERT, UPDATE 1 cách trực tiếp trên bảng Products. Việc truy xuất các bảng khác trong DB thì không bị hạn chế. Bạn sẽ làm gì trong ngữ cảnh này? a) Tạo 1 group account không cho quyền dùng lệnh SELECT, INSERT hay UPDATE trên bản Products, rồi thêm Peter như thành của nhóm này b) Tạo 1 user account không cho quyền dùng lệnh SELECT, INSERT hay UPDATE trên bảng Products, rồi thêm Peter như thành của nhóm này c) Tạo 1 database role không cho quyền dùng lệnh SELECT, INSERT hay UPDATE trên bảng Products, rồi thêm Peter như thành viên của role này. Sau đó tạo 1 application role với các quyền SELECT, INSERT hay UPDATE trên bảng Products d) Tạo 1 database role không cho quyền dùng lệnh SELECT, INSERT hay UPDATE cho toàn bộ các bảng của DB, rồi thêm Peter như thành của role này. Sau đó tạo 1 application role với các quyền SELECT, INSERT hay UPDATE trên bảng Products 150
Thủ tục hệ thống nào được dùng để thêm các user vào server role? a) sp_addlogin b) sp_adduser c) sp_srvaddrolemember d) sp_addsrvrolemember
151 Chris Forsythe là người qủan trị CSDL của công ty Great Graphics. Có 4 database role có tên gọi là Customers, Admin, Technology và Marketing. Role có tên là Technology bị cấm truy xuất vào bảng Products. Bill vừa được chuyển từ phòng Technology sang phòng Admin và được thêm vào role Admin. Mọi thành viên của phòng Admin ngoại trừ Bill ra đều có quyền SELECT trên bảng Products. Hãy giúp Chris có được quyền SELECT cho Bill vào bảng Products a) Sp_droprolemember 'Technology', 'Bill' b) Sp_addrolemember 'db_owner', 'Bill' c) GRANT SELECT ON Products TO Bill d) Sp_addrolemember 'Admin', 'Bill' 152
Don cần thêm 1 user mới có tên ‘Myuser’ vào system administration role. Lệnh nào sau đây sẽ
thực hiện được yêu cầu này? a) EXEC sp_addsrvrolemember 'MyUser', 'sysadmin' b) EXEC sp_addsrvrolemember 'MyUser', 'db_ddl_admin' c) EXEC sp_srvaddrolemember 'sysadmin', 'MyUser' d) EXEC sp_srvaddrolemember 'db_ddl_admin', 'MyUser' 153 Bạn là nhà quản tri DB cho công ty XYZ. Một trong các yêu cầu quản trị là bạn cần gán quyền cho các nhân viên của phòng kế toán sao cho họ được phép truy vấn dữ liệu nhưng không được quyền sửa đổi dữ liệu. Hãy xác định fixed database role nào bạn nên gán cho các nhân viên này? a) db_denydatareader b) db_backupoperator c) db_securityadmin d) db_denydatawriter 154
Server role nào sau mặc định bao gồm các thành viên của nhóm Administrator của Windows ? a) Serveradmin b) Securityadmin c) Sysadmin d) Processadmin
155 Ed đang tạo 1 CSDL cho công ty của anh ta. Mọi người đều có quyền truy xuất vào CSDL này. Trong CSDL có 1 bảng tên là EMP. Mọi người có thể dùng các lệnh SELECT và INSERT trên bảng này, ngoại trừ John và Mary là có thể được quyền sử dụng thêm các lệnh DDL. Bạn làm cách nào để nhanh chóng gán quyền cho các người dùng mà không gây ra các chi phí không cần thiết a) Tạo 1 role mới gọi là EMP, gán các user vào role này, kể cả John và Mary b) Tạo 1 role mới gọi là EMP, gán các user vào role này và gán các user vào role này ngoại trừ John và Mary c) Tạo 1 role mới gọi là EMP và gán quyền thích hợp cho các user kế cả John và Mary, sau đó thêm quyền update cho John và Mary d) Gán quyền SELECT và INSERT của bảng EMP vào role public database. Cấp cho John và Mary role db_dlladmin 156 Bạn là nhà quản trị hệ thống cho 1 trung tâm hổ trợ các dịch vụ ngân hàng. Dữ liệu ngân hàng được lưu trữ trong 1 DB SQL server. Các lãnh đạo trung tâm truy xuất vào dữ liệu thông qua một ứng dụng có tên là find_details. Để tránh những truy xuất không đúng, bạn muốn các lãnh đạo này chỉ được truy xuât vào DB thông qua ứng dụng. Xác định database role nào bạn sẽ dùng cho yêu cầu này a) db_backupoperator b) Custom Database Roles c) Application Roles d) Db_ddladmin 157 Bạn đang thiết kế CSDL sales cho công ty, CSDL này chủ yếu được truy xuất thông qua 1 chương trình ứng dụng hơn là truy xuất trực tiếp. Các nhân viên phòng tiếp thị và phòng dịch vụ khách hàng yêu cầu được quyền SELECT, INSERT, UPDATE trên tất cả các bảng. Ngoài việc sử dụng chương trình ứng dụng ra, các nhân viên tiếp thị sẽ dùng MS. Excel để vẽ đồ thị. Nhân viên phòng dịch vụ khách hàng đều là thành viên của nhóm CSR , nhân viên tiếp thị thuộc nhóm Marketing của hệ điều hành Windows. Bạn muốn nhân viên phòng phục vụ khách hàng chỉ được phép truy xuất vào CSDL sales thông qua chương trình ứng dụng, còn nhân viên tiếp thị có thể dùng cả chương trình ứng dụng và Excel để truy xuất vào CSDL sales. Bạn nên làm gì?? a) Tạo 1 database role có tên là Marketing cho nhân viên tiếp thị và 1 database role co tên là CustomerService cho nhân viên dịch vụ khách hàng. Thêm các nhóm người dùng của Windows vào các roles vừa tạo. Gán quyền SELECT cho tất cả các bảng vào role Marketing. Cấp quyền SELECT, INSERT, and UPDATE vào tất cả các bảng cho role CustomerService b) Tạo 1 application role cho cả hai nhóm nhân viên tiếp thị và dịch vụ khách hàng. Gán quyền SELECT cho tất cả các bảng vào nhóm Marketing. Cấp quyền SELECT, INSERT và UPDATE vào tất cả các bảng cho nhóm CSR c) Tạo 1 application role cho ứng dụng. Gán quyền SELECT, INSERT, and UPDATE vào aplication role. Tạo 1 database role đặt tên là Marketing cho nhân viên tiếp thị, Thêm nhóm Marketing của Windows vào role vừa tạo. Gán quyền SELECT vào tất cả các bảng của CSDL cho role Marketing d) Tạo 1 application role cho nhân viên dịch vụ khách hàng. Tạo 1 application thứ hai cho
nhóm tiếp thị. Gán quyền SELECT vào tất cả các bảng của CSDL vào apllication role dùng cho nhóm tiếp thị. Gán quyền SELECT, INSERT và UPDATE vào application role dùng cho nhóm dịch vụ khách hàng 158 Bạn đang phát triển CSDL Accounting cho công ty của bạn. CSDL có 1 bảng tên là Employees. Tom là 1 thành viên của phòng Accounting (kế toán). User ID của Tom bị cấm dùng lệnh SELECT trên cột Salary (lương) và BonusPercentage (Phần trăm tiền thưởng) của bảng Employees, nhưng được phép truy xuất vào tất cả các cột còn lại của bảng. Tom đang yêu cầu truy xuất vào tất cả dữ liệu của bảng Employees. Bạn sẽ làm gì? a) Thu hồi quyền SELECT trên các cột Salary và BonusPercentage của bảng Employees đối với user ID của Tom b) Thêm Tom vào role db_datareader c) Thêm Tom vào role db_accessadmin d) Gán quyền SELECT vào cột Salary và BonusPercentage của bảng Employees cho user ID của Tom 159 Bạn là nhà phát triển DB cho công ty của bạn. Một nhà phát triển DB khác tên là Andrea cần quyền để sửa đổi các view đang có sẵn trong DB. Tuy nhiên bạn không muốn cô ta không được xem hay thay đổi bất kỳ dữ liệu nào trong các bảng. Hiện tại cô ta đang thuộc nhóm Public. Bạn nên làm gì?? a) Thêm Andrea vào role db_owner b) Thêm Andrea vào role db_ddladmin c) Gán Andrea quyền CREATE VIEW d) Gán Andrea quyền ALTER VIEW 160 Bạn đang thiết kế CSDL Sale cho công ty của bạn. CSDL sẽ được dùng cho 3 chương trình ứng dụng (CTUD) khác nhau. Các user sử dụng các CT ứng dụng này đều là thành viên của các group cùa Windows. Các group được tạo ra đáp ứng với nhu cầu truy xuất dữ liệu của nhóm đó. Các CTUD sẽ kết nối vào CSDL Sales thông qua application role đã được tạo sẵn cho mỗi ứng dụng. Mỗi appilcation role đều có password riêng. Tất cả user chỉ được truy xuất vào CSDL Sales thông qua CT ứng dụng, họ không được gán thêm bất kỳ quyền nào trong CSDL. Bạn sẽ làm gì để thoả mãn yêu cầu này?? a) Gán các quyền thích hợp cho mỗi group của Windows b) Gán quyền thích hợp cho mỗi application role c) Gán các nhóm của Windows cho application role thích hợp d) Cung cấp cho các user password của application role 161 Câu lệnh SQL nào sau đây trả về tập record chứa 10% trong tổng số record là các sản phẩm có đơn giá cao nhất . a) SELECT TOP 10 ProductID, UnitPrice FROM products ORDER BY UnitPrice b) SELECT TOP 10 PERCENT ProductID, UnitPrice FROM products ORDER BY UnitPrice c) SELECT TOP 10 PERCENT ProductID, UnitPrice FROM products ORDER BY UnitPrice DESC d) SELECT TOP 10 PERCENT ProductID, UnitPrice FROM products 162 Câu lệnh SQL nào sau đây hiển thi Tổng số lượng tất cả các mặt hàng bán ra trong mỗi cửa hàng , và trong tất cả các cửa hàng . a) SELECT stor_id, product_id, qty FROM sales ORDER BY stor_id COMPUTE SUM(qty) BY product_id COMPUTE SUM(qty) BY stor_id b) SELECT stor_id, product_id, qty FROM sales ORDER BY stor_id, product_id COMPUTE SUM(qty) BY stor_id, product_id c) SELECT stor_id, product_id, qty FROM sales
ORDER BY stor_id, product_id COMPUTE SUM(product_id) BY stor_id COMPUTE SUM(product_id) d) SELECT stor_id, product_id, qty FROM sales ORDER BY stor_id COMPUTE SUM(qty) BY stor_id COMPUTE SUM(qty) 163 Giám đốc công ty yêu cầu báo cáo danh sách các Khách hàng đã mua tối thiểu 50000$ tổng trị giá các mặt hàng . Câu lệnh Select nào sau đây thực hiện được yêu cầu trên : a) SELECT o.CustomerID FROM Orders o, [Order Details] od WHERE o.orderID = od.orderID AND sum( od.quantity * od.unitprice) >= 50000 b) SELECT od.CustomerID FROM Orders o, [Order Details] od WHERE o.orderid = od.orderid GROUP BY o.CustomerID HAVING SUM( od.quantity * od.unitprice) >= 50000 c) SELECT o.CustomerID FROM Orders o, [Order Details] od WHERE o.orderid = od.orderid GROUP BY o.CustomerID HAVING SUM( od.quantity * od.unitprice) >= 50000 d) SELECT o.CustomerID, SUM( od.quantity * od.unitprice) FROM Orders o, [Order Details] od WHERE o.orderid = od.orderid GROUP BY o.orderid HAVING SUM( od.quantity * od.unitprice) >= 50000 164 Bạn cần viết một truy vấn hiển thị tên hàng (prodName) trong bảng hàng hoá (products) . Bạn muốn truy vấn trả về tập record có chứa chuỗi "The name of this product is " ngay trước tên mỗi mặt hàng . Câu lệnh nào sau đây mà bạn có thể sử dụng cho mục đích trên : a) SELECT [The name of this product is], prodName FROM products b) SELECT 'The name of this product is ' & prodName FROM products c) SELECT (The name of this product is), prodName FROM products d) SELECT 'The name of this product is ' + prodName FROM products 165 Bạn cần hiển thị tất cả các tổ hợp có thể có giữa các nhân viên và các công việc trong công ty . Có 10 nhân viên được lưu trong bảng Nhanvien và 6 công việc được lưu trong bảng Congviec . Bạn chọn query nào để thực hiện yêu cầu trên : a) SELECT * FROM nhanvien nv , congviec wk WHERE nv.MaNV = wk.MaCV b) SELECT * FROM nhanvien nv , congviec wk c) SELECT * FROM nhanvien nv LEFT OUTER JOIN congviec wk ON nv.MaNV = wk.MaCV d) SELECT * FROM nhanvien nv FULL OUTER JOIN congviec wk ON nv.MaNV = wk.MaCV 166 Bạn đang viết một câu lệnh Insert để nhập từng row vào bảng Customers. Câu lệnh sẽ được đặt trong một store procedure , và các giá trị nhập đựơc truyền dưới dạng tham số. Bạn muốn lệnh thi hành kể cả khi chưa nhận được đủ các giá trị ứng với các cột trong bảng. Biết rằng bảng Customers đã được thiết kế với tất cả các cột đều có giá trị Default. Hãy chỉ ra câu lệnh nào sau là đúng với trừơng hợp này : a) INSERT Customers ( Name, CID, *) VALUES ( @c, @id, DEFAULT) b) INSERT Customers DEFAULTS EXCEPT (Name = @c, CID = @id) c) INSERT Customers ( Name, CID) VALUES (@c, @id) WITH DEFAULT d) INSERT Customers ( Name, CID) VALUES (@c, @id)
167 Xem xét lệnh tạo bảng R : CREATE TABLE R ( a int IDENTITY (1,1), b int , c int DEFAULT(100) ) Nếu thi hành một lệnh INSERT bỏ qua danh sách cột trong mệnh đề Insert (ví dụ như : INSERT R VALUES …..) thì bạn cần phải liệt kê những cột nào trong mệnh đề values ? (Giả định thuộc tính IDENTITY_INSERT đang được set là OFF ) a) Tất cả các cột của bảng b) Tất cả các cột của bảng trừ cột IDENTITY c) Tất cả các cột của bảng trừ cột chấp nhận trị NULL d) Tất cả các cột của bảng trừ cột có giá trị DEFAULT 168 Lệnh Insert được dùng để nhập dữ liệu vào bảng . Bạn có thể viết trong mệnh đề insert một danh sách các cột của bảng . Điều này có ý nghĩa gì ? a) Chỉ định danh sách các cột mà dữ liệu sẽ được nhập vào . b) Chỉ định các giá trị sẽ được nhập vào bảng. c) Chỉ định danh sách các cột mà dữ liệu sẽ không được nhập vào . d) Tất cả các câu trên đều sai 169 Trong câu lệnh INSERT , từ khoá DEFAULT được sử dụng trong mệnh đề VALUES được dùng với mục đích gì ? a) Định nghĩa một giá trị default cho một cột b) Chỉ định lệnh được sử dụng giá trị Default nhập vào cho một cột c) Chỉ định lệnh được sử dụng giá trị Default để nhập cho tất cả các cột d) Chỉ định lệnh được sử dụng giá trị Default để nhập cho một cột nếu cột chấp nhận trị NULL 170
Lệnh nào có công dụng sao chép dữ liệu của một bảng sang một bảng khác ? a) Lệnh SELECT INTO b) Lệnh INSERT INTO c) Lênh UPDATE INTO d) Cả hai lệnh INSERT INTO và SELECT INTO
171 này :
Bạn cần cập nhật giảm 10% đơn giá của tất cả các mặt hàng . Lệnh nào phù hợp với mục tiêu a) UPDATE Products SET UnitPrice = 10 Percent UnitPrice b) UPDATE Products SET UnitPrice = UnitPrice - ( UnitPrice * .1) c) UPDATE Products SET UnitPrice = UnitPrice * .9 WHERE ProductID IS NOT NULL d) UPDATE Products SET UnitPrice = UnitPrice * .9 WHERE ProductID = 10
172
Cách nhanh nhất để xoá tất cả các row trong một table là sử dụng lệnh : a) DELETE table_name b) DELETE ALL table_name c) TRUNCATE TABLE table_name d) TRUNCATE ALL table_name
173
Trong SQL Server , để tạo và xoá một user_defined data type , ta có thể sử dụng : a) CREATE UDDT and DROP UDDT b) sp_addtype and sp_unbindtype c) sp_bindtype and sp_droptype d) sp_addtype and sp_droptype
174 Câu lệnh nào sau đây dùng để xoá các record trong table Hoá đơn (Orders) mà không có record tương ứng trong Chi tiết hoá đơn (OrderLine) ?
a) DELETE Orders WHERE OrderLine.OrderID Is NULL b) DELETE Orders WHERE OrderID NOT IN ( SELECT OrderID from OrderLine) c) DELETE Orders FROM OrderLine WHERE OrderLine.OrderID Is NULL d) DELETE Orders FROM OrderLine ol, Orders o WHERE o.OrderID = ol.OrderID 175 Xem xét 3 table được tạo bằng đoạn lệnh sau : CREATE TABLE R1 ( a INT PRIMARY KEY, b INT ) CREATE TABLE R2 ( c INT PRIMARY KEY, d INT REFERENCES R1(a) ) CREATE TABLE R3 ( e INT PRIMARY KEY, f INT REFERENCES R1(a) ) Giả sử bảng R1 chứa 3 dòng sau (1, 10) , (2, 20) , (3, 30) . Bảng R2, R3 chưa có dữ liệu. Hãy chỉ ra đoạn lệnh nào sau đây bị lỗi khi thi hành : a) INSERT INTO R3 VALUES(5,2); DELETE FROM R1 WHERE a=2; INSERT INTO R2 VALUES(1,1); b) INSERT INTO R2 VALUES(1,1); DELETE FROM R1 WHERE a=2; INSERT INTO R3 VALUES(6,1); c) DELETE FROM R1 WHERE a=2; INSERT INTO R2 VALUES(1,1); INSERT INTO R3 VALUES(5,1); d) INSERT INTO R3 VALUES(6,1); UPDATE R1 SET a=4 WHERE a=3; INSERT INTO R2 VALUES(10,4); 176 Xem xét hai cách tạo table Emps sau : Cách 1 : CREATE TABLE Emps ( empID INT, ssNo INT, name CHAR(50), mgrID INT, UNIQUE (empID), PRIMARY KEY (ssNo), FOREIGN KEY mgrID REFERENCES Emps (empID) ); Cách 2 CREATE TABLE Emps ( empID INT PRIMARY KEY, ssNo INT UNIQUE, name CHAR(50), mgrID INT REFERENCES Emps (empID) ); Phương án nào sau đây là đúng với cú pháp lệnh T_SQL : a) Cả hai cách đều đúng b) Không có cách nào đúng c) Cách 1 đúng
d) Cách 2 đúng 177 Xem xét hai cách tạo table Emps sau : Cách 1 : CREATE TABLE Emps ( empID INT, ssNo INT, name CHAR(50), mgrID INT REFERENCES Emps (empID) , UNIQUE (empID), PRIMARY KEY (ssNo) ); Cách 2 CREATE TABLE Emps ( empID INT PRIMARY KEY, ssNo INT UNIQUE, name CHAR(50), mgrID INT REFERENCES Emps (empID) ); Phương án nào sau đây là đúng với cú pháp lệnh T_SQL : a) Cả hai cách đều đúng b) Không có cách nào đúng c) Cách 1 đúng d) Cách 2 đúng 178 Xem xét hai cách tạo table Emps sau : Cách 1 : CREATE TABLE Emps ( empID INT, ssNo INT, name CHAR(50), mgrID INT, UNIQUE (empID), PRIMARY KEY (ssNo), CONSTRAINT fk_emps FOREIGN KEY mgrID REFERENCES Emps (empID) ); Cách 2 CREATE TABLE Emps ( empID INT PRIMARY KEY, ssNo INT UNIQUE, name CHAR(50), mgrID INT REFERENCES Emps (empID) ); Phương án nào sau đây là đúng với cú pháp lệnh T_SQL : a) Cả hai cách đều đúng b) Không có cách nào đúng c) Cách 1 đúng d) Cách 2 đúng 179 Bạn đang thiết kế bảng hoá đơn (Orders) với yêu cầu cần phải ghi nhận Ai và Thời gian thực hiện nhập _ ứng với mỗi dòng dữ liệu được đưa vào bảng . Lệnh nào sau đây giúp bạn thực hiện được yêu cầu trên : a) CREATE TABLE Orders ( OrderID int IDENTITY (1, 1) NOT NULL, CustomerID nchar (5) NULL, EmployeeID int NULL OrderDate datetime NULL, RequiredDate datetime NULL, ShippedDate datetime NULL, Freight money NULL,
ShipperID int NULL ) b) CREATE TABLE Orders ( OrderID int IDENTITY (1, 1) NOT NULL, CustomerID nchar (5) NULL, EmployeeID int NULL DEFAULT SESSION_USER OrderDate datetime NULL DEFAULT GETDATE(), RequiredDate datetime NULL, ShippedDate datetime NULL, Freight money NULL, ShipperID int NULL ) c) CREATE TABLE Orders ( OrderID int IDENTITY (1, 1) NOT NULL, CustomerID nchar (5) NULL, EmployeeID int NULL, OrderDate datetime NULL, RequiredDate datetime NULL, ShippedDate datetime NULL, Freight money NULL, ShipperID int NULL, UserName nvarchar (50) NOT NULL DEFAULT SYSTEM_USER, InsertDate datetime NOT NULL DEFAULT GETDATE() ) d) CREATE TABLE Orders ( OrderID int IDENTITY (1, 1) NOT NULL, CustomerID nchar (5) NULL, EmployeeID int NULL, OrderDate datetime NULL, RequiredDate datetime NULL, ShippedDate datetime NULL, Freight money NULL, ShipperID int NULL, UserName varchar (50) NOT NULL DEFAULT SYSTEM_USER(), InsertDate datetime NOT NULL DEFAULT NOW() ) 180
Điều gì xảy ra khi bạn thi hành lệnh sau :
CREATE TABLE tblEvents ( EventID int IDENTITY (1, 1) NOT NULL, EventType nvarchar (10) NULL, EventTitle nvarchar (100) NULL, EventDescription nvarchar (4000) NULL, EventLanguage nvarchar (2) NULL, EventDate smalldatetime NULL, EventEndDate smalldatetime NULL ) a) SQL Server tạo một bảng và không báo lỗi hay Warning b) SQL Server tạo một bảng và đưa ra một Warning về kích thước row c) SQL Server không tạo bảng và đưa ra một thông báo lỗi về kích thước row d) SQL Server không tạo bảng và đưa ra một Warning về kích thước row 181
An nói rằng câu query sau chạy rất chậm . An nói thêm rằng muốn thêm trong truy vấn bảng
Categories để hiển thị CategoryName cùng với mỗi mặt hàng : SELECT * FROM Products p, ProductType pt, Categories c WHERE p.ProdTypID = pt.ProdTypID Bạn giúp An chọn một câu query để thực hiện yêu cầu trên và tăng tốc độ thi hành câu lệnh a) SELECT * FROM Products p, ProductType pt, Categories c WHERE p.ProdTypID = pt.ProdTypID AND c.CategoryID = 5 b) SELECT * FROM Products p, ProductType pt, Categories c WHERE c.CategoryID = p.CategoryID c) SELECT * FROM Products p, ProductType pt, Categories c WHERE p.ProdTypID = 5 AND pt.ProdTypID = 5 d) SELECT * FROM Products p, ProductType pt, Categories c WHERE p.ProdTypID = pt.ProdTypID AND p.CategoryID = c.CategoryID 182 Xem xét hai câu lệnh sau cùng thực hiện trên table R : Câu 1 : SELECT * FROM R; Câu 2 : SELECT * FROM R ORDER BY a; Nhận xét nào là đúng ? a) Câu 1 và Câu 2 đều trả về tập record giống nhau b) Câu 1 và Câu 2 trả về tập record không giống nhau c) Câu 1 trả về tập record nằm trong tập record của Câu 2 d) Câu 2 trả về tập record nằm trong tập record của Câu 1 183 Xem xét hai câu lệnh sau cùng thực hiện trên table R : Câu 1 : SELECT * FROM R Câu 2 : SELECT * FROM R UNION SELECT * FROM R Nhận xét nào là đúng ? a) Câu 1 và Câu 2 đều trả về tập record giống nhau b) Câu 1 và Câu 2 trả về tập record không giống nhau c) Câu 1 trả về tập record nằm trong tập record của Câu 2 d) Câu 2 trả về tập record nằm trong tập record của Câu 1 184 Trong table R có môt số cột trong đó có cột a .Xét hai câu lệnh sau cùng thực hiện trên table R : Câu 1 : SELECT COUNT(a) FROM R; Câu 2 : SELECT COUNT(*) FROM R; Nhận xét nào là đúng ? a) Câu 1 và Câu 2 có kết quả giống nhau b) Câu 1 và Câu 2 có kết quả không giống nhau c) Kết quả của Câu 1 nhỏ hơn kết quả của Câu 2 d) Kết quả của Câu 1 nhỏ hơn hoặc bằng kết quả của Câu 2 185 Xem xét hai câu lệnh sau cùng thực hiện trên table R(a;b;c) : Câu 1 : SELECT DISTINCT a, b FROM R Câu 2 : SELECT a, b
FROM R GROUP BY a, b Nhận xét nào là đúng ? Câu 1 và Câu 2 đều trả về tập record giống nhau Câu 1 và Câu 2 trả về tập record không giống nhau Câu 1 trả về tập record nằm trong tập record của Câu 2 Câu 2 trả về tập record nằm trong tập record của Câu 1 186 Các trigger sau được tạo ra trên bảng Publishers: CREATE TRIGGER trgDeletePublisher1 ON Publishers AFTER DELETE AS print 'Deletion successful' CREATE TRIGGER trgDeletedPublisher2 ON Publishers AFTER DELETE AS print 'Details of the publisher deleted:' Select * From deleted CREATE TRIGGER trgDeletePublisher3 ON Publishers AFTER DELETE AS print 'One publisher deleted' Cái gì sẽ được in ra khi lệnh DELETE sau được thực thi? DELETE Publishers Where pub_name = 'GGG&G' a) Deletion successful Details of the publisher deleted: pub_id pub_name city state country ---------------------------------------------------------9901 GGG&G München NULL Germany (1 row(s) affected) One publisher deleted b) Details of the publisher deleted: pub_id pub_name city state country ------ ---------------------------------------------------9901 GGG&G München NULL Germany (1 row(s) affected) One publisher deleted c) Details of the publisher deleted: pub_id pub_name city state country ------ ---------------------------------------------------9901 GGG&G München NULL Germany (1 row(s) affected) Deletion successful d) Báo lỗi vì không thể có 3 trigger cho cùng 1 lệnh DELETE trên bảng Publishers 187
Lệnh nào sau đây đúng cú pháp: a) SELECT title, price, (SELECT AVG(price) FROM titles) AS average, price-(SELECT AVG(price) FROM titles) AS difference FROM titles WHERE type='popular_comp' b) SELECT title, price, AVG(price) AS average, price- AVG(price) AS difference
FROM titles WHERE type='popular_comp' c) SELECT AVG(price) AS average, price- AVG(price) AS difference FROM titles WHERE type='popular_comp' d) SELECT title, price,AVG(price) AS average AS difference FROM titles WHERE type='popular_comp' 189
Lệnh nào sau đây sai cú pháp: a) USE pubs SELECT title FROM titles WHERE advance > (SELECT advance FROM publishers INNER JOIN titles ON titles.pub_id = publishers.pub_id) b) USE pubs SELECT title FROM titles WHERE advance >=ANY (SELECT advance FROM publishers INNER JOIN titles ON titles.pub_id = publishers.pub_id) c) USE pubs SELECT title FROM titles WHERE advance > ALL (SELECT advance FROM publishers INNER JOIN titles ON titles.pub_id = publishers.pub_id) d) USE pubs SELECT title FROM titles WHERE advance IN (SELECT advance FROM publishers INNER JOIN titles ON titles.pub_id = publishers.pub_id)
190 Hãy tìm lỗi trong thủ tục sau: Create proc prc1 AS Declare @a smallint Declare @b smallint Set @a = 1 Set @b= 1 While (@a <=10) Begin While (@a <5) AND (@b>1) or (@b<3) Begin Set @a= @a+@b Set @b=@b+1 End End return a) Tên thủ tục prc1 sai b) Không có kiểu dữ liệu smallint c) Không cho phép 2 vòng lăp while lồng nhau d) Vòng lặp không kết thúc 192 Đề hiển thị thành phố nơi mà các tác giả không sống cùng thành phố với nhà xuất bản trong CSDL mẫu Pubs, người ta đã thực hiện lệnh sau: a) SELECT DISTINCT city FROM authors WHERE city NOT IN (select a.city from authors a join publishers p on a.city = p.city)
b) SELECT DISTINCT city FROM authors WHERE city NOT IN (SELECT city FROM publishers) c) SELECT DISTINCT city FROM authors WHERE NOT EXISTS (SELECT * FROM publishers WHERE authors.city = publishers.city) d) Cả ba lệnh trên đều đúng Đáp án:
1a 2d 3b 4c 5d 6d 7a 8b 9a 10a 11c 12b 13b 14b 15c 16c 17a 18c 19d 20c 21d 22c 23b 24a 25c 26b 27c 28c 29b 30a 31b 32c 33d 34d 35a 36b 37a 38a 39b 40c 41d 42d 43c 44a 45b 46a 47b 48a 49b 50c 51d 52d 53c 54b 55c 56a 57d 58a 59b 60d 61d 62b 63d 64a 65c 66c 67d 68b 69a 70a 71a 72b 73a 74b 75a 76a 77d 78d 79c 80b 81c 82b 83d 84a 85c 86a 87b 88a 89c 90c 91b 92c 93b 94c 95b 96d 97b 98c 99b 100b 101a 102c 103b 104b 105b 106d 107a 108c 109a 110c 111d 112a 113d 114d 115b 116d 117a 118d 119a 120d 121d 122d 123b 124c 125a 126a 127a 128a 129a 130b 131a 132a 133c 134b 135d 136c 137b 138d 139d 140a 141a 142b 143b 144b 145c 146b 147c 148d 149a 150b 151b 152b 153d 154b 155b 156a 157b 158b 159d 160a 161c 162d 163c 164c 165b 166c 167d 168b 169d 170b 171d 172b 173c 174b 175b 176b 177c 178d 179b 180c 181c 182b 183a 184d 185c 186c 187a 188b 189a 190b 191d 192d
(Tài liệu lưu hành nội bộ giành cho sinh viên học trung cấp tại trường Hui)
Chúc các em học tốt!!