实验3 查询数据库.docx
- 文档编号:4692530
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:12
- 大小:373.40KB
实验3 查询数据库.docx
《实验3 查询数据库.docx》由会员分享,可在线阅读,更多相关《实验3 查询数据库.docx(12页珍藏版)》请在冰豆网上搜索。
实验3查询数据库
南昌大学实验报告
学生姓名:
华国平学号:
6100411092专业班级:
计算机科学与技术112班
实验类型:
□验证□综合□设计□创新实验日期:
2013.11.5实验成绩:
实验三查询数据库
一、实验目的
(1)掌握基本的SELECT查询及其相关子句的使用。
(2)掌握复杂的SELECT查询,如多表查询、子查询、连接和嵌套查询。
二、实验内容
(1)从customer表中查询所有客户的姓名和电话。
(2)查询库存量大于1000的商品,结果按库存量从大到小排序。
(3)查询每个客户的订单金额的总和。
(4)查询2005年上半年(1月1日到6月30日)订货总数大于5000的商品。
(5)查询所有北京客户的订单信息,包括订单的序号、客户的姓名、商品名、数量。
(6)查询所有商品在什么时间卖出了多少。
(7)查询没有订单的商品信息。
(8)查询每种商品的销售总数量和总金额。
三、实验环境
(1)个人计算机或局域网。
(2)Windows2000操作系统。
(3)SQLServer2000数据库管理系统。
四、实验步骤
(1)启动查询分析器,选择market数据库。
(2)在查询编辑窗口中分别输入SQL语句并执行。
五、实验报告
5.1使用查询分析器查询数据
使用查询分析器查询数据的操作步骤如下:
(1)打开查询分析器。
执行“开始”︱“程序”︱“MicrosoftSQLServer”︱“查询分析器”命令,即可启动查询分析器。
如果是在企业管理器界面下,执行菜单中的“工具”︱“查询分析器”命令,也可启动查询分析器。
在启动查询分析器后,会出现如图所示的“连接到SQLServer”对话框。
如果使用Windows身份验证,可单击“Windows身份验证”单选按钮,然后单击“确定”按钮,即可使用Windows的当前用户账户连接到SQLServer服务器。
如果选中“SQLServer身份验证”单选项,则需要输入登录名和密码。
然后单击“确定”按钮,即使用SQLServer账户连接到SQLServer服务器。
连接到SQLServer服务器后,单击“新建查询”按钮,查询分析器中将显示对象浏览器窗口和查询窗口,如图所示。
(2)选择数据库market。
选择数据库market为当前数据库。
(3)输入SQL语句。
在如图所示的查询分析器编辑窗口中输入查询全部顾客信息的SQL语句:
SELECT*FROMcustomer
(4)执行SQL语句。
输入完成后按下F5键,或单击工具栏中的运行按钮,即执行刚才输入的语句,运行结果如图所示。
5.2简单查询
简单查询的SQL语句是包括单个表的查询操作。
在此,SQL语句中包括单个表的列及列表达式、条件〈WHERE子句〉、排序〈ORDERBY子句〉、分组〈GROUPBY子句〉及它们的组合。
5.2.1从customer表中查询所有客户的姓名和电话
分析:
这里是对数据库market中customer客户表的客户名customername和电话号码tel进行选择查询。
SQL语句:
SELECTcustomername,tel
FROMcustomer
执行SQL语句。
输入完成后按下F5键,或单击工具栏中的运行按钮,即执行刚才输入的语句,运行结果如图所示。
5.2.2查询库存量大于1000的商品,结果按库存量从大到小排序
分析:
这里是对数据库market中goods商品信息表中库存量大于1000的商品进行全部查询,并将结果按库存量从大到小排序。
SQL语句:
--先插入一组数据
insert
intogoods(goodsid,goodsname,supplierid,storage)
values('100','小米手机','200','1001')
--查询库存量大于1000的商品,结果按库存量从大到小排序
select*
fromgoods
wherestorage>1000
orderbystoragedesc;
执行SQL语句。
输入完成后按下F5键,或单击工具栏中的运行按钮,即执行刚才输入的语句,运行结果如图所示。
5.2.3查询每个客户的订单金额的总和
分析:
这里是对数据库market中order订单信息表中客户编号customerid进行归类,并计算出每个客户的订单金额ordersum的总和。
SQL语句:
--先插入几组数据,方便显示查询效果
insert
into"order"(orderid,customerid,goodsid,ordersum)
values('100','101','102','200')
insert
into"order"(orderid,customerid,goodsid,ordersum)
values('101','101','103','300')
insert
into"order"(orderid,customerid,goodsid,ordersum)
values('102','102','104','400')
--查询每个客户的订单金额的总和
selectcustomerid,SUM(ordersum)
from"order"
groupbycustomerid;
执行SQL语句。
输入完成后按下F5键,或单击工具栏中的运行按钮,即执行刚才输入的语句,运行结果如图所示。
5.2.4查询2005年上半年(1月1日到6月30日)订货总数大于5000的商品
分析:
这里是对数据库market中order订单信息表中订货日期orderdata在2005年上半年(1月1日到6月30日)且订货总数quantity大于5000的商品进行全部查询。
SQL语句:
--先插入几组数据,方便显示查询效果
insert
into"order"(orderid,customerid,goodsid,quantity,orderdata)
values('200','300','400','6000','2005-2-1')
insert
into"order"(orderid,customerid,goodsid,quantity,orderdata)
values('201','301','401','6000','2005-2-2')
insert
into"order"(orderid,customerid,goodsid,quantity,orderdata)
values('202','302','402','4000','2006-2-1')
--查询年上半年(月日到月日)订货总数大于的商品
selectgoodsid
from"order"
where(quantity>5000)and(orderdatabetween'2005-1-1'and'2005-6-30');
执行SQL语句。
输入完成后按下F5键,或单击工具栏中的运行按钮,即执行刚才输入的语句,运行结果如图所示。
5.3连接查询
在SQL中多个表的连接查询,它们可能在显示列中包含不同表中的列名,查询条件表达式中含有多个表中列进行关系比较运算及逻辑运算,从而可以实现更为广泛的查询要求。
在进行连接查询时,有时会出现以下几种情况:
(1)需要使用表的别名,即用户在一个语句内部,可以为表指定别名,可增加语句的可读性并有利于复杂的表连接操作;
(2)从多个表中合并数据,如内连接、外连接及交叉连接;
(3)合并多个结果集,描述如何用UNION操作符合并多个结果集。
5.3.1查询所有北京客户的订单信息,包括订单的序号、客户的姓名、商品名、数量
分析:
这里是对数据库market中customer客户表中地址为北京的客户在customer客户表、goods商品信息表和order订单信息表中查询他的订单信息,包括订单的序号orderid、客户的姓名customername、商品名goodsname、数量quantity。
SQL语句:
--先插入几组数据,方便显示查询效果
insert
intocustomer(customerid,customername,address)
values('101','张三','北京')
insert
intogoods(goodsid,goodsname,supplierid)
values('101','三星','100')
insert"order"(orderid,customerid,goodsid,quantity)
values('300','101','101','5000')
--查询所有北京客户的订单信息,包括订单的序号、客户的姓名、商品名、数量
selectorderid,customername,goodsname,quantity
fromcustomer,goods,"order"
wherecustomer.customerid="order".customeridand
goods.goodsid="order".goodsidand
address='北京';
执行SQL语句。
输入完成后按下F5键,或单击工具栏中的运行按钮,即执行刚才输入的语句,运行结果如图所示。
5.3.2查询所有商品在什么时间卖出了多少
分析:
这里是对数据库market中goods商品信息表和order订单信息表中查询所有商品(商品名称goodsname)在什么时间(订货日期orderdata)卖出了多少(订单数量quantity)。
SQL语句:
--先插入几组数据,方便显示查询效果
insert
intogoods(goodsid,goodsname,supplierid)
values('102','红米手机','300')
insert
into"order"(orderid,customerid,goodsid,quantity,orderdata)
values('103','103','102','3000','2013-11-5')
--查询所有商品在什么时间卖出了多少
selectgoodsname,orderdata,quantity
fromgoods,"order"
wheregoods.goodsid="order".goodsid;
执行SQL语句。
输入完成后按下F5键,或单击工具栏中的运行按钮,即执行刚才输入的语句,运行结果如图所示。
5.4嵌套查询
嵌套查询是多表查询的一种常见的形式,它是将某个或某些表(或视图)的查询结果作为条件,对另一个表(或视图)进行查询。
后者称为主查询,其他的都称为子查询,每个查询(包括主查询与子查询)又称为一个查询块。
在嵌套查询中,子查询可看做派生的表,它可以作为一个条件表达式或条件表达式的一部分。
查询块是嵌套在另一个查询块的WHERE子句或HAVING子句中。
注意:
子查询的SELECT语句中不能使用ORDERBY子句。
5.4.1查询没有订单的商品信息
分析:
这里是对数据库market中goods商品信息表查询所有在订单信息表order中没有订单信息的。
SQL语句:
--查询没有订单的商品信息
select*
fromgoods
wheregoodsidNOTIN
(selectgoodsid
from"order");
执行SQL语句。
输入完成后按下F5键,或单击工具栏中的运行按钮,即执行刚才输入的语句,运行结果如图所示。
5.4.2查询每种商品的销售总数量和总金额。
分析:
这里是对数据库market中goods商品信息表和order订单信息表查询每种商品的销售总数量和总金额。
SQL语句:
--查询每种商品的销售总数量和总金额
selectgoodsname,SUM(quantity),SUM(ordersum)
fromgoods,"order"
GROUPBYgoodsname;
执行SQL语句。
输入完成后按下F5键,或单击工具栏中的运行按钮,即执行刚才输入的语句,运行结果如图所示。
六、实验体会或对改进实验的建议
通过该实验使得我学会了数据库查询的一些基本操作,包括单表查询、连接查询和嵌套查询,并学会了ORDERBY子句和GROUPBY子句的使用。
而且本实验使得我对与数据库查询有了更深层次的理解,为以后的学习打下了坚实的基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验3 查询数据库 实验 查询 数据库