上传者: a_ashui
|
上传时间: 2025-10-12 20:47:21
|
文件大小: 1009KB
|
文件类型: DOCX
根据给定的文件信息,我们可以总结出以下关键知识点:
### 1. 数据库实验课程背景
- **课程名称**:数据库原理实验
- **学年学期**:2021-2022 学年第 2 学期
- **授课教师**:陶宏才
- **辅导教师**:未提及
- **学生信息**:学号、姓名、班级(软件 2020-02 班)
### 2. 实验报告评分标准
实验报告的评分主要依据以下指标:
- **实验完成的独立性**:考察学生是否能够独立完成实验任务。
- **实验过程的正确性与完整性**:评估实验步骤是否正确以及实验内容是否完整。
- **实验实现代码的新颖性**:评价实验中使用的代码是否有创新之处。
- **实验结果分析的合理性**:考查学生对实验结果的解释是否合理。
- **实验报告的规范及完整性**:评估报告格式是否符合要求,内容是否完整。
- **实验挑战性**:考虑实验难度及挑战性。
- **实验报告总分**:以上各项综合评定后的最终分数。
### 3. 实验内容概述
#### 实验组 1:表及约束的创建
- **实验目的**:本实验的主要目的是让学生掌握如何在数据库中创建数据表,并设置列属性以及完整性约束。
- **实验内容**:实验包含了多个子任务,包括创建数据表、添加和删除列等。
### 4. 实验代码示例
#### 4.1 创建 `person` 表
```sql
CREATE TABLE person2234 -- 创建 person 表
(
P_no char(6) PRIMARY KEY, -- 主键,长度为 6 的字符类型
P_name varchar(10) NOT NULL, -- 非空字段,长度为 10 的变长字符类型
Sex char(2) NOT NULL, -- 性别,长度为 2 的字符类型
Birthdate datetime NULL, -- 出生日期,允许为空
Date_hired datetime NOT NULL, -- 入职日期,非空
Deptname varchar(10) NOT NULL DEFAULT '培训部', -- 部门名称,默认值为“培训部”
P_boss char(6) NULL, -- 上级主管编号,允许为空
CONSTRAINT birth_hire_check -- 约束条件,出生日期必须早于入职日期
CHECK (Birthdate < Date_hired)
);
```
#### 4.2 创建 `salary` 表
```sql
CREATE TABLE salary2234 -- 创建 salary 表
(
P_no char(6) PRIMARY KEY, -- 主键,外键关联 person2234 的 P_no 字段
Base Dec(8,2) NOT NULL, -- 基本工资,数值类型
Bonus Dec(7,2) NULL, -- 奖金,数值类型,允许为空
FOREIGN KEY (P_no) -- 外键约束
REFERENCES person2234 (P_no) -- 关联 person2234 表的 P_no 字段
ON DELETE NO ACTION -- 删除操作不采取任何动作
ON UPDATE CASCADE -- 更新操作时级联更新
);
alter table salary2234 add Fact Dec; -- 添加 Fact 列
update salary2234 set Fact = Base+Bonus; -- 更新 Fact 列的值为 Base 和 Bonus 的和
```
#### 4.3 创建 `customer` 表
```sql
CREATE TABLE customer2234 -- 创建 customer 表
(
Cust_no char(6) PRIMARY KEY, -- 主键,长度为 6 的字符类型
Cust_name Varchar(10) NOT NULL, -- 客户名称,长度为 10 的变长字符类型
Sex char(2) NOT NULL, -- 性别,长度为 2 的字符类型
BirthDate datetime NULL, -- 出生日期,允许为空
City varchar(10) NULL, -- 城市,长度为 10 的变长字符类型,允许为空
Discount Dec(4,2) NOT NULL DEFAULT 1.00, -- 折扣率,默认值为 1.00
CONSTRAINT discount_check -- 约束条件,折扣率必须在 0.50 到 1.00 之间
CHECK (Discount BETWEEN 0.50 AND 1.00)
);
```
#### 4.4 创建 `orderdetail` 表
```sql
CREATE TABLE orderdetail2234 -- 创建 orderdetail 表
(
Order_no char(6) PRIMARY KEY -- 主键,长度为 6 的字符类型
CONSTRAINT Order_no_constraint -- 约束条件,Order_no 必须以两个大写字母加四个数字组成
CHECK(Order_no LIKE '[A-Z][A-Z][0-9][0-9][0-9][0-9]'),
Cust_no char(6) NOT NULL, -- 客户编号
P_no char(6) NOT NULL, -- 产品编号
Order_total int NOT NULL, -- 订单总额
Order_date datetime NOT NULL -- 下单日期
);
```
### 5. 结论与讨论
通过本次实验,学生不仅掌握了如何在数据库中创建数据表的基本技能,还学会了如何设置不同的列属性和完整性约束。此外,通过实际操作,学生能够更好地理解理论知识,并将之应用于实践中。这种实践性的学习方式有助于提高学生的实际操作能力和解决问题的能力。