### SQLServer试题知识点详解
#### 一、数据库创建与管理
**知识点1:创建数据库**
- **题目描述**:创建一个名为 `company` 的用户数据库。数据文件初始大小为10MB,无最大限制,以10%的速度增长。日志文件初始大小为1MB,最大为5MB,以1MB的速度增长。
- **正确答案**:
```sql
CREATE DATABASE company
ON PRIMARY
(
NAME = company_data,
FILENAME = 'D:\MSSQL\DATA\company.mdf',
SIZE = 10MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%
)
LOG ON
(
NAME = company_log,
FILENAME = 'D:\MSSQL\DATA\company.ldf',
SIZE = 1MB,
MAXSIZE = 5MB,
FILEGROWTH = 1MB
);
```
**知识点2:设置数据库为只读状态**
- **题目描述**:将 `company` 数据库设置为只读状态。
- **正确答案**:
```sql
EXEC sp_dboption 'company', 'read_only', 'true';
```
**知识点3:扩充数据库初始分配空间**
- **题目描述**:将 `company` 数据库的初始分配空间大小扩充到20MB。
- **正确答案**:
```sql
ALTER DATABASE company MODIFY FILE
(
NAME = company_data,
SIZE = 20MB
);
```
**知识点4:更改数据库名称**
- **题目描述**:将 `company` 用户数据库改名为 `corporation`。
- **正确答案**:
```sql
EXEC sp_dboption 'company', 'single_user', 'true';
EXEC sp_renamedb 'company', 'corporation';
EXEC sp_dboption 'corporation', 'multi_user', 'true';
```
**知识点5:压缩数据库空间**
- **题目描述**:将 `corporation` 数据库的空间压缩至最小容量。
- **正确答案**:
```sql
DBCC SHRINKDATABASE ('corporation');
```
**知识点6:删除数据库**
- **题目描述**:删除 `corporation` 数据库。
- **正确答案**:
```sql
DROP DATABASE corporation;
```
#### 二、数据表的创建与修改
**知识点7:数据表的创建与基本属性**
- **选择题1**:假如定义表时没有为一个 `CHAR` 数据类型的列指定长度,其默认长度是多少?
- 正确答案:D. 1
- 解析:在SQL Server中,如果未指定长度,则默认长度为1。
- **选择题2**:关系数据库是若干什么的集合?
- 正确答案:A. 表(关系)
- 解析:关系数据库由多个表组成,这些表通过关系链接在一起。
- **选择题3**:从下列选项中选择一个无效的数据类型?
- 正确答案:无
- 解析:所有列出的数据类型均为有效类型,即 `binary`, `varchar`, `time`, `image` 都是SQL Server支持的数据类型。
- **选择题4**:不允许在关系中出现重复记录的约束通过什么实现?
- 正确答案:D. PRIMARY KEY 或 UNIQUE
- 解析:通过定义主键 (`PRIMARY KEY`) 或唯一键 (`UNIQUE`) 可以确保表中的记录不重复。
- **选择题5**:参照完整性规则:表的什么必须是另一个表主键的有效值,或者是空值?
- 正确答案:B. 外关键字
- 解析:外键约束 (`FOREIGN KEY`) 确保一个表中的某列值与另一表的主键值相匹配,或者为空。
- **选择题6**:从表 `stud_info` 中删除一列 `telcode` 的命令是什么?
- 正确答案:A. `ALTER TABLE stud_info DROP COLUMN telcode`
- 解析:使用 `ALTER TABLE` 语句可以删除表中的一列。
- **选择题7**:哪一条语句将在教师基本信息表 `teacher_info` 的 `teacher_id` 列上建立一个主键约束 `PK_teacher_id`?
- 正确答案:C. `ALTER TABLE teacher_info ADD CONSTRAINT PK_teacher_id PRIMARY KEY(teacher_id)`
- 解析:使用 `ALTER TABLE` 语句可以添加主键约束。
- **选择题8**:假如已经建立了表 `stud_score`,该表有 6 条记录,当执行以下语句时,哪条说法是正确的?
- 正确答案:D. 一个新的列 `exam_date` 被添加到表 `stud_score` 中,并且用当前系统日期和时间作为该列的值
- 解析:向已存在的表中添加新列并指定 `DEFAULT` 值为 `GETDATE()`,则现有记录的该列将被填充为当前系统日期和时间。
- **选择题9**:哪条语句将成功地往表 `stud_score` 中加入一个新列 `exam_date`?
- 正确答案:A. `ALTER TABLE stud_score ADD COLUMN exam_date DATE`
- 解析:使用 `ALTER TABLE` 语句添加新列,并指定数据类型为 `DATE`。
### 扩展知识点
#### 数据库类型
- **知识点8:SQL Server中的数据库类型**
- **系统数据库**:包括 `master`、`model`、`msdb` 和 `tempdb`。
- `master`:是所有数据库的基础,存储了SQL Server系统的所有信息。
- `model`:是新创建的每个数据库的模板。
- `msdb`:用于存储作业、警报和任务计划等系统级信息。
- `tempdb`:是一个临时数据库,用于存储临时表和结果集。
- **用户数据库**:用户自己创建的数据库,用于存储应用程序数据。
#### 创建用户数据库的方法
- **知识点9:创建用户数据库的方法**
- 使用 **SQL Server Management Studio** (SSMS) 图形界面工具创建。
- 通过执行 **T-SQL** 语句 (`CREATE DATABASE`) 创建。
- 使用 **SQL Server PowerShell** 脚本创建。
- 通过编写 **.NET** 应用程序或使用其他编程语言调用SQL Server对象模型来创建。
以上知识点涵盖了SQL Server数据库管理和数据表操作的基本方面,对于理解SQL Server的基本概念和常用操作非常关键。