### 数据库系统概论实验指导2 - 表的创建与管理
#### 一、表的创建
表是数据库中用于存储数据的基本结构。本节主要介绍两种创建表的方法:通过企业管理器创建表以及使用Transact-SQL语句创建表。
##### 1.1 利用企业管理器创建表
企业管理器提供了图形化的界面来简化数据库对象的创建过程。用户可以通过点击按钮和填写必要的信息来创建新表。这种方法直观且易于操作,特别适合初学者或者对SQL命令不熟悉的用户。
##### 1.2 利用Transact-SQL语句创建表
Transact-SQL提供了丰富的命令集来管理数据库,包括表的创建。`CREATE TABLE`命令是最基本也是最重要的命令之一。下面详细介绍该命令的语法及示例:
```sql
CREATE TABLE [database_name_.[owner].] table_name(
<column_dafinition>|column_name AS computed_column_expression|<table_constraint>
)
[ON {filegroup | DEFAULT}]
[TEXTIMAGE_ON {filegroup | DEFAULT}]
```
其中:
- `database_name` 是可选参数,表示创建表所在的数据库。
- `table_name` 是必填项,表示新创建的表的名字。
- `<column_dafinition>` 定义了表中每列的数据类型、长度和其他属性。
- `<table_constraint>` 可以定义表级别的约束,如主键、外键、唯一性等。
**示例1**:创建一个名为 `student` 的表,包含学号、姓名、性别、出生日期和系别等字段。
```sql
USE test22;
CREATE TABLE student (
sno CHAR(5) NOT NULL,
sname CHAR(8) NULL,
sex CHAR(2) NULL,
sbirth SMALLDATETIME NULL,
sdept CHAR(20) NULL
);
```
**示例2**:创建一个名为 `tal` 的表,包含自动增长的主键、默认值为 "Unknown" 的名称字段,以及一个日期不能晚于当前日期的约束。
```sql
USE test22;
CREATE TABLE tal (
pid INT IDENTITY(1,1) PRIMARY KEY,
[name] CHAR(10) DEFAULT('unknown'),
birthday DATETIME CHECK (birthday < GETDATE())
);
```
接着可以进行数据的插入和查询:
```sql
INSERT INTO tal ([name], birthday) VALUES ('lam', '1977-03-20');
SELECT * FROM tal;
```
#### 二、表的修改
表的修改是指对现有表结构进行调整的过程,这包括但不限于增加、删除或修改列,以及添加或删除约束等操作。
##### 2.1 利用企业管理器修改表
企业管理器同样提供了修改表结构的功能。用户可以通过企业管理器找到要修改的表,然后选择相应的选项来执行修改操作,例如添加或删除列、修改列的属性等。
##### 2.2 利用Transact-SQL语句修改表
Transact-SQL提供了`ALTER TABLE`命令来修改表结构。以下是一些常见的修改操作及其语法示例:
```sql
ALTER TABLE table
{
[ALTER COLUMN column_name {new_date_type [NULL|NOT NULL]}]
| ADD [<column_definition>]
| ADD [<table_constraint>]
| DROP [CONSTRAINT constraint_name]
| ...
}
```
**示例3**:使用Transact-SQL对 `student` 表进行多种修改:
1. **添加新的字段**:例如,在 `student` 表中添加一个“班级”字段,数据类型为字符型。
```sql
ALTER TABLE student ADD 班级 CHAR(10);
```
2. **删除表中的旧列**:例如,将 `student` 表中的 “sdept” 字段删除。
```sql
ALTER TABLE student DROP COLUMN sdept;
```
3. **更改表以添加具有约束的列**:例如,给 `student` 表增加 “grade” 字段并加上 CHECK 约束,让其不大于 100。
```sql
ALTER TABLE student ADD grade INT CONSTRAINT chname CHECK (grade <= 100);
EXEC sp_help chname;
```
4. **添加日期约束**:例如,给 `student` 表添加 “birthday” 字段,并且这个日期不能在录入当天的日期后。
```sql
ALTER TABLE student ADD birthday DATETIME CHECK (birthday < GETDATE());
```
以上就是关于表的创建与管理的相关知识点,通过这些示例和解释,希望能帮助大家更好地理解和掌握如何使用Transact-SQL进行表的操作。