数据库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列上建⽴聚集索引。

  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.输出男教师所上课程名称。

相关文档
最新文档