Microsoft SQL Server 2012 数据库管理指南习题及答案解析_高级后台开发

一、选择题

1. 在SQL语句中,以下哪个关键字用于指定要执行的语句的顺序?

A. SELECT
B. FROM
C. WHERE
D. ORDER BY

2. SQL中的通配符“%”表示什么?

A. 任意单个字符
B. 任意多个字符
C. 特定字符
D. 表名

3. 在SQL中,如何对一个名为“employees”的表进行筛选,仅返回工资大于的记录?

A. SELECT * FROM employees WHERE salary > 50000
B. SELECT * FROM employees WHERE salary <= 50000
C. SELECT * FROM employees WHERE salary >= 50000
D. SELECT * FROM employees WHERE salary < 50000

4. SQL Server中,以下哪种类型的存储过程可以访问数据库中的所有表?

A. DDL
B. DML
C. DENSE_ROWS
D. TRIGGER

5. 在SQL Server中,如何创建一个包含两个列“id”和“name”的数据表?

A. CREATE TABLE table_name (id INT, name VARCHAR(255))
B. CREATE TABLE table_name (id INT, name VARCHAR(255))
C. CREATE TABLE table_name (id INT, name NVARCHAR(255))
D. CREATE TABLE table_name (id INT, name CHAR(255))

6. 在SQL中,以下哪个函数用于计算两个日期之间的天数?

A. DATEDIFF
B. ADD_DAYS
C. Subtract_Days
D. DATEADD

7. SQL Server中,以下哪种类型的列不能用于建立索引?

A. 计算列
B. 只包含非负整数的列
C. 常量列
D. 包含重复值的列

8. 在SQL Server中,如何更改一个名为“employees”的表的主键?

A. ALTER TABLE employees ADD primary key (id)
B. ALTER TABLE employees MODIFY primary key (id)
C. UPDATE employees SET primary key (id) = 1
D. DELETE FROM employees WHERE id = 1

9. 在SQL Server中,以下哪种类型的触发器可以在插入新行时自动更新相关表?

A. INSERT
B. UPDATE
C. DELETE
D. CONCATENATE

10. 在SQL Server中,如何创建一个触发器,在“employees”表的数据更新时自动删除年龄大于岁的员工?

A.CREATE TRIGGER trg after update on employees for each ROW set reach_age(NEW.age) > 50
B.CREATE TRIGGER trg after update on employees for all Rows set age > 50
C.CREATE TRIGGER trg before update on employees set age > 50
D.CREATE TRIGGER trg after delete on employees for each ROW set age > 50

11. 在SQL Server中,如何创建一个包含两个列(col,col)且字段 col 为VARCHAR() 类型的数据表?

A. CREATE TABLE table_name (col1 VARCHAR(50), col2 VARCHAR(50))
B. CREATE TABLE table_name (col1 INT, col2 INT)
C. CREATE TABLE table_name (col1 VARCHAR(50), col2 NVARCHAR(50))
D. CREATE TABLE table_name (col1 INT, col2 NVARCHAR(50))

12. 在SQL Server中,如何向名为“users”的数据表中插入一条记录,该记录的“username”值为“admin”,“password”值为“”?

A. INSERT INTO users (username, password) VALUES ('admin', '123456')
B. UPDATE users SET username='admin', password='123456' WHERE id=1
C. DELETE FROM users WHERE id=1
D. ALTER TABLE users ADD username VARCHAR(50), password VARCHAR(50)

13. 在SQL Server中,如何删除名为“users”的数据表以及其内的所有记录?

A. DROP TABLE users;
B. DELETE FROM users;
C. TRUNCATE TABLE users;
D. DELETE [users];

14. 在SQL Server中,如何使用CREATE INDEX语句创建一个名为“idx_username”的索引,该索引基于“users”表中的“username”列?

A. CREATE INDEX idx_username ON users (username);
B. CREATE INDEX idx_username USING gin;
C. CREATE INDEX idx_username FOR users (username);
D. CREATE INDEX idx_username OF users (username);

15. 在SQL Server中,如何使用SELECT语句查询名为“users”的数据表中“username”列值大于“admin”的所有记录?

