SQL查询语句巩固及练习结果
SQL查询语句练习及结果

1 单表查询1.1 查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、客户ID和雇员ID等字段的值查询语句:select 订单ID客户ID雇员ID订购日期from 订单WHERE 订购日期BETWEEN '1996-7-1' AND '1996-7-15';1.2 查询供应商的ID、公司名称、地区、城市和电话字段的值。
条件是“地区等于华北”并且“联系人头衔等于销售代表”。
查询语句:select 供应商ID公司名称地区城市电话from `供应商`WHERE 地区 = '华北'AND 联系人职务 = '销售代表';1.3 查询供应商的ID、公司名称、地区、城市和电话字段的值。
其中的一些供应商位于华东或华南地区,另外一些供应商所在的城市是天津查询语句:select 供应商ID公司名称地区城市电话from `供应商`WHERE 地区 in('华东''华南') or 城市 = '天津';1.4 查询位于“华东”或“华南”地区的供应商的ID、公司名称、地区、城市和电话字段的值查询语句:select 供应商ID公司名称地区城市电话 from `供应商` WHERE 地区 in('华东''华南');2 多表查询2.1查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、相应订单的客户公司名称、负责订单的雇员的姓氏和名字等字段的值,并将查询结果按雇员的“姓氏”和“名字”字段的升序排列,“姓氏”和“名字”值相同的记录按“订单ID”的降序排列查询语句:select 订购日期订单ID公司名称姓氏名字from 订单 aleft join 客户 b on a.客户ID = b.客户IDleft join 雇员 c on a.雇员ID = c.雇员IDWHERE 订购日期 BETWEEN '1996-7-1' AND '1996-7-15'order by 姓氏名字订单ID2.2 查询“10248”和“10254”号订单的订单ID、运货商的公司名称、订单上所订购的产品的名称查询语句:select 订购日期订单ID公司名称姓氏名字from 订单 aleft join 客户 b on a.客户ID = b.客户IDleft join 雇员 c on a.雇员ID = c.雇员IDWHERE 订购日期 BETWEEN '1996-7-1' AND '1996-7-15'order by 姓氏名字订单ID2.3 查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称、数量、单价和折扣查询语句:select a.订单IDc.产品名称b.单价b.数量b.折扣from 订单 aleft join 订单明细 b on a.订单ID = b.订单IDleft join 产品 c on c.产品ID = b.产品IDwhere a.订单ID in('10248''10254')2.4 查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称及其销售金额销售金额=单价*数量*(1-折扣)查询语句:select a.订单IDc.产品名称 round(b.单价*b.数量*(1-b.折扣)2) as 销售金额from 订单 aleft join 订单明细 b on a.订单ID = b.订单IDleft join 产品 c on c.产品ID = b.产品IDwhere a.订单ID in('10248''10254')3 综合查询3.1 查询所有运货商的公司名称和电话查询语句:select 公司名称电话 from 运货商3.2 查询所有客户的公司名称、电话、传真、地址、联系人姓名和联系人头衔查询语句:select 公司名称电话传真地址联系人姓名联系人职务from 客户3.3 查询单价介于10至30元的所有产品的产品ID、产品名称和库存量查询语句:select 产品ID产品名称库存量from 产品where 单价 BETWEEN 10 and 303.4 查询单价大于20元的所有产品的产品名称、单价以及供应商的公司名称、电话查询语句:select a.产品名称a.单价b.公司名称b.电话from 产品 aleft join 供应商 b on a.供应商ID = b.供应商IDwhere 单价 > 203.5 查询上海和北京的客户在1996年订购的所有订单的订单ID、所订购的产品名称和数量查询语句:select a.订单IDd.产品名称c.数量from 订单 aleft join 客户 b on a.客户ID = b.客户IDleft join 订单明细 c on a.订单ID = c.订单IDleft join 产品 d on c.产品ID =d.产品IDwhere b.城市 in('上海''北京')3.6 查询华北客户的每份订单的订单ID、产品名称和销售金额查询语句:select a.订单IDd.产品名称 round(c.单价*c.数量*(1-c.折扣)2) as 销售金额from 订单 aleft join 客户 b on a.客户ID = b.客户IDleft join 订单明细 c on a.订单ID = c.订单IDleft join 产品 d on c.产品ID =d.产品IDwhere b.地区 = '华北'3.7 按运货商公司名称,统计1997年由各个运货商承运的订单的总数量查询语句:select b.公司名称count(a.订单ID) as 订单总数量from 订单 aleft join 运货商 b on a.运货商 = b.运货商IDwhere year(a.订购日期) = 1997group by b. 公司名称3.8 统计1997年上半年的每份订单上所订购的产品的总数量查询语句:select b.公司名称sum(c.数量) as 产品总数量from 订单 aleft join 运货商 b on a.运货商 = b.运货商IDleft join 订单明细 c on a.订单ID = c.订单IDwhere 订购日期 between '1997-01-01' and '1997-06-30'group by b.公司名称3.9 统计各类产品的平均价格查询语句:select 类别名称round(sum(a.单价*a.数量*(1-a.折扣))/sum(a.数量)2) as 平均价格from 订单明细 aleft join 产品 b on a.产品ID = b.产品IDleft join 类别 c on b.类别ID = c.类别IDgroup by c.类别名称3.10 统计各地区客户的总数量查询语句:select 地区count(客户ID) as 客户总数from 客户group by 地区。
sqlyyog语句补全

