### 数据库定义与操作语言知识点解析
#### 一、实验目的
本次实验旨在帮助学生理解和掌握关系型数据库的标准SQL语言。SQL(Structured Query Language),即结构化查询语言,是用于管理关系型数据库的标准语言,其功能包括数据定义、数据操纵、数据控制等方面。
#### 二、实验环境
本次实验使用的环境为:
- 数据库管理系统:SQL Server
- 操作系统:Windows XP
#### 三、实验内容
实验主要包括以下几个部分:
##### 1. 创建数据库
实验的第一步是创建一个名为“学生_课程”的数据库。创建数据库的基本语法如下:
```sql
CREATE DATABASE 数据库名
ON PRIMARY
(
NAME = '数据库文件名',
FILENAME = '数据库文件路径',
SIZE = 初始大小(MB),
MAXSIZE = 最大大小(MB),
FILEGROWTH = 增长量(MB或百分比)
)
LOG ON
(
NAME = '日志文件名',
FILENAME = '日志文件路径',
SIZE = 初始大小(MB),
FILEGROWTH = 增长量(MB)
);
```
其中,“学生_课程”数据库的创建语句如下:
```sql
CREATE DATABASE 学生_课程
ON PRIMARY
(
NAME = '学生_课程_data',
FILENAME = 'D:\学生_课程_data.mdf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 15%
)
LOG ON
(
NAME = '学生_课程_log',
FILENAME = 'D:\学生_课程_log.ldf',
SIZE = 2MB,
FILEGROWTH = 1MB
);
```
##### 2. 创建表
接下来,需要创建三个表:`Student`(学生表)、`Course`(课程表)以及`SC`(选课表)。这些表的具体定义如下:
- **学生表(Student)**:包含学生的信息,如学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)和所在部门(Sdept)。
```sql
CREATE TABLE Student
(
Sno INT PRIMARY KEY NOT NULL,
Sname VARCHAR(10) NOT NULL,
Ssex VARCHAR(2) NOT NULL CHECK (Ssex IN ('男', '女')),
Sage INT,
Sdept VARCHAR(50)
);
```
- **课程表(Course)**:记录课程的信息,包括课程号(Cno)、课程名(Cname)、先修课程号(Cpno)和学分(Ccredit)。
```sql
CREATE TABLE Course
(
Cno INT PRIMARY KEY NOT NULL,
Cname VARCHAR(50) NOT NULL,
Cpno INT,
Ccredit INT
);
```
- **选课表(SC)**:关联学生和课程,记录学生的选课情况,包括学生的学号(Sno)、课程号(Cno)以及成绩(Grade)。
```sql
CREATE TABLE SC
(
Sno INT NOT NULL FOREIGN KEY REFERENCES Student(Sno),
Cno INT NOT NULL FOREIGN KEY REFERENCES Course(Cno),
Grade DECIMAL(4, 1)
);
```
##### 3. 插入数据
在创建好上述表之后,需要向这些表中插入具体的数据。例如,向学生表(Student)中插入数据:
```sql
INSERT INTO Student (Sno, Sname, Ssex, Sage, Sdept)
VALUES (95001, '李勇', '男', 20, 'CS');
```
类似地,还可以向其他表中插入数据。
##### 4. 数据查询
完成数据的创建和插入后,可以通过SQL查询语句来检索和分析这些数据。例如,查询所有学生的姓名和年龄:
```sql
SELECT Sname, Sage FROM Student;
```
通过本实验,学生可以深入理解SQL语言的基础语法,并掌握如何使用SQL进行数据库的操作,包括创建数据库、定义表结构、插入数据等基本技能,为进一步学习数据库管理和开发打下坚实的基础。