A. SELECT * FROM users WHERE username>'admin';
B. SELECT * FROM users WHERE username>123;
C. SELECT * FROM users WHERE username>'admin';
D. SELECT * FROM users WHERE username<'admin';

16. 在SQL Server中,如何使用UPDATE语句修改名为“users”的数据表中“username”列值为“new_user”的记录的“password”列值为“new_password”?

A. UPDATE users SET password='new_password' WHERE username='new_user';
B. UPDATE users SET username='new_user', password='new_password' WHERE id=1;
C. UPDATE users SET password='new_password' WHERE username='new_user';
D. UPDATE [users] SET username='new_user', password='new_password' WHERE id=1;

17. 在SQL Server中,如何使用CREATE FUNCTION语句创建一个名为“get_user_count”的自定义函数,该函数返回名为“users”的数据表中记录数的数量?

A. CREATE FUNCTION get_user_count() RETURNS INT;
B. CREATE FUNCTION [get_user_count] () RETURNS INT;
C. CREATE FUNCTION dbo.get_user_count() RETURNS INT;
D. CREATE FUNCTION [dbo].[get_user_count]() RETURNS INT;

18. 在SQL Server中,如何使用CREATE PROCEDURE语句创建一个名为“proc_insert_user”的过程,该过程向名为“users”的数据表中插入一条记录,插入记录的“username”值为“new_user”,“email”值为“new_email”?

A. CREATE PROCEDURE proc_insert_user(@username VARCHAR(50), @email VARCHAR(50))
B. CREATE PROCEDURE dbo.proc_insert_user(@username VARCHAR(50), @email VARCHAR(50))
C. CREATE PROCEDURE [dbo].[proc_insert_user](@username VARCHAR(50), @email VARCHAR(50))
D. CREATE PROCEDURE [dbo].[Proc_Insert_User](@username VARCHAR(50), @email VARCHAR(50))

19. 在SQL Server中,如何使用CREATE TRIGGER语句创建一个名为“trg_update_password”触发器,该触发器在“users”表中的“username”列更新时自动发送一条警告消息?

A. CREATE TRIGGER trg_update_password ON users FOR EACH ROW SIGNAL INSERTED NOTIFY GETDATE()
B. CREATE TRIGGER trg_update_password ON users FOR EACH ROW INSERT NOTIFY GETDATE()
C. CREATE TRIGGER trg_update_password ON users FOR EACH ROW NOTIFY GETDATE()
D. CREATE TRIGGER trg_update_password ON users FOR EACH ROW BEFORE INSERT NOTIFY GETDATE()

20. 在SQL Server中,如何使用CREATE views语句创建一个名为“vw\_users”的视图,该视图返回名为“users”数据表中“username”列值为“admin”的所有记录?

A. CREATE VIEW vw_users AS SELECT * FROM users WHERE username='admin';
B. CREATE VIEW [vw_users] AS SELECT * FROM users WHERE username='admin';
C. CREATE VIEW dbo.vw_users AS SELECT * FROM users WHERE username='admin';
D. CREATE VIEW [dbo].[vw_users] AS SELECT * FROM users WHERE username='admin';

21. 在SQL Server中,如何进行用户 account 的创建?

A. ALTER USER 
B. CREATE USER 
C. ALTER ROLE 
D. CREATE ROLE 

22. SQL Server中的database 文件夹位于哪个目录下?

A. C:\SQLServer
B. D:\SQLServer
C. E:\SQLServer
D. F:\SQLServer

23. 如何查看SQL Server中的数据库列表?

A. sp_helpdb
B. sys.database_principals
C. msdb
D. dbconfig

24. 在SQL Server中,如何实现用户权限的控制?

A. 创建角色
B. 创建用户
C. 分配权限 to a user or role
D. 删除用户或角色

25. SQL Server中,如何查看当前正在连接的客户端?

A. sp_statement_compile
B. sp_statement_execute
C. sp_client_connections
D. sys.dm_exec_query_stats

26. SQL Server中,如何创建自定义函数?

A. CREATE FUNCTION
B. CREATE TRIGGER
C. CREATE PROCEDURE
D. CREATE VIEW

27. SQL Server中有哪些常用的系统表?

