数据库课程实践题目
经典的几张表,老师上课会用的例子里面都有,很适合学生复习考试。。 --1.学生表 Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(C#,Cname,T#) --C# --课程编号,Cname 课程名称,T# 教师编号 --3.教师表 Teacher(T#,Tname) --T# 教师编号,Tname 教师姓名 --4.成绩表 SC(S#,C#,score) --S# 学生编号,C# 课程编号,score 分数 */ 根据给定的文件信息,我们可以总结出以下几个关键的知识点: ### 1. 数据库表结构设计 #### 1.1 学生表 (Student) - **S#**:学生编号,作为主键,唯一标识一个学生。 - **Sname**:学生姓名,字符串类型。 - **Sage**:出生年月,日期类型。 - **Ssex**:学生性别,字符串类型。 #### 1.2 课程表 (Course) - **C#**:课程编号,作为主键,唯一标识一门课程。 - **Cname**:课程名称,字符串类型。 - **T#**:教师编号,外键,关联到教师表的教师编号。 #### 1.3 教师表 (Teacher) - **T#**:教师编号,作为主键,唯一标识一位教师。 - **Tname**:教师姓名,字符串类型。 #### 1.4 成绩表 (SC) - **S#**:学生编号,外键,关联到学生表的学生编号。 - **C#**:课程编号,外键,关联到课程表的课程编号。 - **score**:分数,数值类型。 ### 2. SQL 语句示例 #### 2.1 创建表 - **创建学生表**: ```sql CREATE TABLE Student ( S# VARCHAR(10), Sname NVARCHAR(10), Sage DATETIME, Ssex NVARCHAR(10) ); ``` - **创建课程表**: ```sql CREATE TABLE Course ( C# VARCHAR(10), Cname NVARCHAR(10), T# VARCHAR(10) ); ``` - **创建教师表**: ```sql CREATE TABLE Teacher ( T# VARCHAR(10), Tname NVARCHAR(10) ); ``` - **创建成绩表**: ```sql CREATE TABLE SC ( S# VARCHAR(10), C# VARCHAR(10), score DECIMAL(18, 1) ); ``` #### 2.2 插入数据 - **插入学生数据**: ```sql INSERT INTO Student (S#, Sname, Sage, Ssex) VALUES ('01', N'', '1990-01-01', N''), ('02', N'Ǯ', '1990-12-21', N''), ('03', N'', '1990-05-20', N''), ('04', N'', '1990-08-06', N''), ('05', N'÷', '1991-12-01', N'Ů'), ('06', N'', '1992-03-01', N'Ů'), ('07', N'֣', '1989-07-01', N'Ů'), ('08', N'', '1990-01-20', N'Ů'); ``` - **插入课程数据**: ```sql INSERT INTO Course (C#, Cname, T#) VALUES ('01', N'', '02'), ('02', N'學', '01'), ('03', N'Ӣ', '03'); ``` - **插入教师数据**: ```sql INSERT INTO Teacher (T#, Tname) VALUES ('01', N''), ('02', N''), ('03', N''); ``` - **插入成绩数据**: ```sql INSERT INTO SC (S#, C#, score) VALUES ('01', '01', 80), ('01', '02', 90), ('01', '03', 99), ('02', '01', 70), ('02', '02', 60), ('02', '03', 80), ... ``` ### 3. 查询示例 #### 3.1 查找同时选修“01”课程和“02”课程且“01”课程成绩高于“02”课程成绩的学生信息 ```sql SELECT a.*, b.score AS [课程'01'成绩], c.score AS [课程'02'成绩] FROM Student a JOIN SC b ON a.S# = b.S# AND b.C# = '01' JOIN SC c ON a.S# = c.S# AND c.C# = '02' WHERE b.score > c.score; ``` #### 3.2 查找同时选修“01”课程和“02”课程的所有学生信息,并显示“01”课程成绩与“02”课程成绩(如果某门课程未选,则显示为NULL) ```sql SELECT a.*, b.score AS [课程"01"成绩], c.score AS [课程"02"成绩] FROM Student a LEFT JOIN SC b ON a.S# = b.S# AND b.C# = '01' LEFT JOIN SC c ON a.S# = c.S# AND c.C# = '02'; ``` 通过以上示例,我们可以看到如何定义基本的数据库表结构、如何插入数据以及如何进行简单的SQL查询操作。这些基础的操作对于理解和掌握数据库管理系统的使用至关重要。在实际应用中,还可以进一步探索更复杂的查询操作、视图的创建、存储过程的编写等高级功能。
- 粉丝: 11
- 资源: 19
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助