数据库实验二:查询

一、实验目的与要求

1、掌握SQL单表及多表之间的查询
2、掌握统计及分组函数

二、实验内容

1.简单查询

① 从fruits表中检索s_id为100的供货商所供货的水果名和价格
(教师实验所给数据集中无符合条件的数据,自行插入了两条)
源码:
在这里插入图片描述
② 查找名称为“apple”的水果的价格
源码:
在这里插入图片描述
③ 查询价格在2.00元到10.20元之间的水果名称和价格,先按f_price降序排序,再按f_name排序。
源码:

在这里插入图片描述
④ 在fruits表中,查询f_name中包含字母‘g’的记录
源码:
在这里插入图片描述
⑤ 查询customers表中c_email不为空的记录的c_id、c_name和c_email字段值
源码:
在这里插入图片描述
⑥ 根据s_id对fruits表中的数据进行分组,并显示水果种类大于1的分组信息,效果如下图所示(GROUP_CONCAT函数)
在这里插入图片描述

2.多表查询

① 查询供应‘a1’的水果供应商提供的其他水果种类
源码:
在这里插入图片描述
② 在orderitems表中查询f_id为c0的订单号,并显示具有该订单号的客户c_id
源码:
在这里插入图片描述
③ 查询客户c_id为10000的所有订单的总价格
(原数据中无符合条件的数据,自行插入了两条)
源码:
在这里插入图片描述
④ 查询s_city等于“Tianjin”的供应商,并显示所有该供应商提供的水果的种类,效果如下图所示
在这里插入图片描述
⑤ 查询订单为‘30005’的所有水果供货商的名称
源码:
在这里插入图片描述
⑥ 查询销量最多的水果名称
源码:
在这里插入图片描述
⑦ 查询‘10000’号客户购买水果所花费的金额:类似
在这里插入图片描述
⑧ 显示购买了’107’号供货商所有水果的用户信息
步骤:先向数据表orders表中插入两条记录(30010,当前时间,10000)和(30008,当前时间,10004),在orderitems表中插入五条记录(30010,1,b5,10,3.6)、(30010,2,b2,5,7.6)、(30010,3,t4,7,3.6)、(30008,1,b1,10,102)、(30008,2,b5,10,3.6);然后再做题
源码:
在这里插入图片描述
运行测试结果截图:
在这里插入图片描述
在这里插入图片描述

三、思考题

结合实际应用并分析查找给定表中结构或数据是否存在问题,如何改进?
答:感觉表的数量略多,数据有些冗杂,可以考虑适当进行优化,如外键的字段编入索引而不进行全表扫描。

四、实验小结

1.实验中遇到的问题及解决过程

①查询表中含有字母“g”的数据时,没有查到有效结果。
在这里插入图片描述
解决:给需要查找的字母加一对’%’即可。
在这里插入图片描述
②最后一题收集表中数据不能加*
在这里插入图片描述

2.实验中产生的错误及原因分析

①运用多表查询时报错,代码有误
在这里插入图片描述
②计算订单总价格错误
在这里插入图片描述
原因分析:没仔细读题,直接返回了单价,应当用数量乘以单价得总价格。

③查询销量最多的水果名时,返回了多组数据
在这里插入图片描述
原因分析:应当用LIMIT限制返回数据的条数
在这里插入图片描述

3.实验体会和收获

①开始时不会做多表查询第三题中的求总价格,查资料之后学会了sum求和函数的用法。
②学会了函数group_concat用法。
③学会了统计及分组函数。

