根据提供的文档内容,我们可以归纳出本实验报告涉及的关键知识点,主要围绕数据库的创建、表的构建与维护等方面展开。下面将对这些知识点进行详细的解析。
### 数据库与表的创建
#### 实验目的
- 学习如何创建数据库以及表的基本操作。
- 掌握表的结构设计,包括字段类型、长度、是否允许为空等属性。
- 了解并实践SQL语句在数据库操作中的应用。
#### 实验内容分析
1. **创建数据库**:通过`CREATE DATABASE`命令创建了一个名为`test`的新数据库。这是数据库操作的基础,任何后续的操作都需要基于已存在的数据库进行。
```sql
CREATE DATABASE test;
```
2. **创建部门表**:在`test`数据库中创建了一个名为“部门”的表,该表包含三个字段:`ID`(部门编号)、`name`(部门名称)和`manager`(部门经理),并且这三个字段都不允许为空。
```sql
USE test;
CREATE TABLE 部门 (
ID CHAR(7) NOT NULL,
name CHAR(10) NOT NULL,
manager CHAR(10) NOT NULL
);
```
3. **创建员工表**:同样是在`test`数据库中创建了一个名为“员工”的表,其中包含五个字段:`name`(员工姓名)、`personID`(员工编号)、`sex`(性别)、`birthday`(出生日期)和`deptID`(所属部门编号),这些字段同样不允许为空。
```sql
CREATE TABLE 员工 (
name CHAR(10) NOT NULL,
personID CHAR(7) NOT NULL,
sex CHAR(7) NOT NULL,
birthday DATETIME NOT NULL,
deptID CHAR(7) NOT NULL
);
```
### 表的维护
1. **修改表结构**
- **设置主键**:为了确保数据的唯一性,可以通过`ALTER TABLE`命令来设置一个或多个字段作为主键。
```sql
ALTER TABLE 部门 ADD CONSTRAINT C1 PRIMARY KEY (ID);
ALTER TABLE 员工 ADD CONSTRAINT C2 PRIMARY KEY (personID);
```
- **设置外键**:为了实现不同表之间的关联,可以设置外键,这里将`员工`表中的`deptID`字段设置为指向`部门`表中`ID`字段的外键。
```sql
ALTER TABLE 员工 ADD CONSTRAINT C3 FOREIGN KEY (deptID) REFERENCES 部门 (ID);
```
- **添加新字段**:可以通过`ALTER TABLE`命令向现有表中添加新的字段。
```sql
ALTER TABLE 部门 ADD quantity CHAR(5);
```
- **删除字段**:同样地,也可以通过`ALTER TABLE`命令来删除不再需要的字段。
```sql
ALTER TABLE 员工 DROP COLUMN sex;
```
- **修改字段类型**:如果需要改变字段的数据类型或长度,可以使用`ALTER COLUMN`命令。
```sql
ALTER TABLE 员工 ALTER COLUMN name VARCHAR(8);
```
2. **创建成绩表**
- **创建scores表**:创建一个名为`scores`的表,包含学生的学号、四门课程的成绩及平均成绩等字段。
```sql
CREATE TABLE scores (
ID CHAR(8) PRIMARY KEY NOT NULL,
C语言 NUMERIC(3,1) NOT NULL,
IT英语 NUMERIC(3,1) NOT NULL,
数据库 NUMERIC(3,1) NOT NULL,
软件基础 NUMERIC(3,1) NOT NULL,
平均成绩 AS (C语言 + IT英语 + 数据库 + 软件基础) / 4
);
```
- **设置默认值**:可以为字段设置默认值,当插入新记录时如果没有提供值,则自动使用默认值。
```sql
ALTER TABLE scores ADD CONSTRAINT C语言 DEFAULT '0' FOR C语言;
-- 同理设置其他字段的默认值
```
- **设置检查约束**:通过`CHECK`约束来限制字段的取值范围,例如成绩必须在0至100之间。
```sql
ALTER TABLE scores ADD CONSTRAINT CK1 CHECK (C语言 >= 0 AND C语言 <= 100);
-- 同理设置其他成绩字段的检查约束
```
3. **删除表与数据库**
- **删除部门表**:使用`DROP TABLE`命令删除`部门`表。
```sql
DROP TABLE 部门;
```
- **删除数据库**:使用`DROP DATABASE`命令删除整个数据库。
```sql
DROP DATABASE test;
```
通过以上操作,我们不仅学会了如何创建和维护数据库表,还掌握了如何设置各种约束以确保数据的完整性和准确性。这对于实际工作中处理复杂数据结构非常有用。此外,这些技能也是数据库管理专业人员的基本能力之一。