学号+姓名+XX专业+AB班+实验报告4+简单检索数据 3.docx
《学号+姓名+XX专业+AB班+实验报告4+简单检索数据 3.docx》由会员分享,可在线阅读,更多相关《学号+姓名+XX专业+AB班+实验报告4+简单检索数据 3.docx(10页珍藏版)》请在冰豆网上搜索。
![学号+姓名+XX专业+AB班+实验报告4+简单检索数据 3.docx](https://file1.bdocx.com/fileroot1/2023-5/17/a4be4c0e-6d0c-42dc-9def-1d40c779004b/a4be4c0e-6d0c-42dc-9def-1d40c779004b1.gif)
学号+姓名+XX专业+AB班+实验报告4+简单检索数据3
实验报告
(2018-2019学年第二学期)
课程名称:
数据库系统理论与实践
学系:
信息科学学院
专业:
计算机科学与技术
学生姓名:
学号:
班级:
A/B组
测验报告
实训名称
第XX次实验(第XX周星期XX)
指导教师
王辰尹
知识点:
一十一、使用数据处理函数;
一十二、汇总数据;
一十三、分组数据
实验步骤
数据准备:
●执行SQL文件,创建表,导入数据(先创建或者调用数据库,然后执行create.sql文件创建表的结构,然后执行populate.sql向表中插入数据;)
语法:
source文件路径;
表一:
产品表,结构如下:
products(prod_id,vend_id,prod_name,prod_price,prod_desc)。
其中:
prod_id代表产品ID
vend_id代表产品供应商ID,
prod_name代表产品名称,
prod_price代表产品价格,
prod_desc代表产品描述。
具体数据如下:
表二:
供应商表,结构如下:
vendors(vend_id,vend_name,vend_address,vend_city,vend_state,vend_zip,vend_country);
其中vend_id代表供应商ID,
vend_name,代表供应商名称,
vend_address代表供应商地址,
vend_city代表供应商的城市,
vend_state代表供应商的州,
vend_zip代表供应商的邮政编码,
vend_country代表供应商的国家。
具体数据如下:
表三:
订单表,结构如下:
orderitems(order_num,order_item,prod_id,quantity,item_price);其中:
order_num代表订单号,
order_item代表订单物品号,
prod_id代表产品ID,
quantity代表物品数量,
item_price代表物品价格;
具体数据如下:
表四顾客表,结构如下:
customers(cust_id,cust_name,cust_address,cust_city,cust_state,cust_zip,cust_country,cust_contact,cust_email);其中:
cust_id代表顾客的ID,
ust_name代表顾客名,
cust_address代表顾客的地址,
cust_city代表顾客的城市,
cust_state代表顾客的州,
cust_zip代表顾客的邮政编码,
cust_country代表顾客的国家,
cust_contact代表顾客的联系名,
cust_email代表顾客的联系email地址;
具体数据如下:
●第11章使用数据处理函数
11.1函数
注意:
函数没有SQL的可移植性强;
11.2使用函数
Ø用于处理文本串的文本函数;
Ø用于在数值数据上进行算术操作的数值函数;
Ø用于处理日期和时间值并从这些值中提取特定成分的日期和时间函数;
Ø返回DBMS正使用的特殊信息的系统函数;
11.2.1文本处理函数
例子:
查询供应商的名称,以大写形式输出,并按供应商名称排序;
11.2.1日期和时间处理函数
注意:
应该总是用4位数的年份,日期格式为yyyy-mm-dd;
例:
检索订单日期为’2005-09-01’的订单号和客户id;
例:
检索订单日期为2005年9月的订单号和客户id;
11.2.3数值处理函数
●第12章汇总数据
12.1聚集函数
Ø确定表中行数(或者满足某个条件或包含某个特定值的行数);
Ø获得表中行组的和;
Ø找出表列(或所有行或某些特定的行)的最大值、最小值和平均值。
注意:
聚集函数括号里一般为1个列名,或者一个计算表达式;
12.1.1AVG()函数
例:
查询products表中所有产品的平均价格;
例:
查询products表中由供应商1003所提供的所有产品的平均价格;
12.1.2COUNT()函数
●使用COUNT(*)对表中行的数目进行计数,不管列中包含的是空值(NULL)还是非空值;1
●使用COUNT(COLUMN)对特定列中具有值的行进行计数,忽略NULL值;
例子:
查询customers表中客户的总数;
例子:
查询customers表中有电子邮件地址客户的总数;
12.1.3MAX()函数
例子:
查询products表中产品的最高价格;
12.1.4MIN()函数
例子:
查询products表中产品的最低价格;
12.1.5SUM()函数
例子:
查询orderitems表中订单号为20005所订购物品的总数;
例子:
查询orderitems表中订单号为20005所订购物品的总数;
12.2聚集不同值
注意:
使用聚集函数时使用DISTINCT时结果不一样;若添加DISTINCT在列名前则表示取消重复行再进行计算;
12.3组合聚集函数
例子:
在products表中查询产品的总数量,平均价格,最高价格,最低价格;
●第13章分组数据
13.1数据分组
例:
查询供应商1003提供的产品数目;
13.2创建分组
语法:
GROUPBY
例:
查询每个供应商及其供应的产品数目;
13.3过滤分组
语法:
GROUPBY
HAVINGCOUNT(*)操作符数值;
例子:
在orders表中查询有两条及以上订单记录的客户id和其对应的订单数量;
例子:
在products表中查询供应2个(含)以上、价格为10(含)以上的产品的供应商;
例子:
在products表中查询供应2个(含)以上产品的供应商;
13.4分组和排序
查询:
在orderitems中查询总计订单价格大于等于50的订单的订单号和总计订单价格;
查询:
在orderitems中查询总计订单价格大于等于50的订单的订单号和总计订单价格,并按订单价格升序输出;
13.5SELECT子句顺序
加分练习题:
1、在products表中查询价格最高的产品;
2、在orderitems表中查询所有订单的平均价格,最高价格,最带价格,以及订单数量;
3、在venodrs表中返回每个供应商名称的前3个字符;
4、在venodrs表中返回每个供应商名称的长度;
5、在orders表中查询在2005年10月下的所有订单;
6、在orders表中查询在2005年10月下的订单的数量,有多少个?
;
7、在orders表中查询分别在2005年9月和2005年10月的订单数量;
8、在products表中查询每个供应商及其供应的产品的平均价格;
9、在products表中查询供应商供应产品的平均价格大于等于10的供应商及平均价格,并按平均价格的降序排列;
10、在products表中查询产品编号以ANV开头的产品编号及名称;