实验二的代码当时没有保存下来…只找到了截图,可能会影响观感,见谅。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
一、实验目的 1、掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言查询语句的理解。 2、熟练掌握数据查询中的分组、统计、计算与集合查询方法。 实验环境: Microsoft Windows 2000操作系统,Microsoft SQL Server 2000数据库管理系统标准版或企业版。 三、实验内容、步骤、结果和实验过程中出现的问题: 1>内容: 基于实验一建立的 “图书读者数据库”(Book_Reader_DB)和实验输入的部分虚拟数据,在SQL Server 2000查询分析器的Transact-SQL语句输入区输入Transact-SQL语句,然后点击“查询”菜单中的“执行”菜单项(或用F5快捷键),执行输入区的Transact-SQL语句。 1、集合查询实验 在“图书读者数据库”(Book_Reader_DB)中,用集合查询的方法完成下列查询任务: ① 查询计算机类和机械工业出版社出版的图书; ② 查询清华大学出版社出版的书中与机械工业出版社出版的所有不相同的图书号与书名; ③ 查询清华大学出版社出版的书与环境类图书的交集; ④ 查询借阅过清华大学出版社出版的“数据结构” 图书和西安电子工业出版社出版的“操作系统”图书的读者号的并集; 2、统计查询实验 在“图书读者数据库”(Book_Reader_DB)中,用分组、统计与计算的方法完成下列查询任务: ① 找这样的图书类别:要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的2倍; ② 求机械工业出版社出版的各类图书的平均定价,用Group by来实现; ③ 列出计算机类图书的书号、名称及价格,最后求出册数和总价格; ④ 列出计算机类图书的书号、名称及价格,并求出各出版社这类书的总价格,最后求出全部册数和总价格; ⑤ 查询订购图书最多的出版社及订购图书的数量; ⑥ 查询2000年以后购买的图书总册数; ⑦ 计算各类图书的总册数; ⑧ 查询每本图书的平均借阅次数;
实验目的: 1.了解opengauss数据库的数据类型和数据结构 2.掌握opengauss数据库的表的创建、修改和删除 3.掌握opengauss数据库的数据的插入、更新和删除 实验环境: 操作系统:CentOS 7.7 数据库版本:opengauss-2.0.0 实验步骤: 1.创建数据库 登录opengauss数据库,创建一个名为testdb的数据库。 $ gsql -d postgres -p 5432 -U gauss -W Password: psql (2.0.0) Type "help" for help. postgres=# create database testdb; CREATE DATABASE postgres=# \q 2.创建表 使用testdb数据库,创建一个名为students的表,包含学生的姓名、年龄、性别和所在城市等信息。 $ gsql -d testdb -p 5432 -U gauss -W Password: psql (2.0.0) Type "help" for help. testdb=# CREATE TABLE students ( id SERIAL PRIMARY KEY, name VARCHAR(20), age INT, gender VARCHAR(10), city VARCHAR(20) ); CREATE TABLE testdb=# \d students Table "public.students" Column | Type | Collation | Nullable | Default --------+-----------------------+-----------+----------+---------------------------------- id | integer | | not null | nextval('students_id_seq'::regclass) name | character varying(20) | | | age | integer | | | gender | character varying(10) | | | city | character varying(20) | | | Indexes: "students_pkey" PRIMARY KEY, btree (id) 3.插入数据 向students表中插入一些数据。 testdb=# INSERT INTO students (name, age, gender, city) VALUES ('张三', 20, '男', '北京'); INSERT 0 1 testdb=# INSERT INTO students (name, age, gender, city) VALUES ('李四', 22, '女', '上海'); INSERT 0 1 testdb=# INSERT INTO students (name, age, gender, city) VALUES ('王五', 18, '男', '广州'); INSERT 0 1 testdb=# INSERT INTO students (name, age, gender, city) VALUES ('赵六', 21, '女', '深圳'); INSERT 0 1 4.查询数据 查询students表中的所有数据。 testdb=# SELECT * FROM students; id | name | age | gender | city ----+------+------+--------+-------- 1 | 张三 | 20 | 男 | 北京 2 | 李四 | 22 | 女 | 上海 3 | 王五 | 18 | 男 | 广州 4 | 赵六 | 21 | 女 | 深圳 (4 rows) 5.更新数据 将students表中张三的年龄修改为25。 testdb=# UPDATE students SET age=25 WHERE name='张三'; UPDATE 1 testdb=# SELECT * FROM students WHERE name='张三'; id | name | age | gender | city ----+------+------+--------+-------- 1 | 张三 | 25 | 男 | 北京 (1 row) 6.删除数据 将students表中年龄大于等于20岁的学生记录删除。 testdb=# DELETE FROM students WHERE age>=20; DELETE 2 testdb=# SELECT * FROM students; id | name | age | gender | city ----+------+------+--------+------ 3 | 王五 | 18 | 男 | 广州 (1 row) 7.删除表 删除students表。 testdb=# DROP TABLE students; DROP TABLE testdb=# \q 实验总结: 本次实验通过创建表、插入数据、查询数据、更新数据和删除数据等操作,掌握了opengauss数据库的表的创建、修改和删除,以及数据的插入、更新和删除等基本操作。同时,也了解了opengauss数据库的数据类型和数据结构,为后续的实验打下了基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Moonee_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值