(仓库管理)数据库查询语句练习_习题_结果(单世民)仓库_习题
2023 SQL 数据库查询练习题及答案

2023 SQL 数据库查询练习题及答案数据库查询是数据管理和处理的重要环节,熟练的SQL查询技巧对于数据库工程师和数据分析师来说至关重要。
为了提升大家的SQL 查询能力,以下是一些2023年的SQL数据库查询练习题及答案,希望能够对大家的学习和实践有所帮助。
练习题1:学生成绩表考虑一个学生成绩表(Students)和课程信息表(Courses),请使用SQL查询语句完成以下操作。
1. 查询所有学生的姓名和学号;2. 查询所有参加了"C3"课程的学生的姓名和学号;3. 查询所有选择了至少两门课程的学生的姓名和学号;答案1:SELECT 学号, 姓名FROM 学生成绩表;答案2:SELECT 学生成绩表.学号, 学生成绩表.姓名FROM 学生成绩表, 课程信息表WHERE 学生成绩表.课程编号 = 课程信息表.课程编号AND 课程信息表.课程名称 = "C3";答案3:SELECT 学号, 姓名FROM 学生成绩表GROUP BY 学号, 姓名HAVING COUNT(*) >= 2;练习题2:库存管理考虑一个库存管理系统的数据库,包含了商品表(Products)、仓库表(Warehouses)和库存表(Inventory)。
请使用SQL查询语句完成以下操作。
1. 查询商品表中单价不低于100元的商品的名称和单价;2. 查询所有位于“北京”仓库中的商品的名称和库存量;3. 查询库存量最多的商品的名称和库存量;答案1:SELECT 名称, 单价FROM 商品表WHERE 单价 >= 100;答案2:SELECT 商品表.名称, 库存表.库存量FROM 商品表, 仓库表, 库存表WHERE 商品表.商品ID = 库存表.商品IDAND 仓库表.仓库ID = 库存表.仓库IDAND 仓库表.所在地 = "北京";答案3:SELECT 商品表.名称, 库存表.库存量FROM 商品表, 库存表WHERE 商品表.商品ID = 库存表.商品IDORDER BY 库存表.库存量 DESCLIMIT 1;练习题3:订单管理考虑一个订单管理系统的数据库,包含了客户表(Customers)、订单表(Orders)和订单详情表(OrderDetails)。
仓库管理查询答案

1.以图5-1的数据库为例,用SQL完成以下检索:1)检索在北京的供应商的名称。
SELECT * FROM 供应商WHERE 地址=’北京’2)检索发给供应商S6的订购单号。
SELECT 订购单号FROM 订购单WHERE 供应商号=’S6’3)检索出职工E6发给供应商S6的订购单信息。
SELECT * FROM 订购单WHERE 供应商号=’S6’ AND 职工号=’E6’4)检索出向供应商S3发过订购单的职工的职工号和仓库号。
SELECT 职工号,仓库号FROM 职工WHERE 职工号IN( SELECT 职工号FROM 订购单WHERE 供应商号=’S3’ )5)检索出目前与S3供应商没有联系的职工信息。
SELECT * FROM 职工WHERE 职工号NOT IN( SELECT 职工号FROM 订购单WHERE 供应商号=’S3’ )6)检索出目前没有任何订购单的供应商信息。
SELECT * FROM 供应商WHERE NOT EXISTS( SELECT * FROM 订购单WHERE 供应商号=供应商.供应商号)7)检索出和职工E1、E3都有联系的北京的供应商信息。
SELECT * FROM 供应商WHERE 地址=‘北京’and供应商号IN ( SELECT 供应商号FROM 订购单WHERE 职工号=’E1’ )AND 供应商号IN( SELECT 供应商号FROM 订购单WHERE 职工号=’E3’ )8)检索出目前和华通电子公司有业务联系的每个职工的工资。
SELECT 职工号,工资FROM 职工WHERE 职工号IN(SELECT 职工号FROM 订购单WHERE 供应商号IN(SELECT 供应商号FROM 供应商WHERE 供应商名=’华通电子公司’))9)检索出与工资在1220元以下的职工没有联系的供应商的名称。
SELECT 供应商名FROM 供应商WHERE 供应商号NOT IN(SELECT 供应商号FROM 订购单WHERE 职工号IN(SELECT 职工号FROM 职工WHERE 工资< 1220))10)检索出向S4供应商发出订购单的仓库所在的城市。
数据库习题与答案