A. sys.columns
B. sys.indexes
C. sys.partitions
D. sys.views

28. 在SQL Server中,如何修改表结构?

A. ALTER TABLE
B. MODIFY TABLE
C. UPDATE TABLE
D. DELETE TABLE

29. SQL Server中,如何实现数据的备份?

A. backup-database
B. restore-database
C. differential-database
D. transaction-log

30. 在SQL Server中,如何查看日志文件的状态?

A. sp_configure
B. sys.database_principals
C. msg_delivery
D. show_error

31. 在SQL Server中,如何创建一个名为“TestDB”的数据库?

A. 使用CREATE DATABASE TestDB命令
B. 使用CREATE DATABASE Test_DB命令
C. 使用CREATE DATABASE db_TestDB命令
D. 使用CREATE DATABASE testdb命令

32. 如何使用sp\_addsrvrolemember将用户账户添加到SQL Server服务器上?

A. use sp_addsrvrolemember 'username', 'server_principal'
B. use sp_addsrvrolemember 'username', 'server_name'
C. use sp_addsrvrolemember 'username', 'domain_name'
D. use sp_addsrvrolemember 'username', 'login'

33. 在SQL Server中,如何查看当前正在连接的用户?

A. sp_cursor_lists
B. sp_statement_lists
C. sys.session_listons
D. xp_cmdshell('SELECT * FROM sys.database_principals WHERE is_ms_shipped = 0')

34. 如何使用sp\_configure命令更改SQL Server实例的属性?

A. sp_configure 'max_allowed_packet' /t REGULAR
B. sp_configure 'max_allowed_packet' /t MICROS
C. sp_configure 'max_connections' /t REGULAR
D. sp_configure 'max_connections' /t MICROS

35. 在SQL Server中,如何创建一个名为“TestTable”的表,包含两个列“ID”和“Name”?

A. CREATE TABLE TestTable (ID INT, Name NVARCHAR(50))
B. CREATE TABLE TestTable (ID int, Name varchar(50))
C. CREATE TABLE TestTable (ID int, Name nvarchar(50))
D. CREATE TABLE TestTable (ID int, Name char(50))

36. 如何使用CREATE USER命令创建一个名为“TestUser”的用户,并分配管理员权限?

A. create user TestUser with password = 'password'; grant TestUser sysadmin;
B. create user TestUser; use TestUser; grant TestUser sysadmin;
C. create TestUser with username = 'TestUser'; assign TestUser sysadmin;
D. create TestUser; create user TestUser with password = 'password'; grant TestUser sysadmin;

37. 在SQL Server中,如何获取表中的所有行?

A. SELECT \* FROM TestTable
B. SELECT * FROM TestTable WHERE ID > 10
C. SELECT Top 10 \* FROM TestTable
D. SELECT \* FROM TestTable ORDER BY ID DESC

38. 如何使用INSERT INTO命令向表中插入一行数据?

A. INSERT INTO TestTable (ID, Name) VALUES (1, 'John');
B. INSERT INTO TestTable (ID, Name) VALUES (1, 'John Doe');
C. INSERT INTO TestTable (ID, Name) VALUES (2, 'Jane');
D. INSERT INTO TestTable (ID, Name) VALUES (2, 'Jane Smith');

39. 在SQL Server中,如何使用CREATE INDEX命令创建一个名为“Index”的索引,以便更快速地查找表中的数据?

A. CREATE INDEX Index1 ON TestTable (ID);
B. CREATE INDEX Index1 ON TestTable (Name);
C. CREATE INDEX Index1 ON TestTable (ID, Name);
D. CREATE INDEX Index1 ON TestTable (Name, ID);

40. 如何使用DROP TABLE命令删除名为“TestTable”的表?

A. DROP TABLE TestTable;
B. DROP TABLE Test_Table;
C. DROP TABLE db_TestTable;
D. DROP TABLE TestTable FROM db_TestTable;

41. 在SQL Server中,如何使用ADO.NET API进行数据库操作?

A. 直接使用SQL语句
B. 使用Entity Framework框架
C. 使用 stored procedures
D. 使用Transact-SQL语言

42. 在VB.NET应用程序中,如何使用SQL Server数据库?