sqlyyog语句补全1. 查询表中的所有数据SELECT * FROM 表名;2. 查询表中指定列的数据SELECT 列名1, 列名2, 列名3 FROM 表名;3. 查询表中符合条件的数据SELECT * FROM 表名 WHERE 条件;4. 查询表中数据并按照指定列进行排序SELECT * FROM 表名 ORDER BY 列名 ASC/DESC; 5. 查询表中数据并限制返回的行数SELECT * FROM 表名 LIMIT 数量;6. 查询表中数据并进行分组统计SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名;7. 查询表中数据并进行求和、平均值等运算SELECT SUM(列名) FROM 表名;SELECT AVG(列名) FROM 表名;8. 查询表中数据并进行连表操作SELECT 表1.列名, 表2.列名 FROM 表1 JOIN 表2 ON 表1.关联列 = 表2.关联列;9. 查询表中数据并进行条件判断SELECT 列名 FROM 表名 WHERE 列名 > 数值;10. 查询表中数据并使用函数进行处理SELECT 函数名(列名) FROM 表名;11. 查询表中数据并使用通配符进行模糊匹配SELECT * FROM 表名 WHERE 列名 LIKE '关键字%';12. 查询表中数据并进行日期时间处理SELECT DATE_FORMAT(日期列, '格式') FROM 表名;13. 查询表中数据并进行分页处理SELECT * FROM 表名 LIMIT 起始行, 每页数量;14. 查询表中数据并进行条件判断SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 数值1 AND 数值2;15. 查询表中数据并进行空值判断SELECT * FROM 表名 WHERE 列名 IS NULL;以上是一些常用的SQL语句补全,可以根据具体需求进行组合和扩展,希望能对你有帮助。
(完整版)sql语句练习题及答案