数据库习题与答案一、选择题1、以下哪个不是数据库的特征?A.共享性B.安全性C.完整性D.随意性答案:D.随意性解释:数据库具有共享性、安全性、完整性等特征,但随意性并不是数据库的特征。
2、下列哪个是关系型数据库的优点?A.易于使用和管理B.支持复杂查询C.可以存储大量数据D.以上都是答案:D.以上都是解释:关系型数据库具有易于使用和管理、支持复杂查询、可以存储大量数据等优点。
3、SQL是下列哪个数据库系统的标准语言?A. OracleB. MySQLC. SQL ServerD. DB2答案:A. Oracle解释:SQL是Oracle数据库系统的标准语言。
4、下列哪个是数据库系统的组成部分?A.数据库B.操作系统C.应用程序D.以上都是答案:D.以上都是解释:数据库系统由数据库、操作系统、应用程序等组成。
5、下列哪个是对数据库系统的正确描述?A.数据库系统可以取代文件系统B.数据库系统与文件系统完全不同C.数据库系统是一个层次结构D.数据库系统是一个客户-服务器结构答案:D.数据库系统是一个客户-服务器结构解释:数据库系统是一个客户-服务器结构,它由多个组成部分组成,包括数据库、操作系统、应用程序等。
与文件系统相比,数据库系统可以提供更高效、更可靠的数据存储和管理。
二、填空题1、________是指数据的结构化程度。
关系型数据库中的数据是按照__________组织的。
答案:数据结构化;表格形式解释:数据的结构化程度是指数据之间关系的清晰程度和组织方式。
在关系型数据库中,数据是按照表格形式组织的,每个表格由行和列组成,行表示记录,列表示字段。
2、SQL语言中,可以使用_________关键字来创建一个新的表格。
____________用于向表格中插入数据。
答案:CREATE TABLE;INSERT INTO解释:在SQL语言中,可以使用CREATE TABLE关键字来创建一个新的表格。
INSERT INTO用于向表格中插入数据。
数据库-查询练习1~52(含参考答案)

查询练习题第一部分:【1】从fruits表中检索所有字段的数据Select * from fruits;【2】查询fruits表中f_name列所有水果名称Select f_name from fruits;【3】从fruits表中获取f_name和f_price两列Select f_name,f_price from fruits;【4】查询价格为10.2元的水果的名称Select f_name from fruits where f_price=10.2;【5】查找名称为“apple”的水果的价格Select f_price from fruits where f_name=’apple’;【6】查询价格小于10的水果的名称Select f_name from fruits where f_peice<10;【7】s_id为101和102的记录Select * from fruits where s_id=101 or s_id=102;【8】查询所有s_id不等于101也不等于102的记录Select * from fruits where s_id!=101 and s_id!=102;【9】查询价格在2.00元到10.20元之间的水果名称和价格Select f_name,f_price from fruits where f_price>2.00 and f_price<10.20;【10】查询价格在2.00元到10.20元之外的水果名称和价格Select f_name,f_price from fruits where f_price<2.00 or f_price>10.20;【11】查找所有以’b’字母开头的水果Select f_name from fruits where f_name like ‘b%’;【12】在fruits表中,查询f_name中包含字母’g’的记录Select * from fruits where f_name like “%g%”;【13】查询以’b’开头,并以’y’结尾的水果的名称Select * from fruits where f_name like “b%y”;【14】在fruits表中,查询以字母’y’结尾,且’y’前面只有4个字母的记录Select * from fruits where f_name like “____y”;第二部分:SELECT COUNT(*) AS cust_num FROM customers;【15】查询customers表中c_email为空的记录的c_id、c_name和c_email字段值Select c_id,c_name,c_email from customers where c_email is null;【16】查询customers表中c_email不为空的记录的c_id、c_name和c_email字段值Select c_id,c_name,c_email from customers where c_email is not null;【17】在fruits表中查询s_id = 101,并且f_price大于等于5的水果价格和名称Select f_name,f_price from fruits where s_id=101 and f_price>=5;【18】在fruits表中查询s_id = 101或者102,且f_price大于5,并且f_name=‘apple’的水果价格和名称Select f_name,f_price from fruits where s_id in (101,102) and f_price>5 and f_name=’apple’;【19】查询s_id=101或者s_id=102的水果供应商的f_price和f_nameSelect f_price,f_name from fruits where s_id=101 or s_id=102;【20】查询s_id=101或者s_id=102的水果供应商的f_price和f_name(用不同的方法)Select f_price,f_name from fruits where s_id in (101,102);【21】查询fruits表中s_id字段的值,返回s_id字段值且不得重复(使用distinct去重复)SELECT DISTINCT s_id FROM fruits;【22】查询fruits表的f_name字段值,并对其进行排序Select f_name from fruits order by f_name;【23】查询fruits表中的f_name和f_price字段,先按f_name排序,再按f_price排序Select f_name,f_price from fruits order by f_name,f_price;【24】查询fruits表中的f_name和f_price字段,对结果按f_price降序方式排序Select f_name,f_price from fruits order by f_price desc;【25】查询fruits表,先按f_price降序排序,再按f_name字段升序排序Select * from fruits order by f_price desc,f_name;【26】根据s_id对fruits表中的数据进行分组,并显示每个分组的总记录数。
数据库基础课后习题及答案

