- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL基础应用
实验一 SQL语言基础
一、实验目的
本实训案例要求在给定样本数据库中完成规定的一系列查询任务,巩固和提高同学对基础SQL语法的掌握和运用能力,其中重点训练的是在实际应用开发中常会用到的复杂查询技术。
通过本项目实训,同学可以更加深入地理解,并熟练而灵活地运用SQL查询技术,为后续的应用软件开发打下良好基础。
二、实验要求
1、Oracle数据库服务器搭建
2、Oracle客户端工具SQL Developer的使用
3、SQL查询:基本查询、条件查询、分组查询、查询结果排序、连接查询、相关查询及子查询等
4、常用数据类型其函数的使用
三、实验内容
1.在实训开始之前,自行完成Oracle数据库服务器搭建及必要的应用配置,确保其实例及客户端工具Oracle SQL Developer处于良好可用状态。
2. 在SQL Developer中运行文件demo.sql中的SQL脚本,创建样本数据库。其中各数据表结构及其内容说明如下:
Customer - 顾客信息表
字段名称 含义 数据类型 约束条件 cid 顾客编号 VARCHAR2(10) PRIMARY KEY cname 顾客姓名 VARCHAR2(20) NOT NULL sex 性别 CHAR(2) CHECK(sex IN (男,女)) birth 出生日期 DATE Good – 商品信息表
字段名称 含义 数据类型 约束条件 gid 商品编号 NUMBER PRIMARY KEY gname 商品名称 VARCHAR2(40) NOT NULL price 单价 NUMBER(10,2) stock 库存数量 NUMBER SalesRecorder – 销售记录表
字段名称 含义 数据类型 约束条件 rid 记录编号 NUMBER PRIMARY KEY cid 顾客编号 VARCHAR2(10) FOREIGN KEY gid 商品编号 NUMBER FOREIGN KEY quantity 销售数量 NUMBER NOT NULL sale_date 日期 DATE
3. 编写SQL指令,分别实现下述操作任务并测试。
(1)查询全部商品信息,按价格升序排序
(2)查询购买过商品的顾客人数
(3)查询男顾客的总人数及其平均年龄
(4)查询曾购买过1002号商品的顾客编号
(5)查询曾购买过1001或1006号商品的顾客编号及顾客姓名
(6)查询至少曾购买过一种商品的顾客人数。
(7)查询从未曾购买过任何商品的顾客编号及顾客姓名
(8)查询每位顾客各自曾购买过几种商品
(9)查询曾购买过所有种类商品的顾客编号及顾客姓名
(10)查询女性顾客所购买的各种商品的商品编号、商品名称及其数量
(11)查询购买商品价格均高于100元顾客编号
(12)查询单次购买编号1001商品数量最多的顾客号和顾客名
(13)查询曾购买过3种(含)以上商品的顾客编号、姓名及其各自所购买的商品次数和商品总数量,并按商品总数量降序排序
(14)查询年龄在20至25岁的顾客所购买的商品名称及商品单价
(15)从good表中删除无人购买的商品,并测试验证其执行效果
(16)查询各种商品的编号、名称、销售总数量,并按照销售总数量降序排列
(17)将销售总数量排名最后两位的商品降价10%,并测试验证
四、实验结果
SQL指令如下:
--1
select *
from good
order by price;
--2
select count(distinct cid) as 人数
from salesrecorder;
--3
select count(cid) as 总人数,floor(avg(months_between(sysdate,birth)/12)) as 平均年龄
from customer
where sex = 男;
--4
select distinct cid as 顾客编号
from salesrecorder
where gid = 1002;
--5
select distinct c.cid as 顾客编号 ,c.cname as 顾客姓名
from customer c,salesrecorder s
where c.cid = s.cid and s.gid in (1001,1006);
--6
select count(distinct cid) as 顾客人数
from salesrecorder;
--7
select c.cid as 顾客编号 ,c.cname as 顾客姓名
from customer c
where c.cid not in (select distinct s.
文档评论(0)