(完整版)sql语句练习题及答案⼀在数据库 school 中建⽴student , sc, course 表。
学⽣表、课程表、选课表属于数据库School ,其各⾃的数据结构如下:学⽣Student (Sno,Sname,Ssex,Sage,Sdept)课程表course(Cno,Cname,Cpno,Ccredit)学⽣选课SC(Sno,Cno,Grade)⼆设定主码1 Student表的主码:sno2 Course表的主码:cno3 Sc表的主码:sno,cno1写出使⽤ Create Table 语句创建表 student , sc, course 的SQL语句23 删除student表中的元组4在数据库school中删除关系student5在student表添加属性sbirthdate 类型datetimeDelete1 删除所有JSJ 系的男⽣delete from Student where Sdept=’JSJ’ and Ssex=’男’;2 删除“数据库原理”的课的选课纪录delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’);Update1 修改0001 学⽣的系科为: JSJ2 把陈⼩明的年龄加1岁,性别改为⼥。
2 修改李⽂庆的1001课程的成绩为93 分3 把“数据库原理”课的成绩减去1分Select 查询语句⼀单表1查询年龄在19⾄21岁之间的⼥⽣的学号,姓名,年龄,按年龄从⼤到⼩排列。
2查询姓名中第2个字为“明”字的学⽣学号、性别。
3查询 1001课程没有成绩的学⽣学号、课程号4查询JSJ 、SX、WL 系的年龄⼤于25岁的学⽣学号,姓名,结果按系排列5按10分制查询学⽣的sno,cno,10分制成绩(1-10分为1 ,11-20分为2 ,30-39分为3,。
90-100为10)6查询 student 表中的学⽣共分布在那⼏个系中。
SQL基础复习03--数据查询SQL语句(单表查询)

SQL基础复习03--数据查询SQL语句(单表查询)参考教材《数据库系统:原理、设计与编程(MOOC版)》,陆鑫张凤荔陈安龙终于到查询这⼀块了。
3.4 数据查询SQL语句3.4.1 查询语句基本结构SELECT [ALL/DISTINCT] <⽬标列>[,<⽬标列>...][INTO <新表>]FROM <表名>[,<表名>...][WHERE <条件表达式>][GROUP BY <列名> [HAVING <条件表达式>]ORDER BY <列名> [ASC/DESC]];SELECT语句由多种字句组成:1. SELECT⼦句,⽤来指明从数据库表中需要查询的⽬标列。
ALL是默认操作,获取所有满⾜条件的数据⾏;DISTINCT⽤来去掉结果集中的重复数据⾏;<⽬标列>为被查询表的指定列名,可以有多个。
2. INTO⼦句,⽤来将被查询的结果集数据插⼊新表。
3. FROM⼦句,⽤来指定被查询的数据来⾃哪个表或哪些表。
多表⽤逗号分隔。
4. WHERE⼦句,⽤来给出查询的检索条件,多个条件之间可以⽤AND、OR进⾏连接。
5. GROUP BY⼦句,⽤来对查询结果进⾏分组,并进⾏分组统计等处理,在分组中,还可以使⽤HAVING关键词定义分组条件。
6. ORDER BY⼦句,⽤来对查询结果集进⾏排序。
ASC当然是升序,DESC是降序。
默认为ASC。
从SELECT语句的操作结果看,<⽬标列>实现对关系表的投影操作,WHERE <条件表达式>实现对关系表的元组选择操作。
当前Student表的全部数据:下⾯将会对该表进⾏⼀系列查询操作3.4.2 从单表读取指定列SELECT <⽬标列>[,<⽬标列>...]FROM <表名>;例3-191. 从Student表中读取学⽣的学号、姓名、专业三列数据:SELECT StudentID, StudentName, MajorFROM Student;GO2. 从Student表中查询所有列数据:SELECT *FROM Student;GO3. 只查Major数据:SELECT MajorFROM Student;GO倘若只想查出不同的专业名称,可以消除重复⾏,⽤DISTINCT:SELECT DISTINCT MajorFROM Student;GO3.4.3 从单表读取指定⾏SELECT *FROM <表名>WHERE <条件表达式>;例3-20从Student表中读取专业为“软件⼯程”,性别为“男”的学⽣数据:SELECT *FROM StudentWHERE Major='软件⼯程' AND StudentGender='男';GO3.4.4 从单表读取指定⾏和列SELECT <⽬标列> [,<⽬标列>...]FROM <表名>WHERE <条件表达式>;例3-21从Student表中读取专业为“软件⼯程”,性别为“男”的学⽣的学号、姓名、性别、专业四列的数据:SELECT StudentID, StudentName, StudentGender, MajorFROM StudentWHERE Major='软件⼯程' AND StudentGender='男';GO3.4.5 WHERE⼦句条件在WHERE⼦句条件中,可以⽤BETWEEN...AND关键词来限定列值范围,还可以⽤关键字LIKE与通配符来限定查询范围,NOT LIKE⽤于给出不在范围的条件。
sql查询练习