A. 使用ADO.NET API
B. 使用Entity Framework框架
C. 使用Open XML Converter
D. 使用EF Designer for ADO.NET

43. SQL Server中的事务是什么?

A. 数据库对象
B. 数据库实例
C. 数据库表
D. 数据库操作序列

44. 使用SQL Server Integration Services (SSIS),你可以进行哪些数据转换操作?

A. 字符串转换
B.日期转换
C. numerical转换
D. XML转换

45. 在SQL Server中,如何创建一个数据库?

A. 使用CREATE DATABASE语句
B. 使用CREATE LOGIN语句
C. 使用CREATE PROCEDURE语句
D. 使用CREATE TABLE语句

46. 在ADO.NET中,如何在应用程序中使用事务?

A. 使用BEGIN TRANSACTION语句
B. 使用COMMIT TRANSACTION语句
C. 使用ROLLBACK TRANSACTION语句
D. 使用SAVE TRANSACTION语句

47. 使用SQL Server Analysis Services,你可以进行哪些数据分析和报表创建?

A. 折线图
B. 柱状图
C. 散点图
D. 多维数据立方体

48. 在SQL Server中,如何创建一个触发器?

A. 使用CREATE TRIGGER语句
B. 使用CREATE PROCEDURE语句
C. 使用CREATE FUNCTION语句
D. 使用CREATE INDEX语句

49. 在VB.NET应用程序中,如何执行一个远程SQL命令?

A. 使用ADO.NET API
B. 使用Web服务
C. 使用命名空间
D. 使用XML文档

50. 在SQL Server中,如何更改数据库的默认字符集?

A. 使用ALTER DATABASE语句
B. 使用sp_configure语句
C. 使用sp_addsrvrolemember语句
D. 使用sp_changenextcollation语句

51. 在SQL Server中,如何实现数据库的高可用性?

A. 开启数据库实例复制
B. 配置数据库日志
C. 定期备份数据库
D. 使用触发器

52. SQL Server中的事务隔离级别有哪些?

A. 读未提交
B. 读已提交
C. 可重复读
D. 串行化

53. 如何使用SQL Server Management Studio查询数据库?

A. 直接在命令提示符下输入SQL语句
B. 使用PowerShell脚本
C. 使用SQL Server Data Tools
D. 使用Visual Basic for Applications

54. SQL Server中,如何实现对数据表的索引?

A. 在创建表时定义索引
B. 通过ALTER TABLE语句添加索引
C. 使用CREATE INDEX语句
D. 使用sp_configure函数

55. 在SQL Server中,如何查看当前连接的属性?

A. 使用sp_connect
B. 使用 sp_statement
C. 使用SELECT语句
D. 使用t-sql语句

56. SQL Server中有哪些类型的存储过程?

A. 用户存储过程
B. 系统存储过程
C. 应用程序存储过程
D. 本地存储过程

57. SQL Server中,如何实现数据的完整性检查?

A. 使用主键
B. 使用外键
C. 使用唯一约束
D. 使用CHECK约束

58. SQL Server中,如何实现对表的约束?

A. 在创建表时定义约束
B. 通过ALTER TABLE语句添加约束
C. 使用CREATE CONSTRAINT语句
D. 使用sp_configure函数

59. SQL Server中,如何使用UPDATE语句更新数据表?

A. 直接修改记录
B. 使用INNER JOIN语句
C. 使用子查询更新
D. 使用ROW wise更新

60. 在SQL Server中,如何实现对数据表的删除操作?

A. 直接删除记录
B. 使用DELETE语句
C. 使用TRUNCATE语句
D. 使用CASCADE语句
二、问答题

1. 什么是SQL Server的高可用性(High Availability, HAVA)?


2. 如何配置SQL Server的主服务器角色?


3. SQL Server中的触发器是什么?有什么作用?


4. SQL Server中的视图是什么?有什么作用?


5. SQL Server中的存储过程是什么?有什么作用?


6. 什么是SQL Server中的函数?有什么作用?


7. 如何配置SQL Server数据库的编码方案?




参考答案

选择题:

