undefined-0's Blog

历添新岁月 春满旧山河

0%

实验三-数据库简单查询和连接查询实验

实验三 数据库简单查询和连接查询实验

1、基本操作实验

  • 本实验的主要内容如下:
    (1)简单查询操作。该实验包括投影、选择条件表达,数据排序,使用临时表等。
    (2)连接查询操作。该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。

  • 实验题目和要求:
    ​ 检查并修改学生课程库的效据,使之与表10-11至表10-13的数据一致;将下列查询要求用T-SQL语句表示;在SSMS的查询分析器中输人相应的T-SQL语句,执行并在结果区中查看内容;结果不正确时要对T-SQL语句修改,直到正确为止。

(1)简单查询实验内容

在学生课程数据库中:

  1. 求数学系学生的学号和姓名。
    image-20240511085620338

  2. 求选修了课程的学生学号。
    image-20240511085940442

  1. 求选修C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。
    image-20240511090359145

  2. 求选修课程C1且成绩在80-90之间的学生学号和成续,将成绩乘以系数0.8输出。
    image-20240511090810858

  3. 求数学系或计算机系姓张的学生的信息。
    image-20240511091027963

  4. 求缺少了成绩的学生的学号和课程号
    image-20240511091214888

(2)连接查询实验内容

在学生课程数据库中:

  1. 查询每个学生的情况以及他(她)所选修的课程。
    image-20240511091918917

  2. 求学生的学号、姓名、选修的课程名及成绩。
    image-20240511092227294

  3. 求选修C1课程且成绩为90分以上的学生学号、姓名及成绩
    image-20240511092425146

  4. 查询每一门课的间接先行课(即先行课的先行课)
    image-20240511093432729

2、选择操作实验

建立学生社团数据库和基本表,向库中输入一定的记录,并实现其数据的内连接和各种外查询操作。

1. 建立学生社团数据库和基本表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
CREATE DATABASE 学生社团数据库
GO

USE 学生社团数据库

CREATE TABLE 学生 (
学号 INT PRIMARY KEY,
姓名 VARCHAR(50),
年龄 INT,
性别 CHAR(2),
所在系 VARCHAR(50)
);

CREATE TABLE 社团 (
社团编号 INT PRIMARY KEY,
社团名 VARCHAR(50),
);

CREATE TABLE 社团成员 (
学号 INT,
社团编号 INT,
PRIMARY KEY (学号, 社团编号),
FOREIGN KEY (学号) REFERENCES 学生(学号),
FOREIGN KEY (社团编号) REFERENCES 社团(社团编号)
);

  • 命令执行结果:
    image-20240517082435923

2. 输入数据记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S1','李明',21,'男','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S2','张小红',21,'男','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S3','李和明',22,'女','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S4','张三',21,'男','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S5','刘宏',23,'男','计算机')
INSERT INTO 学生(学号,姓名,年龄,性别,所在系) VALUES('S6','张共可',21,'男','物理')
GO

INSERT INTO 社团(社团编号,社团名) VALUES('C1','计算机协会')
INSERT INTO 社团(社团编号,社团名) VALUES('C2','英语俱乐部')
INSERT INTO 社团(社团编号,社团名) VALUES('C3','书画社')
INSERT INTO 社团(社团编号,社团名) VALUES('C4','话剧社')
GO

INSERT INTO 社团成员(学号,社团编号) VALUES('S1','C1')
INSERT INTO 社团成员(学号,社团编号) VALUES('S2','C2')
INSERT INTO 社团成员(学号,社团编号) VALUES('S3','C1')
INSERT INTO 社团成员(学号,社团编号) VALUES('S5','C3')
INSERT INTO 社团成员(学号,社团编号) VALUES('S6','C4')
GO
  • 命令执行结果:
    image-20240517082623049

image-20240517082655218

image-20240517085347935

3. 查询操作

1
2
3
4
-- 查询1. 查询加入了编号为C1的社团的学生学号

SELECT 学号 FROM 社团成员
WHERE 社团编号 = 'C1'
  • 命令执行结果:
    image-20240517090458246
1
2
3
4
-- 查询2. 查询已加入社团的学生及其社团信息

SELECT 学生.姓名,社团.社团名 FROM 学生,社团,社团成员
WHERE 学生.学号 = 社团成员.学号 AND 社团.社团编号 = 社团成员.社团编号
  • 命令执行结果:

    image-20240517090408402