数据库基础课后习题及答案数据库基础课后习题及答案数据库是计算机科学中非常重要的一个概念,它用于存储和管理大量的数据。
在数据库基础课程中,学生通常需要完成一些习题来巩固所学的知识。
本文将介绍一些常见的数据库基础课后习题,并提供相应的答案。
一、选择题1. 数据库是指什么?A. 存储和管理数据的软件系统B. 存储和管理硬件设备的软件系统C. 存储和管理网络的软件系统D. 存储和管理操作系统的软件系统答案:A2. 数据库管理系统(DBMS)的主要功能是什么?A. 存储和管理数据B. 分析和处理数据C. 网络和通信D. 操作系统管理答案:A3. 下列哪个不属于数据库的特点?A. 数据共享B. 数据冗余C. 数据独立性D. 数据一致性答案:B4. 数据库中的数据是以什么形式存储的?A. 文件B. 表格C. 文本D. 图像答案:B5. 数据库中的主键是什么?A. 唯一标识一个记录的属性B. 存储在数据库中的所有数据C. 数据库中的表格D. 数据库中的索引答案:A二、填空题1. 数据库中的关系是指什么?关系是指数据之间的联系和关联。
2. 数据库中的SQL是什么意思?SQL是结构化查询语言(Structured Query Language)的缩写。
3. 数据库中的DDL是什么意思?DDL是数据定义语言(Data Definition Language)的缩写。
4. 数据库中的DML是什么意思?DML是数据操作语言(Data Manipulation Language)的缩写。
5. 数据库中的索引有什么作用?索引可以提高数据库的查询效率,加快数据检索的速度。
三、简答题1. 数据库的三级模式是什么?数据库的三级模式包括外模式、概念模式和内模式。
外模式是用户对数据库的直接接口,概念模式是数据库的全局逻辑结构,内模式是数据库在物理存储上的表示。
2. 数据库的ACID是什么意思?ACID是数据库事务的四个特性,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
数据库sql查询语句练习2习题结果单世民仓库习题.docx

