数据库sql查询语句练习2_习题_结果(单世民)

合集下载

(完整版)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查询语句练习(解析版)

sql查询语句练习(解析版)

sql查询语句练习(解析版)BY DD表情况Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表create table Student(S# varchar2(20),Sname varchar2(10),Sage int,Ssex varchar2(2)) ;create table Course(C# varchar2(20),Cname varchar2(10),score varchar2(4)) ;create table SC(S# varchar2(20),C# varchar2(20),score varchar2(4)) ;create table Teacher(T# varchar2(20),Tname varchar2(10)) ;insert into Student(S#,Sname,Sage,Ssex) values('1001','李五','15','男');insert into Student(S#,Sname,Sage,Ssex) values('1002','张三','16','女');insert into Student(S#,Sname,Sage,Ssex) values('1003','李四','15','女');insert into Student(S#,Sname,Sage,Ssex) values('1004','陈二','14','男');insert into Student(S#,Sname,Sage,Ssex) values('1005','小四','15','男');问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;解析:(select s#,score from SC where C#='001') a//从SC中查询C#=001的学生学号和分数,并定义为a表。

数据库sql查询语句练习2习题结果单世民仓库习题.docx

数据库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结果:。

数据库sql查询语句练习4_习题_结果(单世民)图书_习题

数据库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.查询经济系是否还清所有图书。

SQL查询习题及答案

SQL查询习题及答案

36.设教学用的四个基本表(S,C,T,SC)(2)查询年龄大于23岁的女同学的学号和姓名select 姓名,学号from swhere 性别='女' and 年龄>23(3)查询至少选修了刘老师所讲授课程中的一门课程的女同学姓名select s.姓名from s,scwhere s.性别='女'and s.学号=sc.学号and sc.课程编号in(select c.课程编号from c,twhere c.教师编号=t.教师编号and t.姓名='刘%')(4)查询至少选修了2门课程的学生学号select sc.学号from scgroup by 学号having count(课程编号)>2(5)查询全部学生都选修的课程号与课程名select c.课程编号,c.课程名称from c,scwhere sc.课程编号=c.课程编号and sc.学号=(select distinct s.学号from s)(6)计算机系每个教师讲授的课程号select t.教师编号,课程编号from c,twhere t.所在系='计算机系(7)查询没有选修过任何一门课程的学生的学号select s.学号from swhere s.学号not in(select distinct sc.学号from sc)(10)统计个系教师的人数select count (教师编号)from tgroup by 所在系(11)统计出教师人数超过10人的系的名称select t.所在系from tgroup by 所在系having count(教师编号)>10(12)在选课表SC中查询成绩为NULL的学生的学号和课程号select 学号课程编号from scwhere 成绩='NULL'(13)姓王的同学的年龄、姓名、选课名称、成绩select 年龄,姓名,课程名称,成绩from s,c,scwhere s.学号=sc.学号and c.课程编号=sc.课程编号and s.姓名='王%'(14)查询年龄大于女同学平均年龄的男同学姓名和年龄select 姓名,年龄from swhere 性别='男' and 年龄>(select avg(年龄)from swhere 性别='女')37.在数据库{USER、ORDER}中,用户需要查询“所有于2009年5月25日下订单的女顾客姓名”。

数据库sql查询语句上机练习1_习题_结果(单世民)

数据库sql查询语句上机练习1_习题_结果(单世民)

习题1请根据给出的数据库表结构来回答相应问题:DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13));EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE, SAL FLOAT, COMM FLOAT, DEPTNO INT);BONUS (ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT); SALGRADE ( GRADE INT, LOSAL INT, HISAL INT);其中表中包含如下数据:DEPT表:EMP表:SALGRADE表:BONUS表:无数据根据上面描述完成下面问题:(注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL1.写出上述表的建表语句。

此外,在DEPT上创建名为”PK_DEPT”的主键约束,在EMP表上创建名为”PK_EMP”的主键约束以及指向表DEPT 的外键约束”FK_DEPTNO”。

命令:Create table DEPT(DEPTNO INT NOT NULL,DNAME VARCHAR(14),LOC VARCHAR(13));Alter table DEPTadd constraint PK_DEPT PRIMARY KEY (DEPTNO);create table EMP(EMPNO INT NOT NULL,ENAME VARCHAR(10),JOB VARCHAR(9), MGR INT,HIREDATE DATE,SAL FLOAT,COMM FLOAT,DEPTNO INT);alter table EMPadd constraint PK_EMP PRIMARY KEY (EMPNO);alter table EMPadd constraint FK_DEPTNO foreign key(DEPTNO)references DEPT(DEPTNO); DML2.给出相应的INSERT语句来完成题中给出数据的插入。

SQL语句练习及参考答案(2021年整理精品文档)

SQL语句练习及参考答案(2021年整理精品文档)

SQL语句练习及参考答案编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(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 。

SqlServer数据库查询语句练习题含答案

SqlServer数据库查询语句练习题含答案

SqlServer数据库查询语句练习题含答案第三章综合练习1.创建⼀个数据库,数据库名字edu,数据⽂件逻辑名字edu_data,初始⼤⼩10M,最⼤为1024M,增长⽐例为每次1M;⽇志⽂件逻辑名字为edu_log,初始⼤⼩5M,最⼤为100M,按10%⽐例增长,这些⽂件都存储到E盘根⽬录下,并且物理⽂件名与逻辑⽂件名全部相同。

CREATE DATABASE eduON PRIMARY( NAME = N'educ_data', FILENAME = N'e:\educ_data.mdf' , SIZE = 10240KB , MAXSIZE = 1024M , FILEGROWTH = 1M) LOG ON( NAME = N'educ_log', FILENAME = N'e:\educ_log.ldf' , SIZE = 5M , MAXSIZE = 100M , FILEGROWTH = 10% )2.在edu数据库⾥创建⼀个架构,架构名字为⾃⼰名字的汉语拼⾳。

create schema zhangsan; --⾃⼰名字的汉语拼⾳3.在创建的架构中,创建如下表:表1 student表(学⽣信息表)表3 student_course表(学⽣选课成绩表)表4 teacher表(教师信息表)表6 department表(院系息表)创建表的时候必须建⽴主、外键关系。

create table zhangsan.department( dno char(6) primary key,dname char(8) not null,dhome varchar(40),dzipcode char(6),dtel varchar(40))create table zhangsan.student(sno char(8) not null primary key, sname char(8) not null,sex char(2),[native] char(20),birthday datetime,pno char(4),dno char(6),classno char(4),entime datetime,home varchar(40),tel varchar(40)foreign key(dno) references department(dno) )create table zhangsan.course(cno char(10) primary key,cname char(20) not null,cpno char(10),experiment tinyint,lecture tinyint,semester tinyint,credit tinyint,foreign key (cpno) references course(cno))create table zhangsan.student_course(sno char(8),cno char(10),score tinyint,primary key(sno,cno),foreign key(sno) references student(sno), foreign key(cno) references course(cno) )create table zhangsan.teacher(tno char(8) primary key,tname char(8) not null,sex char(2),birthday datetime,dno char(6),pno tinyint,home varchar(40),zipcode char(6),tel varchar(40),email varchar(40),foreign key(dno) references department(dno))create table zhangsan.teacher_course(tcid smallint primary key,tno char(8),classno char(4),cno char(10) not null,semester char(6),schoolyear char(10),classtime varchar(40),classroom varchar(40),weektime tinyint,foreign key(tno) references teacher(tno),foreign key(cno) references course(cno))4.建⽴、删除索引(1)在student表的sname列建⽴唯⼀降序索引;create unique index IX_STUDENT_SNAME on zhangsan.student(sname desc)(2)在course表的credit列上建⽴升序索引;create index IX_COURSE_CREDIT on zhangsan.course(credit)(3)在student_course表的sno列上建⽴聚集索引。

数据库中sql查询语句习题含答案

数据库中sql查询语句习题含答案

查询问题:设教学数据库Education 有三个关系: 学生关系S(SNO,SNAME,AGE,SEX,SDEPT);学习关系SC(SNO,CNO,GRADE);课程关系C(CNO,CNAME,CDEPT,TNAME) (1)检索计算机系的全体学生的学号,姓名与性别;(2)检索学习课程号为C2的学生学号与姓名;(3)检索选修课程名为“DS ”的学生学号与姓名;(4)检索选修课程号为C2或C4的学生学号;(5)检索至少选修课程号为C2与C4的学生学号;(6)检索不学C2课的学生姓名与年龄; (7)检索学习全部课程的学生姓名;(8)查询所学课程包含学生S3所学课程的学生学号。

(1)检索计算机系的全体学生的学号,姓名与性别; SELECT Sno,Sname,Sex FROM SWHERE Sdept =’CS ’;(2)检索学习课程号为C2的学生学号与姓名;(3)检索选修课程名为“DS ”的学生学号与姓名本查询涉及到学号、姓名与课程名三个属性,分别存放在S 与C 表中,但S 与C 表没有直接联系,必须通过SC 表建立它们二者的联系。

C → SC → S基本思路:(1)首先在C 表中找出“DS ”课程的课程号Cno;(2)然后在SC 表中找出Cno 等于第一步给出的Cno 集合中的某个元素Cno;(3)最后在S 关系中选出Sno 等于第二步中Sno 集合中某个元素的元组,取出Sno 与Sname 送入结果表列。

SELECT Sno,Sname FROM SWHERE Sno IN (SELECT Sno FROM SCWHERE Cno IN (SELECT Cno FROM CWHERE Cname=‘DS ’)); (4)检索选修课程号为C2或C4的学生学号; SELECT Sno FROM SC WHERE Cno=‘C2’ OR Cno=‘C4’;(5)检索至少选修课程号为C2与C4的学生学号; SELECT SnoFROM SC X,SC Y WHERE X 、Sno=Y 、Sno AND X 、Cno=‘C2’ AND Y 、Cno=‘C4’ ; (6)检索不学C2课的学生姓名与年龄;(7)检索学习全部课程的学生姓名; 在表S 中找学生,要求这个学生学了全部课程。

(精品仓库管理)数据库sql查询语句练习2_习题_结果(单世民)仓库_习题

(精品仓库管理)数据库sql查询语句练习2_习题_结果(单世民)仓库_习题

(精品仓库管理)数据库sql查询语句练习2_习题_结果(单世民)仓库_习题数据库结构如下:仓库(仓库号,城市,面积)订购单(职工号,供应商号,订购单号,订购日期)供应商(供应商号,供应商名,地址)职工(仓库号,职工号,工资)具体数据如下:仓库表:仓库号,城市,面积WH1,北京,370WH2,上海,500WH3,广州,200WH4,武汉,400订购单表:职工号,供应商号,订购单号,订购日期E3,S7,OR67,06/23/01E1,S4,OR73,07/28/01E5,S4,OR76,05/25/01E6,S6,OR77,05/26/01E3,S4,OR79,06/13/01E1,S2,OR80,08/29/01E3,S3,OR90,09/01/01E3,S3,OR91,07/13/01供应商表:供应商号,供应商名,地址S2,名硕电子公司,苏州S3,振华电子厂,西安S4,华通电子公司,北京S6,607厂,郑州S7,爱华电子厂,北京职工表:仓库号,职工号,工资WH2,E1,1220WH1,E3,1210WH2,E4,1250WH3,E5,1230WH1,E6,1250使用SQL语句完成:DDL1.写出创建上述表的语句命令:createtable仓库(仓库号varchar(8)primarykey,城市varchar(8),面积int);createtable订购单(订购单号varchar(8)primarykey,职工号varchar(8),供应商号varchar(8),订购日期nchar(8))createtable供应商(供应商号varchar(8)primarykey,供应商名varchar(18),地址varchar(8)) createtable职工(职工号varchar(8)primarykey,仓库号varchar(8),工资int)DML2.给出插入上述数据的insert语句命令:insertinto仓库values('WH1','北京',370)insertinto仓库values('WH2','上海',500)insertinto仓库values('WH3','广州',200)insertinto仓库values('WH4','武汉',400)insertinto订购单values('OR67','E3','S7','06/23/01')insertinto订购单values('OR73','E1','S4','07/28/01')insertinto订购单values('OR76','E5','S4','05/25/01')insertinto订购单values('OR77','E6','S6','05/26/01')insertinto订购单values('OR79','E3','S4','06/13/01')insertinto订购单values('OR80','E1','S2','08/29/01')insertinto订购单values('OR90','E3','S3','09/01/01')insertinto订购单values('OR91','E3','S7','07/13/01')insertinto供应商values('S2','名硕电子公司','苏州')insertinto供应商values('S3','振华电子厂','西安')insertinto供应商values('S4','华通电子公司','北京')insertinto供应商values('S6','607厂','郑州')insertinto供应商values('S7','爱华电子厂','北京')insertinto职工values('E1','WH2',1220)insertinto职工values('E3','WH1',1210)insertinto职工values('E4','WH2',1250)insertinto职工values('E5','WH3',1230)insertinto职工values('E6','WH1',1250)单表查询3.检索职工关系中的所有信息命令:select*from职工结果:4.检索供应商关系中的所有信息命令:select*from供应商结果:5.检索六月之后的所有订单命令:SELECT*FROM订购单WHEREDATEDIFF(MONTH,'2001-06-0100: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面积>400unionselect城市from仓库where仓库号='WH2'and面积>400结果:9.找出仓库面积在400到600的仓库命令:select*from仓库where面积between400and600结果:10.找出名中包含“厂”的所有供应商的名命令:select供应商名from供应商where供应商名like'%厂%'结果:11.找出不在西安的供应商命令:select*from供应商exceptselect*from供应商where地址='西安'或者:select*from供应商wherenot地址='西安'结果:12.找出不在北京的仓库命令:select*from仓库exceptselect*from仓库where城市='北京'结果:13.按工资降序排列出所有职工的信息命令:select*from职工orderby工资desc结果:14.先按仓库号升序排列,再按工资降序排列命令:select*from职工orderby仓库号asc,工资desc结果:15.在仓库表中统计一下有几个仓库命令:selectCOUNT(*)仓库数from仓库结果:16.在职工表中统计一下有几个仓库命令:selectCOUNT(distinct仓库号)仓库数from职工结果:17.求总的仓库面积命令:selectsum(面积)总面积from仓库结果:聚合查询18.每个职工的订单数命令:select职工号,count(*)订单数from订购单groupby职工号结果:19.订单数大于3的职工命令:select职工号,COUNT(*)订单数from订购单groupby职工号havingCOUNT(*)>3结果:多表查询20.找出在面积大于400的仓库中工作的职工命令:select职工号from职工join仓库on职工.仓库号=仓库.仓库号where面积>400结果:21.找出在北京工作的职工和他们的工资情况命令:select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号where仓库.城市='北京'结果:22.找出工资大于1215的职工和他们所在的城市命令:select职工号,城市from职工join仓库on职工.仓库号=仓库.仓库号where工资>1215结果:子查询23.哪些城市至少有一个订单(从仓库角度考虑)命令:selectdistinct城市from订购单join职工on订购单.职工号=职工.职工号join仓库on职工.仓库号=仓库.仓库号结果:24.找出没有任何订单的城市命令:select城市from仓库exceptselectdistinct城市from订购单join职工on订购单.职工号=职工.职工号join仓库on职工.仓库号=仓库.仓库号结果:25.找出和E4有同样工资的所有职工命令:selectb.职工号,b.仓库号,b.工资from职工ajoin职工bona.工资=b.工资wherea.职工号='E4'结果:26.找出仓库面积大于400的仓库的所有职工命令:select职工.职工号,职工.仓库号,职工.工资from职工join仓库on职工.仓库号=仓库.仓库号where面积>400结果:27.找出供应商在西安的职工和他们的工资情况命令:select职工.职工号,工资from供应商join订购单on供应商.供应商号=订购单.供应商号join职工on订购单.职工号=职工.职工号where地址='西安'结果:28.找出不在北京仓库里工作的职工命令:select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号exceptselect职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号where城市='北京'结果:29.找出在北京仓库里工作的职工命令:select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号where城市='北京'结果:30.求广州和上海仓库职工的总工资命令:selectSUM(工资)总工资from职工join仓库on职工.仓库号=仓库.仓库号where城市='广州'or 城市='上海'结果:31.求所有职工工资都大于1210的仓库的平均面积命令:selectavg(面积)平均面积from(select仓库号from职工exceptselect仓库号from职工where 工资<1210)ajoin仓库ona.仓库号=仓库.仓库号结果:32.求上海仓库中职工的最高工资命令:selectMAX(工资)最高工资from职工join仓库on职工.仓库号=仓库.仓库号where城市='上海'结果:33.订单数大于或等于2的职工的工资命令:selecta.工资from(select职工.职工号,工资from职工join订购单on职工.职工号=订购单.职工号groupby职工.职工号,工资havingCOUNT(*)>=2)a结果:。

sql查询举例(含答案)(2021年整理精品文档)

sql查询举例(含答案)(2021年整理精品文档)

sql查询举例(含答案)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(sql查询举例(含答案))的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为sql查询举例(含答案)的全部内容。

查询练习一、简单查询(无条件查询):1、查询“学生档案”表中所有的记录SELECT * FORM 学生档案2、查询“学生档案”表中全体学生的姓名、学号、家庭地址SELECT 姓名,学号,家庭地址 FROM 学生档案二、有条件查询1、查询“成绩管理”表中语文成绩在80分以下的学生的学号。

SELECT 学号 FROM 成绩管理 WHERE 语文<802、查询“成绩管理”表中语文成绩在80分到90分之间的学生的学号,语文,数学,英语成绩。

SELECT 学号,语文,数学,英语FROM成绩管理WHERE 语文 >= 80 AND 语文<=90==(语文 BETWEEN 80 AND 90)3、查询“成绩管理”表中数学成绩不在75分到85分之间的学生的学号,语文,数学,英语成绩.SELECT 学号,语文,数学,英语FROM 成绩管理WHERE 数学 NOT BETWEEN 75 AND 854、查询“学生档案”表中李成刚,刘艺梅,郑莉三名学生的信息。

SELECT *FROM 学生档案WHERE 姓名 IN (“李成刚”,“刘艺梅",“郑莉”)==(姓名 =“李成刚” OR 姓名=“刘艺梅” OR 姓名=“郑莉”)5、查询“学生档案"表中所有姓张的学生的姓名、学号和性别SELECT 姓名,学号,性别 FROM学生档案WHERE 姓名 LIKE “张*"6、查询“学生档案”表中所有姓张且全名为三个汉字的学生的姓名SELECT 姓名FROM 学生档案WHERE姓名 LIKE “张??"7、查询“学生档案"表中第二个字符为“建"字的学生的学号和姓名SELECT 学号,姓名FROM 学生档案WHERE姓名 LIKE “?建*”8、查询“学生档案”表中家庭住址为“人民路"和“育才路"的学生学号,姓名,性别和家庭住址.SELECT 学号,姓名,性别,家庭住址FROM 学生档案WHERE家庭住址 LIKE “人民路*" OR家庭住址 LIKE “育才路*"9、查询“学生档案”表中所有团员的学生班级和姓名.SELECT 班级,姓名FROM 学生档案WHERE是否团员=yes10、查询“学生档案”表中1995年4月1日以前出生,女同学或团员的学生记录。

sql查询题目及答案

sql查询题目及答案

数据库中有如下三个表:学生表(学号id,姓名name,性别sex,系部depart,年龄age)8个学生记录选课表(学号id,课程号cid,成绩grade) 12门课程课程表(课程号cid,课程名cname,学分Ccredit) 6门课程学生-课程模式 S-T :学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade)1.从学生表中查询所有同学的所有信息select*from学生表2.从学生表中查询所有学生的信息,并分别赋予一个别名select学号as xuehao,姓名as xingming,性别as xingbie,系部as xibu,年龄as nianling from学生表3.从学生表中查询姓名是Allen的学生的信息select*from学生表where姓名='Allen'4.从学生表中查询学号在1101到1199之间的所有学生的信息select*from学生表where学号between 1101 and 11995.从学生表中查询年龄小于18和大于20的所有学生的学号和姓名select学号,姓名from学生表where年龄<18 or年龄>206.从学生表中查询计算机系年龄小于20的所有学生的信息select*from学生表where系部='computer'and年龄<207.从学生表中查询姓名以A开头的学生的信息select*from学生表where姓名LIKE'A%'8.从学生表中查询姓名的第三个字符是A的学生的学号和姓名select学号,姓名from学生表where姓名LIKE'__A%'9.从学生表中查询姓名中包含“llen”的学生的学号和姓名select学号,姓名from学生表where姓名LIKE'%llen%'10.从学生表中查询姓名中包含“llen”且姓名只有5个字符的学生的学号和姓名select学号,姓名from学生表where姓名LIKE'%llen%'and len(姓名)=511.从学生表中查询有年龄信息的学生的学号和姓名select学号,姓名from学生表where年龄is not null12.从学生表中查询最大年龄和最小年龄select max(年龄)最大年龄,min(年龄)最小年龄from学生表13.从学生表中查询所有学生的平均年龄select avg(年龄)平均年龄from学生表14.从学生表中查询学校所有系的名字select distinct系部from学生表15.从学生表中查询学校共有多少个系select count(distinct系部)系部总和from学生表16.从选课表中查询所有学生的选课情况select distinct课程号from选课表17.从选课表中查询选修课程号为C01课程的学生的学号select学号from选课表where课程号='C01'18.从选课表中查询所有没有选C02课程的学生的学号select distinct学号from选课表where课程号!='C02'19.从选课表中查询有选修C01或C02课程的学生的学号select distinct学号from选课表where课程号='C01' or 课程号='C02'20.从选课表中查询学号为1101的学生的选课情况select课程号from选课表where学号='1101'21.从选课表中查询所有选课信息,即学号、课程号、成绩,并给成绩加8分select学号,课程号,成绩=成绩+8 from选课表22.从选课表中查询学号为1101的学生的所有选修课程成绩的总和select sum(成绩)成绩总和from选课表where学号='1101'23.从选课表中查询选修课程好为C02所有学生的成绩平均值并赋予“平均成绩24.”列名select avg(成绩)平均成绩from选课表where课程号='C02'25.从选课表中查询选修课程号C02且该门课程考试及格的学生的学号select学号from选课表where课程号='C02'and成绩>=6026.从选课表中查询所有无考试成绩的学生的学号和课程的课程号select学号,课程号from选课表where成绩is null27.从选课表中查询选修了课程号以C开头的学生的学号和所选课程的课程号select学号,课程号from选课表where课程号LIKE'C%'28.从选课表中查询选修了课程号以C、D或E开头学生的学号和所选课程的课程号select学号,课程号from选课表where课程号LIKE'[CDE]%'29.从选课表中查询选修了课程号中包含DB的学生的学号和课程号select学号,课程号from选课表where课程号LIKE'%DB%'30.从选课表中查询选修了课程的学生的学号select distinct学号from选课表where课程号is not null31.从选课表中查询选修了课程的学生的人数select count(distinct学号)总人数from选课表31.找出姓名以D开头的学生姓名和所有成绩select学生表.姓名,选课表.成绩from学生表join选课表on学生表.学号=选课表.学号where学生表.姓名LIKE'D%'32.查找的所有学生姓名与学号,结果按学号降序排序select 学号,姓名from学生表order BY学号DESC33.查找成绩介于80和90之间的学生姓名,结果按成绩和姓名升序排序select学生表.姓名from选课表join学生表on学生表.学号=选课表.学号where选课表.成绩between 80 and 90order BY选课表.成绩,学生表.姓名34.查找english系的所有学生姓名,结果按成绩和姓名升序排序select学生表.姓名,学生表.学号,选课表.成绩from选课表join学生表on学生表.学号=选课表.学号where学生表.系部='english'35.查找同时选修了C01及C02两门课程的学生姓名及学号select学生表.姓名,A.学号from选课表as A join选课表as B on A.学号=B.学号join学生表on学生表.学号=A.学号where A.课程号='C01'and B.课程号='C02'36.查找所有选修了课程的学生姓名及所在系别select distinct学生表.姓名,学生表.系部from学生表join选课表on学生表.学号=选课表.学号where选课表.课程号is not null37.查找成绩高于90分的学生姓名、学号及系别select学生表.姓名,学生表.学号,学生表.系部from学生表join选课表on学生表.学号=选课表.学号where选课表.成绩>=9038.找出选修了C01课程的学生姓名select学生表.姓名from学生表join选课表on学生表.学号=选课表.学号where选课表.课程号='C01'39.查询English系学生人数select count(*) English 系总人数from学生表where系部='English'40.分别查询各系的学生人数select系部,count(*)人数from学生表group by系部41.创建一个角色uus.CREATE ROLE uus;42.给uus授权SELECT,UPDATE,INSERT .GRANT SELECT,UPDATE,INSERTON StuTO uus43.增加一个登录,登录名为tp,密码为123,默认的数据库为stuEXEC sp_addlogin 'tp', '123', 'stu'44.将登录tp增加为test库的一个用户,并连接到test库。

SQL查询及答案

SQL查询及答案

SQL查询及答案一、单表查询练习1、查询<学生信息表>,查询学生"张三"的全部基本信息Select *from A_studentinfowhere sname='张三'2、查询<学生信息表>,查询学生"张三"和”李四”的基本信息Select *from A_studentinfowhere sname='张三'or sname='李四'3、查询<学生信息表>,查询姓"张"学生的基本信息Select *from A_studentinfowhere sname like '张%'4、查询<学生信息表>,查询姓名中含有"四"字的学生的基本信息Select *from A_studentinfowhere sname like '%四%'5、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。

select *from A_studentinfowhere sname like '李_强'6、查询<学生信息表>,查询姓"张"或者姓”李”的学生的基本信息。

Select *from A_studentinfowhere sname like '张%'or sname like '李%'7、查询<学生信息表>,查询姓"张"并且"所属省份"是"北京"的学生信息Select *from A_studentinfowhere sname like '张%'and province='北京'8、查询<学生信息表>,查询"所属省份"是"北京"、”新疆”、”山东”或者"上海"的学生的信息Select *from A_studentinfowhere province in ('北京','上海','新疆','山东')9、查询<学生信息表>,查询姓"张",但是"所属省份"不是"北京"的学生信息Select *from A_studentinfowhere sname like '张%'and province !='北京'10、查询<学生信息表>,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序select *from A_studentinfoorder by sex,province,class11、查询<学生信息表>,查询现有学生都来自于哪些不同的省份select distinct province as 省份from A_studentinfo12、查询<学生选修信息表>,查询没有填写成绩的学生的学号、课程号和成绩Select *from A_studentcoursewhere score is null13、查询<学生选修信息表>,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序Select *from A_studentcoursewhere score is not nullorder by score desc二、聚合函数练习1、统计<学生信息表>,统计共有多少个学生Select count (*) as 学生数量from A_studentinfo2、统计<学生信息表>,统计年龄大于20岁的学生有多少个Select count(*) as 学生数量from A_studentinfowhere (2021-yearofbirth)>203、统计<学生信息表>,统计入学时间在1980年至1982年的学生人数select count(*) as 学生数量from A_studentinfowhere enrollment between '1998-01-01' and '2021-12-30'对比以下查询方式,看看有何不同,为什么?select count(*) as 学生数量from A_studentinfowhere enrollment between '1998' and '2021'。

SQL查询语句练习及结果

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 订单 a left 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 订单明细 a left 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 地区。

数据库sql查询语句练习2_习题_结果(单世民)

数据库sql查询语句练习2_习题_结果(单世民)

数据库sql查询语句练习2_习题_结果(单世民)现在有一教学管理系统,具体的关系模式如下:Student(no,name,sex,birthday,class)Teacher(no,name,sex,birthday,prof,depart)Course(cno,cname,tno)Score(no,cno,degree)其中表中包含如下数据:Course表:Score表:Student表:Teacher表:根据上面描述完成下面问题:(注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL1.写出上述表的建表语句。

命令:create table Student(no int,name varchar(14),sex varchar(2),birthday date,class int);create table Teacher(no int,name varchar(14),sex varchar(2),birthday date,prof varchar(10),depart varchar(10));create table Course(cno varchar(8),cname varchar(14),tno int);create table Score(no int,cno varchar(8),degree int);DML2.给出相应的INSERT语句来完成题中给出数据的插入。

命令:insert into Student values(5001,'李勇','男','1987-7-22',95001);insert into Student values(5002,'刘晨','女','1987-11-15',95002); insert into Student values(5003,'王敏','女','1987-10-5',95001); insert into Student values(5004,'李好尚','男','1987-9-25',95003); insert into Student values(5005,'李军','男','1987-7-17',95004); insert into Student values(5006,'范新位','女','1987-6-18',95005); insert into Student values(5007,'张霞东','女','1987-8-29',95006); insert into Student values(5008,'赵薇','男','1987-6-15',95007); insert into Student values(5009,'钱民将','女','1987-6-23',95008); insert into Student values(5010,'孙俪','女','1987-9-24',95002); insert into Student values(108,'赵里','男','1987-6-15',95007);insert into Student values(109,'丘处机','男','1987-6-23',95008);insert into Student values(107,'杨康','男','1987-9-24',95001);insert into Teacher values(1,'李卫','男','1957-11-5','教授','电子工程系'); insert into Teacher values(2,'刘备','男','1967-10-9','副教授','math'); insert into Teacher values(3,'关羽','男','1977-9-20','讲师','sc'); insert into Teacher values(4,'李修','男','1957-6-25','教授','elec'); insert into Teacher values(5,'诸葛亮','男','1977-6-15','教授','计算机系'); insert into T eacher values(6,'殷素素','女','1967-1-5','副教授','sc'); insert into Teacher values(7,'周芷若','女','1947-2-23','教授','sc'); insert into Teacher values(8,'赵云','男','1980-6-13','副教授','计算机系'); insert into T eacher values(9,'张敏','女','1985-5-5','助教','sc'); insert into T eacher values(10,'黄蓉','女','1967-3-22','副教授','sc');insert into Teacher values(11,'张三','男','1967-3-22','副教授','sc');insert into Course values('3-101','数据库',1);insert into Course values('5-102','数学',2);insert into Course values('3-103','信息系统',3);insert into Course values('3-104','操作系统',4);insert into Course values('3-105','数据结构',5);insert into Course values('3-106','数据处理',5);insert into Course values('4-107','pascal语言',6);insert into Course values('4-108','C++',7);insert into Course values('4-109','java',8);insert into Course values('3-245','数据挖掘',10);insert into Course values('3-111','软件工程',11);insert into Score values(5001,'3-105',69);insert into Score values(5001,'5-102',55);insert into Score values(5003,'4-108',85);insert into Score values(5004,'3-105',77);insert into Score values(5005,'3-245',100);insert into Score values(5006,'3-105',53);insert into Score values(5003,'4-109',45);insert into Score values(5008,'3-105',98);insert into Score values(5004,'4-109',68);insert into Score values(5010,'3-105',88);insert into Score values(5003,'3-105',98);insert into Score values(5005,'4-109',68);insert into Score values(5002,'3-105',88);insert into Score values(107,'3-105',98);insert into Score values(108,'4-109',68);insert into Score values(109,'3-105',88);insert into Score values(109,'4-109',80);insert into Score values(107,'3-111',88);insert into Score values(5003,'3-111',80);单表查询3.以class降序输出student的所有记录(student表全部属性)命令:select*from Student order by class desc;4.列出教师所在的单位depart(不重复)。

SQL语句练习及标准答案

SQL语句练习及标准答案

SQL语句练习及标准答案SQL语句练习及答案————————————————————————————————作者:————————————————————————————————日期:sql语句练习题1数据库有如下四个表格:student(sno,sname,sage,ssex,sdpt) 学生表系表(dptno,dname)course(cno,cname, gradet, tno) 课程表sc(sno,cno,score) 成绩表teacher(tno,tname) 教师表要求:完成以下操作1.查询姓"欧阳"且全名为三个汉字的学生的姓名。

select sname from student where sname like “欧阳__?;2.查询名字中第2个字为"阳"字的学生的姓名和学号。

select sname,sno from student where sname like '_阳%';3.查询所有不姓刘的学生姓名。

select sname,sno,ssexfrom studentwhere sname not like “刘%”;4.查询db_design课程的课程号和学分。

select cno,ccredit from coursewhere cname like 'db_design'5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。

select * from course where cname like 'db%i_ _';6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。

查询缺少成绩的学生的学号和相应的课程号。

select sno,cno from sc where grade is null;7.查所有有成绩的学生学号和课程号。

select sno,cno from sc where grade is not null;8.查询计算机系年龄在20岁以下的学生姓名。

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

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

SQL查询语句巩固及练习结果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.订单ID left join 雇员c on b.雇员ID = c.雇员IDwhere c.姓⽒= '郑' and c.名字= '建杰'group by 订单IDorder by 销售额desc7.找出订单10284的所有产品以及订单⾦额,运货商。

数据库查询结果显示 练习题

数据库查询结果显示 练习题

数据库查询结果显示练习题1在SQL查询语句中,若结果中需要显示一个关系表的所有属性,则可以用()来简写。

•A.星号(*)•B.百分号(%)•C.井号(#)•D.下划线(_)正确答案:A你选对了2SQL的查询语句中,重命名目标列的方式不包括()。

•A.在重命名对象后用AS表示出新的名称•B.在重命名对象后空格加新的名称•C.在重命名对象前用等号表示,等号前表示新的名称•D.在重命名后以括号形式表示新的名称3在教学视频中的关系表sc中有20行元组,下列哪个表达式的值可能不是20?()•A.count(*)•B.count(sno)•C.count(cno)•D.count(distinct sno)正确答案:D你选对了4SQL语言的一次查询的结果是一个( )。

•A.数据项•B.记录•C.元组•D.集合5关系代数中的投影操作对应SELECT语句中的( ) 子句的功能。

•A.SELECT•B.WHERE•C.FROM•D.GROUP BY正确答案:A你选对了6可以在SQL查询时去掉重复元组的短语是( )。

•A.ORDER BY•B.DESC•C.GROUP BY•D.DISTINCT正确答案:D你选对了7某查询语句中有“%田_”语句,则查询结果不可能包含的是( )。

•A.张田•B.陈力田•C.田华•D.田力华正确答案:D你选对了8下列聚合函数中,计算不忽略空值(NULL) 的是()。

•A.SUM (列名)•B.MAX (列名)•C.COUNT ( * )•D.AVG (列名)正确答案:C你选对了9在SQL语言的SELECT语句中,用于对查询结果元组进行排序的是()子句。

•A.GROUP BY•B.DISTINCT•C.ORDER BY•D.WHERE正确答案:C你选对了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

现在有一教学管理系统,具体的关系模式如下:Student (no, name, sex, birthday, class)Teacher (no, name, sex, birthday, prof, depart) Course (cno, cname, tno)Score (no, cno, degree)其中表中包含如下数据:Course表:Score表:Student表:Teacher表:根据上面描述完成下面问题:(注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL1.写出上述表的建表语句。

2.给出相应的INSERT语句来完成题中给出数据的插入。

单表查询3.以class降序输出student的所有记录(student表全部属性)命令:select*from Student order by class desc;4.列出教师所在的单位depart(不重复)。

命令:select distinct depart from Teacher;5.列出student表中所有记录的name、sex和class列命令:select name,sex,class from Student;6.输出student中不姓王的同学的姓名。

命令:select name from Student except select name from Student where name like'王%';或select name from Student where name not like'王%';7.输出成绩为85或86或88或在60-80之间的记录(no,cno,degree)命令:select no,cno,DEGREE from Score where degree=85 or degree=86 or degree=88 or degree between 60 and 80;8.输出班级为95001或性别为‘女’的同学(student表全部属性)命令:select*from Student where class=95001 or sex='女';9.以cno升序、degree降序输出score的所有记录。

(score表全部属性)命令:select*from Score order by cno asc,degree desc;10.输出男生人数及这些男生分布在多少个班级中命令:select COUNT(*),count(distinct class)from Student where sex='男';11.列出存在有85分以上成绩的课程编号。

命令:select distinct cno from Score where degree>85;12.输出95001班级的学生人数命令:select COUNT(*)from Student where class=95001;13.输出‘3-105’号课程的平均分命令:select avg(cast(degree as float))from Score where cno='3-105';14.输出student中最大和最小的birthday日期值命令:select MAX(birthday),MIN(birthday)from Student;15.显示95001和95004班全体学生的全部个人信息(不包括选课)。

(student表全部属性)命令:select*from Student where class=95001 or class=95004;聚合查询16.输出至少有5个同学选修的并以3开头的课程的课程号,课程平均分,课程最高分,课程最低分。

命令:select cno,avg(cast(degree as float)),MAX(degree),MIN(degree) from Score where cno like'3%'group by cno having COUNT(cno)>5;或者:select cno,AVG(cast(DEGREE as float)),MAX(degree),MIN(DEGREE)from Score group by cno having COUNT(cno)>=5 and cno like'3%'17.输出所选修课程中最低分大于70分且最高分小于90分的学生学号及学生姓名命令:select Student.no,name from Student join Score on Student.no=Score.no group by Student.no,name having MAX(Score.degree)<90 and MIN(Score.degree)>70;18.显示所教课程选修人数多于5人的教师姓名命令:select name from Teacher join Course on Teacher.no=Course.tno where o in(select cno from Score group by cno having COUNT(o)>5);19.输出’95001’班级所选课程的课程号和平均分命令:select cno,avg(cast(degree as float))from Score where no in(select no from Student where class=95001)group by cno;或者:select cno,AVG(cast(degree as float))from Score join Student on Score.no=Student.no group by cno,class having class='95001'20.输出至少有两名男同学的班级编号。

命令:select class from Student where sex='男'group by class having COUNT(class)>=2;或者:select a.class from (select*from Student where sex='男')a group by a.class having COUNT(a.class)>=2多表查询21.列出与108号同学同年出生的所有学生的学号、姓名和生日命令:select no,name,birthday from Student where year(birthday) =(select year(birthday)from Student where no=108);或者:select b.no,,b.birthday from Student a join Student b on datediff(YEAR,a.birthday,b.birthday)=0 and a.no='108'22.列出存在有85分以上成绩的课程名称命令:select cname from Course where cno in(select distinct cno from Score where degree>85);或select distinct cname from Course join Score on o=o where degree>85;23.列出“计算机系”教师所教课程的成绩表(课程编号,课程名,学生名,成绩)。

命令:select o,cname,,DEGREE from Teacher join Course on Teacher.no=Course.tno join Score on o=o join Student on Score.no=Student.no where Teacher.depart='计算机系';24.列出所有可能的“计算机系”与“电子工程系”不同职称的教师配对信息,要求输出每个老师的姓名(name)和(职称)命令:select ,a.prof,,b.prof from (select name,prof,depart from Teacher where depart='计算机系'or depart='电子工程系')a join(select name,prof,depart from Teacher where depart='电子工程系'or depart='计算机系')b on not a.prof=b.prof and nota.depart=b.depart;25.列出所有处于不同班级中,但具有相同生日的学生,要求输出每个学生的学号和姓名。

(提示:使用datediff函数,具体用法可以参考:/blog/588844)命令:select a.no,,b.no, from Student a join Student b on not a.class=b.class and a.birthday=b.birthday;26.显示‘张三’教师任课的学生姓名,课程名,成绩命令:select ,cname,DEGREE from Teacher join Course on Teacher.no=Course.tno join Score on o=o join Student on Score.no=Student.no where ='张三';27.列出所讲课已被选修的教师的姓名和系别命令:select distinct name,depart from Teacher join Course on Teacher.no=Course.tno join Score on o=o;28.输出所有学生的name、no和degree。

(degree为空的不输出和为空的输出两种情况)。

命令:select name,Student.no,DEGREE from Student left join Score on Student.no=Score.no;select name,Student.no,DEGREE from Student join Score on Student.no=Score.no;29.列出所有任课教师的name和depart。

(从课程选修和任课两个角度考虑)命令:select distinct name,depart from Teacher join Course on Teacher.no=Course.tno;select distinct name,depart from Teacher join Course on Teacher.no=Course.tno join Score on o=o;30.输出男教师所上课程名称。

相关文档
最新文档