数据库实验五-复杂查询

实验五-复杂查询
1) 查询每个学生及其选课情况;
在这里插入图片描述

(2)将STUDENT,SC进行右连接
在这里插入图片描述

(3)查询有不及格的学生姓名和所在系
在这里插入图片描述

(4)查询所有成绩为优秀(大于90分)的学生姓名
在这里插入图片描述

(5)查询既选修了2号课程又选修了3号课程的学生姓名、学号;
在这里插入图片描述

(6)查询和刘晨同一年龄的学生
在这里插入图片描述

(7)选修了课程名为“数据库”的学生姓名和年龄
在这里插入图片描述

(8)查询其他系比IS系任一学生年龄小的学生名单
在这里插入图片描述

(9)查询其他系中比IS系所有学生年龄都小的学生名单
在这里插入图片描述

(10)查询选修了全部课程的学生姓名
在这里插入图片描述

(11)查询计算机系学生及其性别是男的学生
在这里插入图片描述

(12)查询选修课程1的学生集合和选修2号课程学生集合的并集
在这里插入图片描述

(13)查询李丽同学不学的课程的课程号
在这里插入图片描述

(14)查询选修了3号课程的学生平均年龄
在这里插入图片描述

(15)求每门课程学生的平均成绩
在这里插入图片描述

(16)统计每门课程的学生选修人数(超过3人的才统计)。要求输出课程号和选修人数,如果按人数降序排列,若人数相同,按课程号升序排列
在这里插入图片描述

(17)查询学号比刘晨大,而年龄比他小的学生姓名。
在这里插入图片描述

(18)求年龄大于女同学平均年龄的男同学姓名和年龄
在这里插入图片描述

(19)求年龄大于所有女同学年龄的男同学姓名和年龄
在这里插入图片描述

(20)查询至少选修了08002选修的全部课程的学生号码
在这里插入图片描述

(21)查询08001和08002两个学生都选修的课程的信息

在这里插入图片描述

### TPC-H基准测试的数据库实验配置与执行指导 TPC-H基准测试是一套用于评估数据库分析型查询能力的标准测试工具,其包含8张数据表和22条复杂的SQL查询[^1]。以下将详细介绍如何进行TPC-H基准测试,包括工具安装、数据生成以及查询执行的具体步骤。 #### 工具安装 对于PostgreSQL用户,可以使用专门设计的TPC-H基准测试工具(tvondra/pg_tpch)[^2]。该工具提供了脚本以方便填充数据并评估数据库性能表现。以下是安装步骤: 1. 确保已安装PostgreSQL数据库环境,并具备必要的权限。 2. 通过Git克隆tvondra/pg_tpch项目代码: ```bash git clone https://github.com/tvondra/pg_tpch.git ``` 3. 安装依赖项(如需),并根据官方文档完成初始化设置。 #### 数据生成 TPC-H测试基于一套模拟销售系统的数据仓库模型[^3],数据量可从1GB扩展至3TB。以下是数据生成的具体方法: 1. 使用`dbgen`工具生成测试数据。`dbgen`是TPC-H提供的标准数据生成器,可以通过以下命令下载并编译: ```bash wget http://www.tpc.org/tpc_documents_current_versions/pdf/tpc-h_current.pdf tar -xvf tpc-h_tool.tar.gz cd tpch-tools/dbgen make ``` 2. 设置数据规模参数(例如1GB)并通过以下命令生成数据: ```bash ./dbgen -s 1 ``` 其中`-s`参数指定数据规模,单位为GB。 3. 将生成的数据导入PostgreSQL数据库。可以利用`pg_tpch`工具中的脚本自动完成数据加载过程: ```bash psql -d your_database -f load.sql ``` #### 查询执行 TPC-H基准测试包含22个复杂查询,主要用于评估数据库在决策支持场景下的性能表现[^1]。以下是查询执行的步骤: 1. 配置查询执行环境,确保数据库连接参数正确无误。 2. 使用`pgbench`或其他自动化工具运行预定义的SQL查询集。例如,运行所有查询的脚本如下: ```bash ./run_queries.sh ``` 3. 记录每个查询的响应时间作为主要评价指标[^3],并分析查询性能瓶颈。 ```python import psycopg2 # 连接PostgreSQL数据库 conn = psycopg2.connect( dbname="your_database", user="your_user", password="your_password", host="localhost", port="5432" ) # 执行示例查询 cur = conn.cursor() query = "SELECT * FROM lineitem WHERE l_shipdate <= '1998-12-01';" cur.execute(query) results = cur.fetchall() # 关闭连接 cur.close() conn.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请你吃茶去

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值