数据库 sql 查询语句练习 2_习题_结果 ( 单世民 ) 仓库 _习题数据库结构如下:仓库(仓库号 , 城市 , 面积)订购单(职工号 , 供应商号 , 订购单号 , 订购日期)供应商(供应商号 , 供应商名 , 地址)职工(仓库号 , 职工号 , 工资)具体数据如下:仓库表:仓库号城市面积WH1北京370WH2上海500WH3广州200WH4武汉400订购单表:职工号供应商号订购单号订购日期E3S7OR6706/23/01E1S4OR7307/28/01E5S4OR7605/25/01E6S6OR7705/26/01E3S4OR7906/13/01 E1S2OR8008/29/01 E3S3OR9009/01/01 E3S3OR9107/13/01供应商表:供应商号供应商名地址S2名硕电子公司苏州S3振华电子厂西安S4华通电子公司北京S6607 厂郑州S7爱华电子厂北京职工表:仓库号职工号工资WH2E11220WH1E31210WH2E41250WH3E51230WH1E61250使用 SQL 语句完成:DDL1.写出创建上述表的语句命令:create table仓库 ( 仓库号varchar( 8) primary key ,城市 varchar( 8),面积int );create table订购单 ( 订购单号varchar( 8 )primary key, 职工号varchar (8 ), 供应商号 varchar( 8 ),订购日期nchar( 8 ))create table供应商 ( 供应商号varchar( 8)primary key ,供应商名varchar( 18 ),地址 varchar( 8 ))create table职工 ( 职工号varchar( 8 )primary key , 仓库号 varchar( 8 ),工资int ) DML2.给出插入上述数据的 insert 语句命令:insert into仓库 values( 'WH1', ' 北京 ' , 370 )insert into仓库 values( 'WH2', ' 上海 ' , 500 )insert into仓库 values( 'WH3', ' 广州 ' , 200 )insert into仓库 values( 'WH4', ' 武汉 ' , 400 )insert into订购单 values( 'OR67', 'E3', 'S7', '06/23/01')insert into订购单 values( 'OR73', 'E1', 'S4', '07/28/01')insert into订购单 values( 'OR76', 'E5', 'S4', '05/25/01')insert into订购单 values( 'OR77', 'E6', 'S6', '05/26/01')insert into订购单 values( 'OR79', 'E3', 'S4', '06/13/01')insert into订购单 values( 'OR80', 'E1', 'S2', '08/29/01')insert into订购单 values( 'OR90', 'E3', 'S3', '09/01/01')insert into订购单 values( 'OR91', 'E3', 'S7', '07/13/01')insert into供应商 values( 'S2', ' 名硕电子公司 ' , '苏州 ' )insert into供应商 values( 'S3', ' 振华电子厂 ' , ' 西安 ' )insert into供应商 values( 'S4', ' 华通电子公司 ' , '北京 ' )insert into供应商 values( 'S6', '607厂 ' , '郑州 ' )insert into供应商 values( 'S7', ' 爱华电子厂' , ' 北京 ' )insert into职工 values( 'E1', 'WH2', 1220)insert into职工 values( 'E3', 'WH1', 1210)insert into职工 values( 'E4', 'WH2', 1250)insert into职工 values( 'E5', 'WH3',1230)insert into职工 values( 'E6', 'WH1',1250)单表查询3.检索职工关系中的所有信息命令: select* from职工结果:4.检索供应商关系中的所有信息命令: select* from供应商结果:5.检索六月之后的所有订单命令:SELECT * FROM 订购单WHERE DATEDIFF ( MONTH, '2001-06-01 00:00:00.000',订购日期 )>= 0;结果:6.检索面积大于 400 的仓库命令: select* from仓库where面积>400结果:7.检索哪些职工的工资多于 1210命令: select* from职工where工资>1210结果:8.检索仓库是“ WH1 ”或“ WH2 ”并且面积大于400 的城市命令: select城市from仓库where仓库号='WH1'and面积> 400union select城市from仓库where仓库号='WH2'and面积> 400结果:9.找出仓库面积在 400 到 600 的仓库命令: select* from仓库where面积between 400 and 600结果:10.找出名中包含“厂”的所有供应商的名命令: select供应商名from供应商where供应商名like'% 厂 %'结果:11.找出不在西安的供应商命令: select* from供应商except select* from供应商where地址= '西安 '或者:select* from供应商where not地址= ' 西安 '结果:12.找出不在北京的仓库命令: select* from仓库except select* from仓库where城市= '北京'结果:13.按工资降序排列出所有职工的信息命令: select* from职工order by工资desc结果:14.先按仓库号升序排列,再按工资降序排列命令: select* from职工order by仓库号asc , 工资desc结果:15.在仓库表中统计一下有几个仓库命令: select COUNT(*)仓库数from仓库结果:16.在职工表中统计一下有几个仓库命令: select COUNT( distinct仓库号)仓库数from职工结果:17.求总的仓库面积命令: select sum ( 面积 )总面积from仓库结果:聚合查询18.每个职工的订单数命令: select职工号, count(*)订单数from订购单group by职工号结果:19.订单数大于 3 的职工命令:select职工号, COUNT(*)订单数from订购单group by职工号having COUNT(*)> 3结果:多表查询20.找出在面积大于 400 的仓库中工作的职工命令: select职工号from职工join仓库on职工.仓库号=仓库.仓库号where 面积 > 400结果:21.找出在北京工作的职工和他们的工资情况命令: select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号where 仓库 . 城市 =' 北京 '结果:22.找出工资大于 1215 的职工和他们所在的城市命令: select职工号,城市from职工join仓库on职工.仓库号=仓库.仓库号where 工资 > 1215结果:子查询23.哪些城市至少有一个订单(从仓库角度考虑)命令: select distinct城市from订购单join职工on订购单.职工号=职工 . 职工号join仓库on职工.仓库号=仓库.仓库号结果:24.找出没有任何订单的城市命令: select城市from仓库except select distinct城市from订购单join职工on订购单.职工号=职工.职工号join仓库on 职工 . 仓库号 =仓库 . 仓库号结果:25.找出和 E4 有同样工资的所有职工命令: select b . 职工号 , b. 仓库号 , b . 工资from职工 a join职工 b on a .工资 = b . 工资where a . 职工号 ='E4'结果:26.找出仓库面积大于 400 的仓库的所有职工命令:select 职工 . 职工号 , 职工 . 仓库号 , 职工 . 工资 from 职工 join 仓库 on 职工 . 仓库号 = 仓库 . 仓库号 where 面积 >400结果:27.找出供应商在西安的职工和他们的工资情况命令:select职工.职工号,工资from供应商join订购单on 供应商 . 供应商号 = 订购单 . 供应商号join职工on订购单.职工号=职工.职工号where地址= '西安'结果:28.找出不在北京仓库里工作的职工命令: select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号except select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号where 城市 = ' 北京 '结果:29.找出在北京仓库里工作的职工命令: select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号where 城市 = ' 北京 '结果:30.求广州和上海仓库职工的总工资命令:select SUM( 工资 )总工资from职工join仓库on职工.仓库号=仓库.仓库号where城市= '广州'or城市= '上海'结果:31.求所有职工工资都大于 1210 的仓库的平均面积命令: select avg ( 面积 )平均面积from ( select仓库号from职工except select仓库号from职工where工资<1210 ) a join仓库on a . 仓库号 = 仓库 . 仓库号结果:32.求上海仓库中职工的最高工资命令: select MAX( 工资 )最高工资from职工join仓库on职工.仓库号=仓库 . 仓库号where城市= '上海'结果:33.订单数大于或等于 2 的职工的工资命令:select a .工资from( select职工 .职工号,工资from职工join订购单on职工 .职工号= 订购单 .职工号group by职工 .职工号 ,工资having COUNT(*)>= 2 ) a结果:。
《数据库管理系统》课后习题参考答案2