1.查询全体学生的学号和姓名.select 学号,姓名from 学生2.查询全体学生的姓名,学号,所在系.select 学号,姓名,系from 学生3.查询全体学生的详细记录select * from 学生4.查询全体学生的姓名及其出生年份select 姓名,2006-年龄from 学生[意思是2008减年龄]5.查询选修了课程的学生学号select distinct学号from 选课6.查询2系全体学生的名单.select 姓名from 学生where 系=”2”7.查询所有年龄在20岁以下的学生姓名及年龄.select 姓名,年龄from 学生where 年龄<=208.查询考试成绩有不及格的学生的学号.select distinct 学号from 选课where 成绩<609.查询年龄在20~~23岁(包括20和23岁)之间的的学生的姓名,系别,年龄.select 姓名,系,年龄from 学生where 年龄between 20 and 2310.查询1系,2系,3系的学生的姓名和性别select 姓名,性别from 学生where 系别in (“1”,”2”,”3”) [in 实际上是多个or 运算符的缩写]。
我们也可以写成这样:select 姓名,性别from 学生where 系=’1’or 系=’2’or 系=’3’11.查询既不是1系,2系也不是3系的学生的姓名和性别.select 姓名,性别from 学生where 系not in (“1”,”2”,”3”)12.查询学号为s3的学生的详细情况.select * from 学生where 学号like “s3”)或者(select * from 学生where 学号=”s3”13.查询所有的姓刘的学生的姓名,学号和性别.select 姓名,学号,性别from 学生where 姓名like ‘刘%’14.查询姓”欧阳”且全名为三个字的学生的姓名.select 姓名from 学生where 姓名like “欧阳_ ”15.查询名字中第二个字为”阳”字的学生的姓名和学号.select 姓名,学号from 学生where 姓名like “ _阳%”16.某些学生选修课程后没有参加考试,所以有选课记录,但是没有考试成绩.查询缺少成绩的学生的学号和相应的课程号select 学号,课程号from 选课where 成绩is null17.查询所有有成绩的学生学号和课程号.select 学号,课程号from 选课where 成绩is not null18.(多重条件查询)查询1系年龄在20岁以下的学生姓名.select 姓名from 学生where 系=’1’and 年龄<2019.(对查询结果进行排序)查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列.select 学号,成绩,from 选课where 课程号=’3’ order by 成绩desc20.查询全体学生情况,查询结果按所在系的系号升序排列,同一个系的学生按年龄降序排列.select * from 学生order by 系, 年龄desc21.(使用集函数)查询学生总人数.select count(*) from 学生[count的功能是计数]22.查询选修了课程的学生的总人数.select count (distinct 学号) from 选课23.计算1号课程的学生的平均成绩.select avg(成绩) from 选课where 课程号=’1’24.查询选修1号课程的学生最高分数.select max(成绩) from 选课where 课程号=’1’25.求各个课程号及相应的选课人数.select 课程号,count(学号) from 选课group by 课程号26. 查询选修了3门以上课程的学生的学号.select 学号from 选课group by 学号having count(*)>3[这里先用group by 子句按学号分组,再用集函数count 对每一组计数.having 短语指定选择组的条件,只有满足条件(即元组的个数>3,表示此学生选修的课程超过3门)的组才会被选出来.where 子句与having 短语的区别在于作用的对象不同.where子句作用于基本表或视图,从中选择满足条件的元组.having 短语作用于组,从中选择满足条件的组.]27. 查询每个学生及其选修课程的情况。
数据库SQL语句练习题含答案

SQL语句练习练习5. 1. 2: 基于不断滚动的电影数据库的实例:Movie( 电影名title,拍摄年代year ,长度length, inColor ,制片厂名studioName, 制片人证书号producerC# )StarsIn(电影名movieTitle,拍摄年份movieYear ,影星名starName) MovieStar (姓名name,地址address,性别gender ,生日birthdate) MovieExec( 姓名name,地址address ,证书号cert # ,净资产netWorth ) Studio(姓名name, 地址address,总裁证书号presC# )请写出下列SQL 查询语句:* ( a) 找出米高梅制片公司(MGM studios)的地址。
SELECT address AS Studio_AddressFROM Studio WHERE name = 'MGM';( b) 找出桑德拉·布洛克( Sandra Bullock ) 的出生日期( birthdate) 。
SELECT birthdate AS Star_BirthdateFROM MovieStar WHERE name = 'Sandra Bullock';* ( c) 找出在1980 年拍摄过电影的所有影星, 或者拍摄过电影名中含有“Love”的电影的所有影星。
SELECT starName FROM StarsInWHERE movieYear = 1980 OR movieTitle LIKE '%Love%';( d) 找出净资产至少1 000 万美元的所有行政长官。
SELECT name AS Exec_NameFROM MovieExec WHERE netWorth >= 10000000;( e) 找出所有的男影星或者是住址中含有Malibu 的影星。
SQL语句练习及参考答案

SQL语句练习及参考答案SQL 语句练习1.设学⽣选课数据库有关系S (sno,sname,age,sex )、SC (sno,cno,grade )和C(cno,cname,teacher ),分别表⽰学⽣、选课和课程,sno 代表学号,sname 代表学⽣姓名,age 代表年龄,sex 代表性别,grade 代表成绩,cno 代表课程号,teacher 代表任课教师。
试完成表⽰下列查询。
(1)检索年龄⼤于21的男学⽣学号(sno)和姓名(sname)。
(2)建⽴性别只能为“男”、“⼥”的约束。
(3)创建⼀个视图v1,该视图⽤来查询学⽣的选课情况,要求包含:学⽣姓名(sname),课程名(cname),任课教师teacher 和成绩grade 。
(4)检索选修课程号为k1和k5的学⽣学号(sno)。
(5)检索全部学⽣都选修的课程的课程号(cno)和课程名(cname)。
(6)删除所有男同学的选课记录。
1.(1)select sno,snae from s where sex=’男’ and age>21 (2)alter table s add constraint c1 check sex in (‘男’,’⼥’)(3)create view v1 as select sname,cname,teacher,grade from s,sc,c where s.sno=sc.sno and/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o (4)select sno fromsc sc1 where cno=’k1’ and exists (se lect * fromsc sc2 where sc1.sno =sc2.sno and/doc/62176c89fe4733687e21aaca.html o=’k5’)(5)select cno,cnam from c where not exists (select * from s where not exists (select * from sc where/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o and s.sno=sc.sno)(6)delete from sc where sno in (select sno from s where sex=’男’)或delete sc from sc,s where s.sno=sc.sno and sex=’男’2.设图书借阅数据库有关系图书(图书编号,书名,作者,出版社,出版时间,图书类别)、读者(读者编号,姓名,读者类别)和借阅(读者编号, 图书编号, 借阅⽇期,还期)。
数据库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巩固测试题1.找出供应商名称,所在城市select 公司名称,城市from 供应商2.找出华北地区能够供应海鲜的所有供应商列表。
select 公司名称from 供应商aleft join 产品b on a.供应商ID = b.供应商IDleft join 类别c on b.类别ID = c.类别IDwhere a.地区= '华北' and c.类别名称= '海鲜'3.找出订单销售额前五的订单是经由哪家运货商运送的。
select c.订单ID,a.公司名称,round(c.单价*c.数量*(1-c.折扣),2) as 销售额from 运货商a left join 订单b on a.运货商ID = b.运货商left join 订单明细c on b.订单ID = c.订单IDorder by 销售额desc limit 54.找出按箱包装的产品名称。
select 产品名称from 产品where 单位数量like'%箱%'5.找出重庆的供应商能够供应的所有产品列表。
select 产品名称from 产品where 供应商ID in(select 供应商ID from 供应商where 城市= '重庆')6.找出雇员郑建杰所有的订单并根据订单销售额排序。
select a.订单ID,round(sum(a.单价*a.数量*(1-a.折扣)),2) as 销售额from 订单明细a left join 订单b on a.订单ID = b.订单IDleft join 雇员c on b.雇员ID = c.雇员IDwhere c.姓氏= '郑' and c.名字= '建杰'group by 订单IDorder by 销售额desc7.找出订单10284的所有产品以及订单金额,运货商。
select b.订单ID,产品名称,round(a.单价*a.数量*(1-a.折扣),2) as 订单金额,c.公司名称from 订单明细a,订单b,运货商c,产品dwhere a.订单ID = b.订单IDand b.运货商= c.运货商IDand a.产品ID = d.产品IDand a.订单ID = 102488.建立产品与订单的关联。
select * from 产品a,订单b,订单明细cwhere a.产品ID = c.产品IDand b.订单ID = c.订单ID9.计算销量前10位的订单明细,结果集返回订单ID,订单日期,公司名称,发货日期,销售额,并排序select distinct a.订单ID,b.订购日期,c.公司名称,b.发货日期,round(a.单价*a.数量*(1-a.折扣),2) as 订单金额from 订单明细a,订单b,客户c,产品dwhere a.订单ID = b.订单IDand c.客户ID = b.客户IDand a.产品ID = d.产品IDorder by a.数量desclimit 1010.按年度统计销售额select year(b.订购日期) as 年份,round(sum(a.单价*a.数量*(1-a.折扣)),2) as 销售额from 订单明细a,订单bwhere a.订单ID = b.订单IDgroup by year(b.订购日期)------以上开始时间一个半小时11.查询供应商中能够供应的产品样数最多的供应商。
select a.公司名称,count(b.产品名称) as 供应产品数量from 供应商a,产品bwhere a.供应商ID = b.供应商IDgroup by a.公司名称order by 供应产品数量desclimit 112.查询产品类别中包含的产品数量最多的类别。
select 类别名称,count(b.产品ID) as 产品数量from 类别a,产品bwhere a.类别ID = b.类别IDgroup by 类别名称order by 产品数量desclimit 113.找出所有的订单中经由哪家运货商运货次数最多。
select a.公司名称,count(b.运货商) as 运货商运货次数from 运货商a,订单bwhere a.运货商ID = b.运货商group by a.公司名称order by 运货商运货次数desclimit 114.按类别,产品分组,统计销售额。
select a.类别名称,b.产品名称,round(sum(d.单价*d.数量*(1-d.折扣)),2) as 销售额from 类别a,产品b,订单c,订单明细dwhere a.类别ID = b.类别IDand b.产品ID = d.产品IDand c.订单ID = d.订单IDgroup by a.类别名称,b.产品名称15.查询海鲜类别最大的一笔订单。
select d.类别名称,a.产品名称,b.订单ID,round(c.单价*c.数量*(1-c.折扣),2) as 销售额from 产品a,订单b,订单明细c,类别dwhere a.产品ID = c.产品IDand b.订单ID = c.订单IDand a.类别ID = d.类别IDand d.类别名称= '海鲜'order by 销售额desclimit 116.按季度统计销售量select year(b.订购日期) as 年份,QUARTER(b.订购日期) as 季度,round(sum(a.数量),2) as 销量from 订单明细a,订单bwhere a.订单ID = b.订单IDgroup by 年份,季度order by 年份,季度17.查出订单总额超出5000的所有订单,客户名称,客户所在地区。
select b.订单ID,c.公司名称,c.地区,round(sum(a.单价*a.数量*(1-a.折扣)),2) as 订单总额from 订单明细a,订单b,客户cwhere a.订单ID = b.订单IDand b.客户ID = c.客户IDgroup by b.订单ID,c.公司名称,c.地区having 订单总额> 500018.查询哪些产品的年度销售额低于2000select year(订购日期) as 年份,c.产品名称,round(sum(a.单价*a.数量*(1-a.折扣)),2) as 年度销售额from 订单明细a,订单b,产品cwhere a.订单ID = b.订单IDand a.产品ID = c.产品IDgroup by year(订购日期),c.产品名称having 年度销售额< 200019.查询所有订单ID开头为102的订单select * from 订单where 订单ID like'102%'20.查询所有“中硕贸易”,“学仁贸易”,“正人资源”,“中通”客户的订单,(要求使用in函数)select * from 订单aleft join 客户b on a.客户ID = b.客户IDwhere b.公司名称in('中硕贸易','学仁贸易','正人资源','中通')-----以上考试时间一个班销售21.查询所有订单中月份不是单数的订单。
select * from 订单where month(订购日期)%2 = 122.分别各写一个查询,得到订单中折扣为15%,20%的所有订单,并将两个查询再组成一个。
select a.* from 订单a,订单明细bwhere a.订单ID = b.订单IDand cast(b.折扣as char) in('0.15','0.2')23.找出在入职时已超过30岁的所有员工信息SELECT 雇员.* from 雇员where YEAR(雇用日期)-YEAR(出生日期)> 3024.找出所有单价大于30的产品(附加要求,产品类别,供应商作为参数,当产品类别和供应商都为空的时候,nofilter)select b.产品名称,c.类别名称,d.公司名称,b.单价from 产品b,类别c, 供应商dwhere b.类别ID = c.类别IDand b.供应商ID = d.供应商IDand b.单价> 3025.查询所有库存产品的总额,并按照总额排序select *,产品.单价*产品.库存量as 库存总额from 产品order by 库存总额desc26.检索出职务为销售代表的所有订单中,每笔订单总额低于2000的订单明细,以及相关供应商名称。
select a.*,e.公司名称,round(a.单价*a.数量*(1-a.折扣),2) as 订单总额from 订单明细a,订单b,雇员c,产品d,供应商ewhere a.订单ID = b.订单IDand b.雇员ID = c.雇员IDand a.产品ID = d.产品IDand d.供应商ID = e.供应商IDand c.职务in('销售代表')GROUP BY e.公司名称having 订单总额< 200027.检索出向艾德高科技提供产品的供应商所在的城市。
select c.公司名称as 客户名称,e.公司名称as 供应商名称,e.城市from 订单明细a,订单b,客户c,产品d,供应商ewhere a.订单ID = b.订单IDand b.客户ID = c.客户IDand a.产品ID = d.产品IDand d.供应商ID = e.供应商IDand c.公司名称= '艾德高科技'28.计算每一笔订单的发货期(从订购到发货),运货期(从发货到到货)的时长,并按照发货期从长到短的顺序进行排序。
select 订单ID,DATEDIFF(发货日期,订购日期) as发货期,DATEDIFF(到货日期,发货日期) as 运货期from 订单order by 发货期desc29.将产品表和运货商两个无关的表整合为一个表select d.*,c.*from 订单明细a,订单b,运货商c,产品dwhere a.订单ID = b.订单IDand b.运货商= c.运货商IDand a.产品ID = d.产品ID30.获取在北京工作并向福星制衣厂股份有限公司发送过订单的职工名称。
select distinct b.姓氏,b.名字,concat(b.姓氏,b.名字) as 姓名from 订单a,雇员b,客户cwhere a.雇员ID = b.雇员IDand a.客户ID = c.客户IDand b.城市= '北京'and c.公司名称= '福星制衣厂股份有限公司'。