1. D 2. B 3. C 4. B 5. A 6. D 7. C 8. A 9. B 10. A
11. A 12. A 13. C 14. A 15. A 16. A 17. A 18. C 19. D 20. A
21. B 22. A 23. B 24. C 25. C 26. A 27. D 28. A 29. A 30. C
31. A 32. A 33. D 34. C 35. A 36. A 37. A 38. A 39. C 40. A
41. B 42. A 43. D 44. D 45. A 46. D 47. D 48. A 49. A 50. D
51. A 52. D 53. C 54. A、B、C 55. A 56. A、B、C 57. D 58. A、B、C 59. A、B、C 60. A、B、C

问答题:

1. 什么是SQL Server的高可用性(High Availability, HAVA)?

SQL Server高可用性是指在SQL Server实例出现故障或单点故障时,能够保持对数据库的正常使用,确保数据的完整性和连续性。通过使用数据库复制技术、触发器、事务日志等技术手段,实现对数据库故障的自动切换和负载均衡,从而提高数据库的可用性。
思路 :了解高可用性的定义和作用,掌握相关技术手段。

2. 如何配置SQL Server的主服务器角色?

SQL Server主服务器角色是用于管理整个SQL Server实例的,主要包括系统管理员、数据库管理员、应用程序开发者等角色。配置主服务器角色需要进行以下步骤:
– 打开SQL Server Management Studio;
– 连接到SQL Server实例;
– 右键单击“角色”,选择“添加角色”;
– 在“添加角色”对话框中,选择合适的角色,然后单击“确定”;
– 接着在“角色属性”对话框中,完成角色的配置。
思路 :熟悉主服务器角色的配置方法,掌握实际操作技巧。

3. SQL Server中的触发器是什么?有什么作用?

触发器是一种特殊类型的存储过程,用于在数据库事件发生时自动执行一些操作。常见的数据库事件有插入、更新、删除和默认值等。触发器的作用包括:
– 在数据表发生变化时,自动更新相关联的数据;
– 在数据表未发生变化时,自动执行一些操作,如更新统计信息等;
– 在执行某些特定的SQL语句之前或之后,自动执行一些操作。
思路 :理解触发器的定义和作用,掌握触发器的使用方法和示例。

4. SQL Server中的视图是什么?有什么作用?

视图是虚拟表,它将 SELECT 语句的结果集以一种特定 format 呈现出来。视图的作用包括:
– 提供一种简化的查询方式,使得复杂的查询更易于理解和维护;
– 隐藏敏感数据,保护数据的隐私;
– 简化数据访问,减少冗余代码;
– 实现跨表的数据整合,便于数据分析。
思路 :熟悉视图的定义和作用,掌握视图的使用方法和示例。

5. SQL Server中的存储过程是什么?有什么作用?

存储过程是一组预编译的T-SQL语句,用于执行特定的任务。存储过程的作用包括:
– 封装复杂的逻辑,提高代码的可读性和可维护性;
– 提高数据库的安全性,限制对数据库的访问;
– 减少网络流量,提高数据库性能;
– 支持事务处理,保证数据的完整性和一致性。
思路 :理解存储过程的定义和作用,掌握存储过程的使用方法和示例。

6. 什么是SQL Server中的函数?有什么作用?

函数是一段可重用的T-SQL代码,用于执行特定的计算或操作。函数的作用包括:
– 简化复杂的计算,提高代码的可读性和可维护性;
– 提高数据库的性能,减少计算负担;
– 提供灵活的sql语句,满足不同的需求;
– 支持聚合函数,便于数据分析。
思路 :熟悉函数的定义和作用,掌握函数的使用方法和示例。

7. 如何配置SQL Server数据库的编码方案?

SQL Server数据库的编码方案包括字符集、校验规则和 collation 规则。配置编码方案的步骤如下:
– 打开SQL Server Management Studio;
– 连接到SQL Server实例;
– 选择“数据库属性”;
– 选择“字符集”;
– 在“字符集”选项卡中,选择合适的字符集;
– 选择“校验规则”;
– 在“校验规则”选项卡中,设置合适的校验规则;
– 选择“collation”规则;
– 在“collation”选项卡中,设置合适的

IT赶路人

专注IT知识分享