《数据库管理系统》课后习题参考答案习题一(P30)一、选择题二、填空题1.事物之间的联系2.命令方式3.关系模型4.多对多5.元组属性6.外部关键字7.QUIT8.关系运算9.空值10.若干个二维表11..pjx12.数据模型习题二(P48)一、选择题二、填空题1.逻辑型(或者L).T.2.字符型(C)、数值型(N)、日期时间型(T)3.11.254.15 m(2, 5)5.X^2+(x+2)/(y-8)习题三(P78)一、选择题二、填空题1.SELECT 02..dbf3..cdx 复合索引4..T.5.物理排序逻辑排序6.SET RELATION7.数据库8.8三、上机题3.打开商品表,为下列要求写出命令序列(1)list for recno()= 5(2)list for recno()>=2 and recno()<=6(3)list for recno()>=3 and recno()<=5(4)list 商品货号,商品名称,生产单位,数量for 数量<5(5)list for 进口否=.t. or year (开单日期)=2008(6)list for “上海”$生产单位(7)list for(单价>4000 and 进口否=.t.) or (单价<5000 and 进口否=.f.) (8)list 商品货号,商品名称,单价*0.9,开单日期for year(开单日期)=2008 (9)list for(单价<2000 or 单价>5000) and 进口否=.t.(10)list for recno()>=2 and 进口否=.f.(11)list for right(商品货号,3)=”120”(12)list for left (商品货号,1)="L" or substr(商品货号,2,1)="V"(13)list for 单价>30004.试对“商品.dbf”分别排序(1)sort to temp on 数量ascending for 单价>3000 FIELDS 商品货号,商品名称,数量,单价,生产单位(2)sort to temp on 商品名称/D,开单日期/D for 单价>3000 FIELDS 商品货号,商品名称,数量,单价,生产单位5.使用命令为“商品.dbf”建立一个结构复合索引文件,其中包含三个索引(1)INDEX ON 商品货号TAG 索引1 DESC(2)INDEX ON 商品名称+DTOC(开单日期) TAG 索引2 DESC(3)INDEX ON 生产单位+DTOC(开单日期) TAG 索引3 DESC6.分别用顺序查询和索引查询两种方法查询2009年开单的商品顺序查询:索引查询:习题四(P102)一、选择题二、填空题1.实体2.插入3..dbc4.主普通三、上机题略习题五(P113)一、选择题二、填空题1.条件2.更新条件4.远程三、上机题略习题六(P141)一、选择题二、填空题1.Structured Query Language2.COUNT() SUM() A VG3.EXISTS XS.学生号4.INSERT INTO5.LIKE6.逻辑7.INTO CURSOR8.INTO DBF|TABLE9.PRIMARY KEY10..NULL.三、上机题1.利用本章建立的定货数据库,用SQL语句完成以下操作(1)SELECT 供应商名FROM 供应商WHERE 地址=”上海”(2)SELECT 仓库名, AVG(面积) AS 面积FROM 仓库(3)SELECT 仓库号, COUNT(*) FROM 职工WHERE 工资>2800 GROUP BY 仓库号(4)SELECT DIST 城市FROM 仓库,职工,订购单WHERE 供应商号=”S2”AND 订购单.职工号=职工.职工号AND 职工.仓库号=仓库.仓库号(5)SELECT 订购单号FROM 订购单WHERE 职工号IN (SELECT 职工号FROM 职工WHERE 工资>2800) AND 供应商号IN (SELECT 供应商号FROM 供应商WHERE 地址=”上海”)(6)SELECT 职工号,仓库号FROM 职工WHERE 职工号IN (SELECT 职工号FROM 订购单WHERE 供应商号=”S1”)(7)SELECT * FROM 供应商WHERE 地址=”北京”AND 供应商号IN (SELECT 供应商号FROM 订购单WHERE 职工号=”E1”) AND 供应商号IN (SELECT 供应商号FROM 订购单WHERE 职工号=”E4”)(8)SELECT * FROM 职工 A WHERE 工资<(SELECT A VG(工资) FROM 职工 B WHERE A.仓库号=B.仓库号)(9)INSERT INTO 仓库VALUES(“WH7”,”亿旺仓储”,”北京”,1500.00)(10)DELETE * FROM 供应商WHERE 供应商号NOT IN (SELECT 供应商号FROM 订购单)PACK(11)UPDATE 职工SET 工资=工资*1.02 WHERE 工资<(SELECT A VG(工资) FROM 工资)2.示例:建立学生管理数据库,其中包含有系:(系号(C 6),系名(C 20))1.按照系号建立主索引;学生:(学号(C 10),系号(C 6),姓名(C 20),性别(L),出生日期(D))1.按照学号建立主索引;2.出生日期字段有效性规则为:出生日期应小于系统当前日期,否则提示“出生日期输入错误!”课程:(课程号(I),课程名(C 50))1.按照课程号建立主索引成绩:(学号(C 10),课程号(I),成绩(N 5 1))1.成绩字段的有效性规则为:成绩应介于0~100分之间,否则提示“成绩应介于0~100之间”,默认值为60分;2.按照学号建立普通索引并与学生表建立联系;3.按照课程号建立普通索引并与课程表建立联系;命令如下:* 建立学生管理数据库CREA DATABASE 学生管理&&建立须生管理数据库*建立系表CREATE TABLE 系( 系号C(6) PRIMARY KEY, 系名C(20))*建立学生表CREATE TABLE 学生( 学号C(10) PRIMARY KEY, 系号C(6), 姓名C(20), 性别L, 出生日期D CHECK (出生日期<=DATE()) ERROR "出生日期输入错误!" , FOREIGN KEY 系号TAG 系号REFERENCES 系)*建立课程表CREATE TABLE 课程( 课程号I PRIMARY KEY, 课程名C(50))*建立成绩表CREATE TABLE 成绩( 学号C(10),课程号I, 成绩N(5,1) CHECK (成绩>=0 AND 成绩<=100) ERROR "成绩应介于0~100之间" DEFAULT 60, FOREIGN KEY 学号TAG 学号REFERENCES 学生, FOREIGN KEY 课程号TAG 课程号REFERENCES 课程)【提示】操作完成后,可以使用:OPEN DA TABASE 学生管理MODI DA TABASE 查看结果。
数据库sql查询语句练习4_习题_结果(单世民)图书_习题

数据库sql查询语句练习4_习题_结果(单世民)图书_习题现有图书管理数据库的三个关系模式:图书(总编号, 分类号, 书名, 作者, 出版单位, 单价)读者(借书证号, 单位, 姓名, 性别, 职称, 地址)借阅(借书证号, 总编号, 借书⽇期)具体数据为:读者:根据以上描述,请完成:DDL1.写出创建上述表的语句命令:create table图书(总编号varchar(7)primary key,分类号varchar(8),书名varchar(18),作者varchar(8),出版单位varchar(18),单价float)create table读者(借书证号varchar(4)primary key,单位varchar(7),姓名varchar(8),性别varchar(2),职称varchar(8),地址varchar(18))create table借阅(借书证号varchar(3),总编号varchar(6),借书⽇期date,primary key(借书证号,总编号,借书⽇期))DML2.给出插⼊上述数据的insert语句命令:insert into图书values('445501','TP3/12','数据库导论','王强','科学出版社', insert into图书values('445502','TP3/12','数据库导论','王强','科学出版社', insert into图书values('445503','TP3/12','数据库导论','王强','科学出版社', insert into图书values('332211','TP5/10','计算机基础','李伟','⾼等教育出版社', insert into图书values('112266','TP3/12','FoxBASE','张三','电⼦⼯业出版社', insert into图书values('665544','TS7/21','⾼等数学','刘明','⾼等教育出版社', insert into图书values('114455','TR9/12','线性代数','孙业','北京⼤学出版社', insert into图书values('113388','TR7/90','⼤学英语','胡玲','清华⼤学出版社', insert into图书values('446601','TP4/13','数据库基础','马凌云','⼈民邮电出版社',insert into图书values('446602','TP4/13','数据库基础','马凌云','⼈民邮电出版社',insert into图书values('446603','TP4/13','数据库基础','马凌云','⼈民邮电出版社',insert into图书values('449901','TP4/14','FoxPro⼤全','周虹','科学出版社', insert into图书values('449902','TP4/14','FoxPro⼤全','周虹','科学出版社', insert into图书values('118801','TP4/15','计算机⽹络','黄⼒钧','⾼等教育出版社',insert into图书values('118802','TP4/15','计算机⽹络','黄⼒钧','⾼等教育出版社',insert into读者values('111','信息系','王维利','⼥','教授','1号楼')insert into读者values('112','财会系','李⽴','男','副教授','2号楼')insert into读者values('113','经济系','张三','男','讲师','3号楼')insert into读者values('114','信息系','周华发','男','讲师','1号楼')insert into读者values('115','信息系','赵正义','男','⼯程师','1号楼')insert into读者values('116','信息系','李明','男','副教授','1号楼')insert into读者values('117','计算机系','李⼩峰','男','助教','1号楼')insert into读者values('118','计算机系','许鹏飞','男','教授','1号楼')insert into读者values('119','计算机系','刘⼤龙','男','副教授','4号楼') insert into读者values('120','国际贸易','李雪','男','副教授','4号楼') insert into读者values('121','国际贸易','李爽','⼥','讲师','4号楼') insert into读者values('122','国际贸易','王纯','⼥','讲师','4号楼') insert into读者values('123','财会系','沈⼩霞','⼥','助教','2号楼') insert into读者values('124','财会系','朱海','男','讲师','2号楼')insert into读者values('125','财会系','马英明','男','副教授','2号楼')insert into借阅values('112','445501','1997-3-19')insert into借阅values('125','332211','1997-2-12')insert into借阅values('111','445503','1997-8-21')insert into借阅values('112','112266','1997-3-14')insert into借阅values('114','665544','1997-10-21')insert into借阅values('120','114455','1997-11-2')insert into借阅values('120','118801','1997-10-18')insert into借阅values('119','446603','1997-12-12')insert into借阅values('112','449901','1997-10-23')insert into借阅values('115','449902','1997-8-21')insert into借阅values('118','118801','1997-9-10')单表查询3.找出姓李的读者姓名和所在单位命令:select姓名,单位from读者where姓名like'李%'结果:4.列出图书库中所有藏书的书名以及出版单位命令:select distinct书名,出版单位from图书结果:5.查找出⾼等教育出版社的所有图书及单价,结果按单价降序排列命令:select distinct书名,单价from图书where出版单位='⾼等教育出版社' order by单价desc结果:6.查找出价格位于10元和20元之间的图书种类,结果按出版单位和单价升序排序命令:select*from图书where单价between 10 and 20 order by出版单位,单价结果:7.找出书名以“计算机”打头的所有图书和作者命令:select distinct书名,作者from图书where书名like'计算机%'结果:8.检索同时接借阅了总编号为112266和449901两本书的借书证号命令:select借书证号from借阅where总编号='112266'intersect select借书证号from借阅where总编号='449901'结果:9.求科学出版社图书的最⾼单价、最低单价和平均单价命令:select MAX(单价)最⾼单价,MIN(单价)最低单价,AVG(单价)平均单价from 图书where出版单位='科学出版社'结果:聚合查询10.找出藏书中各个出版社的册数、价值总额命令:select出版单位,COUNT(*)册数,SUM(单价)价值总额from图书group by 出版单位结果:11.求出各个出版社图书的最⾼价格、最低价格和册数命令:select出版单位,COUNT(*)册数,max(单价)最⾼价格,MIN(单价)最低价格from图书group by出版单位结果:多表查询12.查找所有借了书的读者的姓名以及所在单位命令:select distinct姓名,单位from读者join借阅on读者.借书证号=借阅.借书证号结果:13.找出李某所借图书的所有图书的书名及借书⽇期命令:select姓名,书名,借书⽇期from读者join借阅on读者.借书证号=借阅.借书证号join图书on借阅.总编号=图书.总编号where 姓名like'李%'结果:14.查询1997年10⽉以后借书的读者借书证号、姓名和单位命令:select distinct读者.借书证号,姓名,单位from借阅join读者on借阅.借书证号=读者.借书证号whereDATEDIFF(MONTH,'1977-10-1',借书⽇期)>=0结果:15.找出借阅了FoxPro⼤全⼀书的借书证号命令:select借书证号from借阅join图书on借阅.总编号=图书.总编号where 书名='FoxPro⼤全'结果:16.分别找出借书⼈次超过1⼈次的单位及⼈次数命令:select单位,COUNT(*)⼈次数from借阅join读者on借阅.借书证号=读者.借书证号group by单位having COUNT(*)>1结果:⼦查询17.找出与赵正义在同⼀天借书的读者姓名、所在单位以及借书⽇期命令:select姓名,单位,借书⽇期from读者join借阅on读者.借书证号=借阅.借书证号where借书⽇期=(select借书⽇期from借阅join读者on借阅.借书证号=读者.借书证号where姓名='赵正义')结果:18.查询1997年7⽉以后没有借书的读者借书证号、姓名以及单位命令:select借书证号,姓名,单位from读者except select借阅.借书证号,姓名,单位from借阅join读者on借阅.借书证号=读者.借书证号where DATEDIFF(DAY,'1997-7-1',借书⽇期)>=0结果:19.求信息系当前借阅图书的读者⼈次数命令:select COUNT(*)⼈次数from借阅join读者on借阅.借书证号=读者.借书证号where单位='信息系'结果:20.找出当前⾄少借阅了2本书的读者及所在单位命令:select姓名,单位from借阅join读者on借阅.借书证号=读者.借书证号group by读者.姓名,单位having COUNT(*)>=2结果:21.查询经济系是否还清所有图书。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库结构如下:仓库(仓库号, 城市, 面积)订购单(职工号, 供应商号, 订购单号, 订购日期)供应商(供应商号, 供应商名, 地址)职工(仓库号, 职工号, 工资)具体数据如下:仓库表:职工表:使用SQL语句完成:DDL1.写出创建上述表的语句命令:create table仓库(仓库号varchar(8)primary key,城市varchar(8),面积int);create table订购单(订购单号varchar(8)primary key,职工号varchar(8),供应商号varchar(8),订购日期nchar(8))create table供应商(供应商号varchar(8)primary key,供应商名varchar(18),地址varchar(8))create table职工(职工号varchar(8)primary key,仓库号varchar(8),工资int)DML2.给出插入上述数据的insert语句命令:insert into仓库values('WH1','北京',370)insert into仓库values('WH2','上海',500)insert into仓库values('WH3','广州',200)insert into仓库values('WH4','武汉',400)insert into订购单values('OR67','E3','S7','06/23/01')insert into订购单values('OR73','E1','S4','07/28/01')insert into订购单values('OR76','E5','S4','05/25/01')insert into订购单values('OR77','E6','S6','05/26/01')insert into订购单values('OR79','E3','S4','06/13/01')insert into订购单values('OR80','E1','S2','08/29/01')insert into订购单values('OR90','E3','S3','09/01/01')insert into订购单values('OR91','E3','S7','07/13/01')insert into供应商values('S2','名硕电子公司','苏州')insert into供应商values('S3','振华电子厂','西安')insert into供应商values('S4','华通电子公司','北京')insert into供应商values('S6','607厂','郑州')insert into供应商values('S7','爱华电子厂','北京')insert into职工values('E1','WH2',1220)insert into职工values('E3','WH1',1210)insert into职工values('E4','WH2',1250)insert into职工values('E5','WH3',1230)insert into职工values('E6','WH1',1250)单表查询3.检索职工关系中的所有信息命令:select*from职工结果:4.检索供应商关系中的所有信息命令:select*from供应商结果:5.检索六月之后的所有订单命令:SELECT*FROM订购单WHERE DATEDIFF(MONTH,'2001-06-01 00:00:00.000',订购日期)>=0;结果:6.检索面积大于400的仓库命令:select*from仓库where面积>400结果:7.检索哪些职工的工资多于1210命令:select*from职工where工资>1210结果:8.检索仓库是“WH1”或“WH2”并且面积大于400的城市命令:select城市from仓库where仓库号='WH1'and面积>400 union select 城市from仓库where仓库号='WH2'and面积>400结果:9.找出仓库面积在400到600的仓库命令:select*from仓库where面积between 400 and 600结果:10.找出名中包含“厂”的所有供应商的名命令:select供应商名from供应商where供应商名like'%厂%'结果:11.找出不在西安的供应商命令:select*from供应商except select*from供应商where地址='西安'或者:select*from供应商where not地址='西安'结果:12.找出不在北京的仓库命令:select*from仓库except select*from仓库where城市='北京'结果:13.按工资降序排列出所有职工的信息命令:select*from职工order by工资desc结果:14.先按仓库号升序排列,再按工资降序排列命令:select*from职工order by仓库号asc,工资desc 结果:15.在仓库表中统计一下有几个仓库命令:select COUNT(*)仓库数from仓库结果:16.在职工表中统计一下有几个仓库命令:select COUNT(distinct仓库号)仓库数from职工结果:17.求总的仓库面积命令:select sum(面积)总面积from仓库结果:聚合查询18.每个职工的订单数命令:select职工号,count(*)订单数from订购单group by职工号结果:19.订单数大于3的职工命令:select职工号,COUNT(*)订单数from订购单group by职工号having COUNT(*)>3结果:多表查询20.找出在面积大于400的仓库中工作的职工命令:select职工号from职工join仓库on职工.仓库号=仓库.仓库号where面积>400结果:21.找出在北京工作的职工和他们的工资情况命令:select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号where仓库.城市='北京'结果:22.找出工资大于1215的职工和他们所在的城市命令:select职工号,城市from职工join仓库on职工.仓库号=仓库.仓库号where工资>1215结果:子查询23.哪些城市至少有一个订单(从仓库角度考虑)命令:select distinct城市from订购单join职工on订购单.职工号=职工.职工号join仓库on职工.仓库号=仓库.仓库号结果:24.找出没有任何订单的城市命令:select城市from仓库except select distinct城市from订购单join 职工on订购单.职工号=职工.职工号join仓库on职工.仓库号=仓库.仓库号结果:25.找出和E4有同样工资的所有职工命令:select b.职工号,b.仓库号,b.工资from职工a join职工b on a.工资=b.工资where a.职工号='E4'结果:26.找出仓库面积大于400的仓库的所有职工命令:select职工.职工号,职工.仓库号,职工.工资from职工join仓库on职工.仓库号=仓库.仓库号where面积>400结果:27.找出供应商在西安的职工和他们的工资情况命令:select职工.职工号,工资from供应商join订购单on供应商.供应商号=订购单.供应商号join职工on订购单.职工号=职工.职工号where地址='西安'结果:28.找出不在北京仓库里工作的职工命令:select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号except select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号where城市='北京'结果:29.找出在北京仓库里工作的职工命令:select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号where城市='北京'结果:30.求广州和上海仓库职工的总工资命令:select SUM(工资)总工资from职工join仓库on职工.仓库号=仓库.仓库号where城市='广州'or城市='上海'结果:31.求所有职工工资都大于1210的仓库的平均面积命令:select avg(面积)平均面积from (select仓库号from职工except select仓库号from职工where工资<1210)a join仓库on a.仓库号=仓库.仓库号结果:32.求上海仓库中职工的最高工资命令:select MAX(工资)最高工资from职工join仓库on职工.仓库号=仓库.仓库号where城市='上海'结果:33.订单数大于或等于2的职工的工资命令:select a.工资from (select职工.职工号,工资from职工join订购单on 职工.职工号=订购单.职工号group by职工.职工号,工资having COUNT(*)>=2)a结果:。