学生选课数据库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语句create table student(sno char(6),sname varchar(8),ssex char(2),sage smallint,sdept varchar(15),primary key(sno));Create table course(Cno char(4) primary key,Cname varchar(20),Cpno char(4),Ccredit tinyint)create table sc(sno char(6),cno char(4),grade decimal(12,2),primary key(sno,cno));c2在student表中插入信息insert into studentvalues( ’4001’,’赵茵’,’男’,20,’SX’)insert into studentvalues( ’4002’,’杨华’,’女’,21,’JXJ’)Delete1 删除所有 JSJ 系的男生delete from Student where Sdept=’JSJ’ and Ssex=’男’;2 删除“数据库原理”的课的选课纪录delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’);Update1 修改 0001 学生的系科为: JSJUpdate student set sdept=’JSJ’ where sno=’0001’2 把陈小明的年龄加1岁,性别改为女。
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语句(有答案)
一. SQL语句【1】(C226)下列关于SQL语言特点的描述中,错误的是( )。
A)语言非常简洁B)是一种一体化语言C)是一种高度过程化的语D)可以直接以命令方式交互使用,也可以程序方式使用【2】1103(7)负责数据库中查询操作的数据库语言是A)数据定义语言B)数据管理语言C)数据操作语言D)数据控制语言【3】Y3(18)SQL语言的核心是( )。
A)数据操纵B)数据定义C)数据查询D)数据定义【4】Y1(24)VisualFoxPro在SQL方面,不支持的功能是( )。
A)数据控制B)数据操纵C)数据查询D)数据定义【5】Y4(30)下列选项中,不属于SQL特殊运算符的是( )。
A)GROUP B)ON C)ALL D)EMPTY二. SQL查询语句【1】0904(12)SQL语句的查询语句是A) INSERT B)UPDATE C) DELETE D) SELECT【2】(C126)标准的SQL基本查询语句的格式是( )。
A)SELECT…FROM…WHERE B)SELECT…WHERE…FROM C)SELECT…WHERE…GROUP BY D)SELECT…FROM…ORDER BY 【3】Y3 (25)SQL语句中,SELECT语句中的JOIN是用来建立表间的联系短语应放在下列哪个短语之后( )。
A)FROM B)WHERE C)ON D)GROUP BY【4】Y2(20)SQL语句中,SELECT命令中的JOIN是用来建立表间的联系短语,连接条件应出现在下列哪个短语中A)WHERE B)ON C)HAVING D)INNER【5】Y4(17)SQL SELECT语句中的WHERE用于说明( )。
A)查询数据B)查询条件C)查询分组D)查询排序【6】Y4(18)SQL语句可以进行多个查询的嵌套,但Visual FoxPro中只支持( )层嵌套。
A)1 B)2 C)3 D)无穷【7】(C128)在Visual FoxPro中,嵌套查询是基于( )的查询A)2个关系B)3个关系C)多个关系D)2个或3个关系【8】0704 (17)以下有关SELECT语句的叙述中错误的是A)SELECT语句中可以使用别名B)SELECT语句中只能包含表中的列及其构成的表达式C)SELECT语句规定了结果集中的顺序D)如果FROM短语引用的两个表有同名的列,则SELECT短语引用它们时必须使用表名前缀加以限定【9】0504 (31) 在Visual FoxPro中,以下有关SQL的SELECT语句的叙述中,错误的是 ( )。
SQL语句练习题(精品文档)
S Q L语言一、选择题1.S Q L语言是()的语言,容易学习。
A.过程化B.非过程化C.格式化D.导航式2. S Q L语言的数据操纵语句包括S E L E C T、I N S E R T、U P D A T E、D E L E T E等。
其中最重要的,也是使用最频繁的语句是()。
A.S E L E C TB.I N S E R TC.U P D A T ED.D E L E T E3.在视图上不能完成的操作是()。
A.更新视图B.查询C.在视图上定义新的表D.在视图上定义新的视图4.S Q L语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,C R E A T E、D R O P、A L T E R语句是实现哪种功能()。
A.数据查询B.数据操纵C.数据定义D.数据控制5.S Q L语言中,删除一个视图的命令是()。
A.D E L E T EB.D R O PC.C L E A RD.R E M O V E6.在S Q L语言中的视图V I E W是数据库的()。
A.外模式B.模式C.内模式D.存储模式7.下列的S Q L语句中,()不是数据定义语句。
A.C R E A T E T A B L EB.D R O P V I E WC.C R E A T E V I E WD.G R A N T8.若要撤销数据库中已经存在的表S,可用()。
A.D E L E T E T A B L E SB.D E L E T E SC.D R O P T A B L E SD.D R O P S9.若要在基本表S中增加一列C N(课程名),可用()。
A.A D D T A B L E S(C N C H A R(8))B.A D D T A B L E S A L T E R(C N C H A R(8))C.A L T E R T A B L E S A D D(C N C H A R(8))D.A L T E R T A B L E S(A D D C N C H A R(8))10.学生关系模式S(S#,S n a m e,S e x,A g e),S的属性分别表示学生的学号、姓名、性别、年龄。
数据库sql课后练习题及答案解析
先创建下面三个表:(book表)(borrow表)(reader表)1) 找出姓李的读者姓名(NAME)和所在单位(COMPANY)。
2) 列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。
3) 查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。
4) 查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OU TPUT)和单价(PRICE)升序排序。
5) 查找书名以”计算机”开头的所有图书和作者(WRITER)。
6) 检索同时借阅了总编号(BOOK_ID)为和两本书的借书证号(READER_ID)。
##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。
8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。
9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。
##10)* 找出借阅了<FoxPro大全>一书的借书证号。
11) 找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。
12) 查询2006年7月以后没有借书的读者借书证号、姓名及单位。
#13) 求”科学出版社”图书的最高单价、最低单价、平均单价。
##14)* 求”信息系”当前借阅图书的读者人次数。
#15) 求出各个出版社图书的最高价格、最低价格和总册数。
#16) 分别找出各单位当前借阅图书的读者人数及所在单位。
17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。
18) 分别找出借书人次数多于1人次的单位及人次数。
19) 找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。
20) 查询经济系是否还清所有图书。
如果已经还清,显示该系所有读者的姓名、所在单位和职称。
附录:建表语句创建图书管理库的图书、读者和借阅三个基本表的表结构:创建BOOK:(图书表)CREATE TABLE BOOK (BOOK_ID int,SORT VARCHAR(10),BOOK_NAME VARCHAR(50),WRITER VARCHAR(10),OUTPUT VARCHAR(50),PRICE int);创建READER:(读者表)CREATE TABLE READER (READER_ID int,COMPANY VARCHAR(10),NAME VARCHAR(10),SEX VARCHAR(2),GRADE VARCHAR(10),ADDR VARCHAR(50));创建BORROW:(借阅表)CREATE TABLE BORROW (READER_ID int,BOOK_ID int,BORROW_DATE datetime)插入数据:BOOK表:insert into BOOK values(,'TP3/12','数据库导论','王强','科学出版社',17.90); insert into BOOK values(,'TP3/12','数据库导论','王强','科学出版社',17.90); insert into BOOK values(,'TP3/12','数据库导论','王强','科学出版社',17.90); insert into BOOK values(,'TP5/10','计算机基础','李伟','高等教育出版社',18.00);insert into BOOK values(,'TP3/12','FoxBASE','张三','电子工业出版社',23.60);insert into BOOK values(,'TS7/21','高等数学','刘明','高等教育出版社',20.00);insert into BOOK values(,'TR9/12','线性代数','孙业','北京大学出版社',20.80);insert into BOOK values(,'TR7/90','大学英语','胡玲','清华大学出版社',12.50);insert into BOOK values(,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(,'TP4/14','FoxPro大全','周虹','科学出版社',32.70);insert into BOOK values(,'TP4/14','FoxPro大全','周虹','科学出版社',32.70);insert into BOOK values(,'TP4/15','计算机网络','黄力钧','高等教育出版社',21.80);insert into BOOK values(,'TP4/15','计算机网络','黄力钧','高等教育出版社',2 1.80);READER表:insert into reader values(111,'信息系','王维利','女','教授','1号楼424'); insert into reader values(112,'财会系','李立','男','副教授','2号楼316 ');insert into reader values(113,'经济系','张三','男','讲师','3号楼105'); insert into reader values(114,'信息系','周华发','男','讲师','1号楼316'); insert into reader values(115,'信息系','赵正义','男','工程师','1号楼224 ');insert into reader values(116,'信息系','李明','男','副教授','1号楼318 ');insert into reader values(117,'计算机系','李小峰','男','助教','1号楼214 ');insert into reader values(118,'计算机系','许鹏飞','男','助工','1号楼216 ');insert into reader values(119,'计算机系','刘大龙','男','教授','1号楼318 ');insert into reader values(120,'国际贸易','李雪','男','副教授','4号楼506');insert into reader values(121,'国际贸易','李爽','女','讲师','4号楼510 ');insert into reader values(122,'国际贸易','王纯','女','讲师','4号楼512 ');insert into reader values(123,'财会系','沈小霞','女','助教','2号楼202'); insert into reader values(124,'财会系','朱海','男','讲师','2号楼210'); insert into reader values(125,'财会系','马英明','男','副教授','2号楼212 ');BORROW表:insert into borrow values(112,,'3-19-2006');insert into borrow values(125,,'2-12-2006');insert into borrow values(111,,'8-21-2006');insert into borrow values(112,,'3-14-2006');insert into borrow values(114,,'10-21-2006');insert into borrow values(120,,'11-2-2006');insert into borrow values(120,,'10-18-2006');insert into borrow values(119,,'11-12-2006');insert into borrow values(112,,'10-23-2006');insert into borrow values(115,,'8-21-2006');insert into borrow values(118,,'9-10-2006');现有关系数据库如下:数据库名:图书借阅管理系统读者表(读者编号 char(6),姓名,性别,年龄,单位,身份证号,职称)图书表(图书编号char(6),图书名称,出版社,作者)借阅表(读者编号,图书编号,借阅时间)用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 Server 工具在管理数据库系统和运行SQL查询的两个主要工具是企业管理器和查询分析器三、实验目的1.熟悉数据库的交互式SQL工具。
2.熟悉通过SQL对数据库进行操作。
3.完成上机练习。
四、实验内容(打※为选做题)Part A1.使用CREATE语句创建数据库2. 使用CREATE语句创建基本表3.更改基本表的定义,增加列,修改列的数据类型。
4.创建表的索引,取消表的索引1、数据库的建立使用SQL 语句建立关系数据库schooldemo2、基本表的建立在数据库schooldemo下,使用SQL 语句建立关系数据库表:人员表PERSON(Pno,Pname, Page),房间表ROOM(Rno,Rname,Rarea),表PR(Pno,Rno,Date).其中,表PERSON :Pno(CHAR(8),主码,非空,唯一),Pname(CHAR(20),非空),Page(INT);表ROOM:Rno(CHAR(8),主码,非空,唯一),Rname(CHAR(20)),Rarea(FLOAT (10));表PR:Pno(CHAR(8),非空,唯一),Rno(CHAR(8),非空,唯一),Date (DATETIME);(三个表之间有联系)3、更改基本表的定义,增加列,删除列,修改列的数据类型。
更改表PERSON,增加属性Ptype(类型是CHAR ,长度为10),把表ROOM中的属性Rname的数据类型改为长度为40。
4、创建表的索引,取消表的索引为ROOM表创建按Rno降序排列的索引创建PERSON表按Pname升序排列的唯一性索引取消PERSON表Pname升序索引5、删除表ROOM实验过程(1.a)1、数据库的建立使用SQL 语句建立关系数据库schooldemocreate database schooldemoon(name=schooldemo,filename='e:\123\school_data.mdf',size=5mb,maxsize=15mb,filegrowth=10%)log on(name=schooldemo_log,filename='e:\123\schooldemo.ldf',size=5mb,maxsize=15mb,filegrowth=4mb)2、基本表的建立在数据库schooldemo下,使用SQL 语句建立关系数据库表:人员表PERSON(Pno,Pname, Page),房间表ROOM(Rno,Rname,Rarea), 表PR(Pno,Rno,Date).其中,表PERSON :Pno(CHAR(8),主码,非空,唯一),Pname(CHAR(20),非空),Page(INT);表ROOM:Rno(CHAR(8),主码,非空,唯一),Rname(CHAR(20)),Rarea(FLOAT(10));表PR:Pno(CHAR(8),非空,唯一),Rno(CHAR(8),非空,唯一),Date(DATETIME);(三个表之间有联系)create table person(pno char (8)primary key,pname char (20),page int);create table room(rno char (8) primary key,rname char(20),rarea float(10));create table pr(pno char (8),rno char (8),date datetime,primary key(pno,rno),foreign key(pno) references person(pno),foreign key(rno) references room(rno));3、更改基本表的定义,增加列,删除列,修改列的数据类型。
SQL语句练习参考答案(教学数据库)
以下为SQL查询练习参考答案(查询用到的表参照教材P82)。
1.查询全体学生的姓名和所在系。
Select Sno,SdeptFrom Student;2.查询所有课程的详细信息。
Select *From Course;或者Select Cno,Cname,Cpno,CcreditFrom Course;3.查询选修了课程的学生学号。
Select Distinct SnoFrom SC;注意:select子句中需要指定Distinct 关键词4.查询有学生选修的课程号。
Select Distinct CnoFrom SC;5.检索年龄在 18到 20之间(含18和20)的女生的学号、姓名及年龄。
Select Sno,Sname,SageFrom StudentWhere Ssex=’女’ and (Sage between 18 and 20);注意: where子句性别的常量值——女,需用英文状态下的单引号或双引号。
或者Select Sno,Sname,SageFrom StudentWhere Ssex=’女’ and (Sage >=18 and Sage<= 20);6.检索“200215121”学生选修课程号及成绩。
Select Cno,GradeFrom SCWhere Sno=’200215121’;7.检索选修了“1”号或“3”号课程的学生学号、课程号及成绩。
Select *From SCWhere Cno=’1’ or Cno=’3’;注意: where子句若用Cno=’1’ or ’3’是错误的,or连接的是两个布尔表达式。
8.检索所有姓王的同学的姓名、性别和所在系。
Select Sname,Ssex,SdeptFrom StudentWhere Sname like ’王*’;注意: Access中的通配符为’*’ 和’?’标。
准SQL中的通配符为’%’ 和’_’9.检索课程名中包括“数据库”的课程详细信息,结果按学分降序排列。
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数据库题库及答案
实验8 查询复习一、程序分析题已知两个关系表:学生关系表Stu(SNO,SNAME,SAGE,SDEPT),各字段的意义依次为学号、姓名、年龄和所属院系;学生选课关系表SC(SNO,CNO,GRADE),各字段的意义依次为学号、课程号和成绩分析并写出以下各段T-SQL代码所能完成的查询功能1.SELECT Stu.SNO , Stu.SNAMEFrom Stu, SCWhere Stu.SNO=SC.SNO AND O=’06’查询选修了课程号为06课程的所有学生的学号与姓名2.SELECT Stu.SNO , Stu.SNAME, Stu.SDEPT, O, SC.GRADEFrom Stu, SCWhere Stu.SNO=SC.SNO查询所有学生的学号、姓名、所属院系、选修的课程号与成绩3.SELECT Stu.SNAME From Stu, SCWhere Stu.SNO=SC.SNO AND O=’06’ AND SC.GRADE>95查询选修了课程号为06课程且成绩超过95分的学生姓名4.SELECT SNO From SCWhere SCORE=(SELECT MAX(GRADE) FROM SC Where CNO=’06’)查询与课程号为06的课程最高成绩相等的学生的学号5.SELECT SNO ,SNAME,SDEPT,GRADEFrom StuWhere SDEPT IN(SELECT SDEPT From Stu Where SNAME=’刘春鹅’)查询与学生‘刘春鹅’在同一个院系的学生信息6.SELECT SNAMEFrom StuWhere NOT EXISTS(SELECT * FROM SC Where SC.SNO=Stu.SNO and CNO=’06’)以上代码的查询结果为:查询没有选修课程号为06课程的学生姓名7.SELECT SNOFrom SCWhere CNO=’02’IntersectSELECT SNOFrom SCWhere CNO=’06’以上代码的查询结果为:查询选修了课程号为02课程的学生学号集合与选修了课程号为06课程的学生学号集合的交集数据集二、--(1) 查询课程表中所有课程的课程编号和课程名称。
学生选课数据库SQL语句练习题详细分解答案
学生选课数据库SQL语句练习题)详细分解答案()、课程表一、设有一数据库,包括四个表:学生表(Student)。
)以及教师信息表(Teacher(Course)、成绩表(Score表(四)所示,数据如表~的表(一)四个表的结构分别如表1-1语句创建四个表并完成SQL1-2的表(一)~表(四)所示。
用相关题目。
表1-1数据库的表结构表(一)Student 可否属性数据类(主键学SnoChar(3)学生姓Char(8)Sname学生性SsexChar(2)学生出生datetimeSbirthday学生所在Char(5)Class级Course 表(二可否数据类属性课程号(CnoChar(5)键课程名CnameVarchar(10)TnoChar(3)教师编(外键)表(三)Score属性名数据类型可否为含义空Sno Char(3) 否学号(外键)CnoChar(5)否课程号(外键)Degree Decimal(4,1) 可成绩wzm数据库.Sno+ Cno 主码:T eacher 表(四)可否为含义属性名数据类型空(Char(3)教师编Tno键教师姓TnameChar(4)教师性TsexChar(2)教师出生datetimeTbirthday职ProfChar(6)教师所在DepartVarchar(10)门数据库中的数据表1-2Student 表(一classSsexSbirthdaySnoSname 950331977-09-01曾108950311975-10-02匡105950331976-01-23107王950331976-02-20101李950311975-02-10109王950311974-06-03103陆男Course 表(二)Tno Cname Cno825 计算机导论3-105804 3-245 操作系统856数字电路6-166wzm数据库.8319-888 高等数学Score 表(三)Degree Cno Sno863-245103 753-245105 681093-245 921033-105 881053-105 761093-105 641013-105 911073-105 781083-105 851016-166791076-166811086-166Teacher表(四DepartProfTsexTbirthdayTnoTname副1958-12-02804李计算机电子工讲1969-03-12856张计算机1972-05-05助825王电子工助1977-08-14831刘系列。
SQL经典题目与答案
π学号(学生)-π学号(σ课程号 ‘C2’(选课)) 学生) 选课)) 课程号= 本题不能写为: 本题不能写为: An Introduction to Database System π学号(σ课程号 'C2'(选课)) 选课)) 课程号≠
πSname(σCpno='5'(Course SC Student)) Student))
或
πSname(σCpno='5'(Course) Cpno='5 SC πSno,Sname(Student)) Sno,
或
πSname (πSno (σCpno='5' (Course) Cpno='5 SC) πSno,Sname (Student)) Sno,
An Introduction to Database System
An Introduction to Database System
作业答案: 作业答案:
2.设有一个SPJ数据库,包括 ,P,J,SPJ四个关系模式: .设有一个 数据库, 四个关系模式: 数据库 包括S, , , 四个关系模式 1)求供应工程J1零件的供应商号码 )求供应工程 零件的供应商号码 零件的供应商号码SNO: : πSno(σJno=‘J1’(SPJ)) ) 2)求供应工程J1零件 的供应商号码 )求供应工程 零件 的供应商号码SNO: 零件P1的供应商号码 : πSno(σJno=‘J1’∧Pno=‘P1‘(SPJ)) ∧ 3)求供应工程J1零件为红色的供应商号码 )求供应工程 零件为红色的供应商号码 零件为红色的供应商号码SNO: : πSno(σJno=‘J1‘∧ COLOR=’红‘ (P ∧ 红 SPJ)) ) SPJ P) ) 4)求没有使用天津供应商生产的红色零件的工程号JNO: )求没有使用天津供应商生产的红色零件的工程号 : πJno(SPJ)- πJNO(σcity=‘天津’∧Color=‘红‘ (S 天津’ 天津 红 πJno,Pno(SPJ)÷ πPno(σSno=‘S1‘ (SPJ)) ÷ )) ,
(完整版)sql练习题+答案
(一) 新建以下几个表student(学生表):其中约束如下:(1)学号不能存在相同的(2)名字为非空(3)性别的值只能是’男’或’女’(4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系(5)出生日期为日期格式(6)年龄为数值型,且在0~100之间cs(成绩表):其中约束如下:(1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0〜100之间,可以不输入值create table cs (sno smallint not null referencesstudent ( sno ), ----定义成外键cno smallint not null referencescourse ( cno ), ----定义成外键cj smallint constraint e check (cj between0 and 100 ),---- 检查约束一—j(成绩)只能在~100之间,可以不输入值constraint f primary key ( sno , cno )---- 定义学生学号和课程号为sc表的主键)course(课程表)其约束如下:(1)课程号(cno)不能有重复的(2)课程名(cname非空(三)针对学生课程数据库查询(1)查询全体学生的学号与姓名。
Select sno , sname from student(2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。
(3)查询全体学生的详细记录。
select * from student(4)查全体学生的姓名及其出生年份。
select sname , birth from student(5)查询学校中有哪些系。
select distinct dept from student(6)查询选修了课程的学生学号。
select sno from cs where eno is not null(7)查询所有年龄在20岁以下的学生姓名及其年龄。
SQL语句组合参考题目及答案(学生)
参考数据表结构:教师(编号,姓名,出生日期,学历)课程(编号,名称,学分)工资(教师编号,日期,应发工资,扣款)授课安排(授课ID,教师编号,授课课程,教室),【授课ID】是自动增长字段,【教师编号】是参照【教师. 编号】的外键,【授课课程】是参照【课程.编号】的外键。
带有下划线字段为表的主关键字ACCESS:1.查询年龄在35岁以下、应发工资在3500~5000的教师工资信息,显示教师编号、姓名、日期和扣款。
SELECT 工资.教师编号, 姓名, 日期, 扣款FROM 工资INNER JOIN 教师ON 工资.教师编号=教师.编号WHERE (应发工资between 3500 and 5000)and dateadd("yyyy",35,出生日期)>date();2.统计教授“数据库原理”的教师平均应发工资。
select avg(应发工资) as 平均应发工资from 工资,课程,授课安排where 工资.教师编号=授课安排.教师编号and 课程.编号=授课安排.授课课程and 名称="数据库原理"3.查询教授数据库相关课程的教师信息,即课程名称含有“数据库”的课程,先按出生日期降序、再按学历升序显示教师编号、姓名、出生日期、学历,教师信息相同的只显示一次。
SELECT DISTINCT 教师.编号, 教师.姓名, 教师.出生日期, 教师.学历FROM 课程, 教师, 授课安排where (教师.编号= 授课安排.教师编号and 课程.编号= 授课安排.授课课程) and (((课程.名称) Like "*数据库*"))ORDER BY 教师.出生日期DESC , 教师.学历;4.查询教授“C语言程序设计”和“数据库原理”两门课程的教师工资信息,显示教师编号,日期,实发工资,其中实发工资为应发工资减去扣款。
SELECT 工资.教师编号, 日期, (应发工资-扣款) AS 实发工资FROM 工资, 授课安排, 课程WHERE 课程.编号=授课安排.授课课程and 工资.教师编号=授课安排.教师编号and 名称in("C语言程序设计", "数据库原理");5.在“授课安排”表中添加“张晓辉”老师的授课信息,课程编码为“C105”,授课教室在“H1104”。
SQL数据库管理与开发》试题及习题参考答案M
《SQL数据库管理与开发教程与实训》试题(M卷)王鹏老师一、单项选择题(每小题1分,共10分)1. 下列四项中,不属于数据库特点的是( )。
A.数据共享B.数据完整性C.数据冗余很高D.数据独立性高2. 反映现实世界中实体及实体间联系的信息模型是( )。
A.关系模型B.层次模型C.网状模型D.E-R模型3. 下列四项中,不正确的提法是( )。
A.SQL语言是关系数据库的国际标准语言B.SQL语言具有数据定义、查询、操纵和控制功能C.SQL语言可以自动实现关系数据库的规范化D.SQL语言称为结构查询语言4. 在SQL中,SELECT语句的"SELECT DISTINCT"表示查询结果中 ( )A.属性名都不相同B.去掉了重复的列C.行都不相同D.属性值都不相同5.在数据操作语言(DML)的基本功能中,不包括的是 ( )A.插入新数据B.描述数据库结构C.修改数据D.删除数据6. 在采用客户机/服务器体系结构的数据库应用系统中,应该将用户应用程序安装在 ( )A.客户机端B.服务器端C.终端D.系统端7、实体型学生与任课教师之间具有()联系。
A 一对一B 一对多C 多对一D 多对多8. 数据库系统的日志文件用于记录下述哪类内容()A) 程序运行过程 B) 数据查询操作C) 程序执行结果 D) 数据更新操作9. 数据库管理系统的英文缩写是()。
A.DB B.DBS C.DBA D.DBMS10. SQL语言中,删除一个表的命令是( )A. DELETEB. DROPC. CLEARD. REMOVE二、判断题(每空1分,共10分)1. 在查询分析器中执行SQL语句的快捷键是F1。
2. 计算ASCII('also')结果为97。
3. UNION运算符是用于将两个或多个检索结果合并成一个结果。
4. 在事务中包含create database语句吗?5. Lock权限不是数据库的访问权限。
sql数据题(附答案)
二、有一个“学生-课程”数据库,数据库中包括三个表:(1) “学生”表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在班(Sclass)五个属性组成,可记为: Student(Sno,Sname,Ssex,Sage,Sdept) Sno 为关键字。
(2) “课程”表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,可记为: Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。
(3) “学员成绩”表SC由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,可记为: SC(Sno,Cno,Grade)。
向每个表里至少插入二十条数据完成下列SQL语句:1、建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在班Sdept五个属性组成,其中学号属性不能为空,并且其值是唯一的。
Unique3、删除Student表4、查询全体学生的学号与姓名5、查询全体学生的详细记录6、查所有参加过考试的学生的学号select distinct sno from sc7、查所有年龄在20岁以下的学生姓名及其年龄8、查考试成绩有不及格的学生的姓名9、查询年龄在20至23岁之间的学生的姓名、性别、和年龄10、查所有姓刘的学生的姓名、学号和性别select sname,sage,ssex from studentwhere sname like '刘%'11、查姓“欧阳”且全名为三个汉字的学生的姓名select sname from studentwhere sname like '欧阳_'12、查询参加了3号课程考试的学生的学号及其成绩,查询结果按分数的降序排列select sno,degree from scwhere cno=3 order by degree desc13、计算1号课程的学生平均成绩select avg(degree)as '1号课程平均成绩' from scwhere cno=114、查询参加1号课程考试的学生最高分数select max(degree)as '1号课程最高成绩' from scwhere cno=115、查询与“刘晨”在同一个班级学习的学生select sname,sclass from studentwhere sclass=(select sclass from student where sname='刘晨')16、将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在班:网站班;年龄:18岁)插入Student表中insert into student (sno,sname,ssex,sage,sclass)values(95020,'陈冬','男','18','网站班')17、将学生95001的年龄改为22岁Update student set sage=22 where sno=9500118、将网站班全体学生的成绩置零update sc set degree=0 where sno in(select sno from student where sclass=’网站班’)19、删除学号为95019的学生记录20、删除网站班所有学生的考试记录Delete from sc where sno in (select sno from student where class=’网站班’) 21:删除分数在60分以下的学生信息(从学生表里面删除)delete from student where sno in(select distinct sno from sc where degree<60) 22:计算所有课程的总分和平均分Select sum(degree),avg(degree)from sc23:查询所有课程里面的最高分和最低分Select max(degree),min(degree)from sc24:查询所有姓李的学生的平均分select avg(degree)from sc,studentwhere student.sno=sc.sno and student.sname like '李%'25:查询所有姓李的学生的‘数据库’的平均分select avg(degree)from sc,student ,coursewhere student.sno=sc.sno and student.sname like '李%'and o=o and ame='数据库'26:查询所有男生的考‘数据库’的平均分select avg(degree)from sc,student ,coursewhere student.sno=sc.sno and student.ssex=’男’ and o=o and ame='数据库'27:查询所有平均分在60分以下的课程名称Select ame from course,scWhere o=oGroup by o having avg(sc.degree)<6028:查询5班或者是6班的女生选修‘数据库’的这些人的‘数据库’的平均分。
数据库sql课后练习题及答案解析
数据库sql课后练习题及答案解析第一篇:数据库sql课后练习题及答案解析先创建下面三个表:(book表)(borrow表)(reader表)1)找出姓李的读者姓名(NAME)和所在单位(COMPANY)。
2)列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。
3)查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。
4)查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。
5)查找书名以”计算机”开头的所有图书和作者(WRITER)。
6)检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。
##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。
8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。
9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。
##10)* 找出借阅了一书的借书证号。
11)找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。
12)查询2006年7月以后没有借书的读者借书证号、姓名及单位。
#13)求”科学出版社”图书的最高单价、最低单价、平均单价。
##14)* 求”信息系”当前借阅图书的读者人次数。
#15)求出各个出版社图书的最高价格、最低价格和总册数。
#16)分别找出各单位当前借阅图书的读者人数及所在单位。
17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。
18)分别找出借书人次数多于1人次的单位及人次数。
19)找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。
20)查询经济系是否还清所有图书。
如果已经还清,显示该系所有读者的姓名、所在单位和职称。
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语句练习题(详细分解答案)
一、设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。
四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。
用SQL语句创建四个表并完成相关题目。
表1-1数据库的表结构表(一)Student含义属性名数据类型可否为空Sno Char(3) 否学号(主键)Sname Char(8) 否学生姓名Ssex Char(2) 否学生性别Sbirthday datetime 可学生出生年月Class Char(5) 可学生所在班级表(二)Course含义属性名数据类型可否为空Cno Char(5) 否课程号(主键)Cname Varchar(10) 否课程名称Tno Char(3) 否教师编号(外键)表(三)Score含义属性名数据类型可否为空Sno Char(3) 否学号(外键)Cno Char(5) 否课程号(外键)Degree Decimal(4,1) 可成绩主码:Sno+ Cno表(四)Teacher含义属性名数据类型可否为空Tno Char(3) 否教师编号(主键)Tname Char(4) 否教师姓名Tsex Char(2) 否教师性别Tbirthday datetime 可教师出生年月Prof Char(6) 可职称Depart Varchar(10) 否教师所在部门表1-2数据库中的数据表(一)StudentSno Sname Ssex Sbirthday class95033108 曾华男1977-09-01105 匡明男1975-10-950310295033107 王丽女1976-01-2395033101 李军男1976-02-20109 王芳女1975-02-950311095031103 陆君男1974-06-03表(二)CourseCno Cname Tno3-105 计算机导论8253-245 操作系统8046-166 数字电路8569-888 高等数学831表(三)ScoreSno Cno Degree103 3-245 86105 3-245 75109 3-245 68103 3-105 92105 3-105 88109 3-105 76101 3-105 64107 3-105 91108 3-105 78101 6-166 85107 6-166 79108 6-166 81表(四)TeacherTno Tname Tsex Tbirthday Prof Depart804 李诚男1958-12-02 副教授计算机系856 张旭男1969-03-12 讲师电子工程系825 王萍女1972-05-05助教计算机系831 刘冰女1977-08-14 助教电子工程系-- 1、查询Student表中的所有记录的Sname、Ssex和Class列。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。
四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。
用SQL语句创建四个表并完成相关题目。
表1-1数据库的表结构表(一)Student属性名数据类型可否为空含义Sno Char(3) 否学号(主键)Sname Char(8) 否学生姓名Ssex Char(2) 否学生性别Sbirthday datetime 可学生出生年月Class Char(5) 可学生所在班级表(二)Course属性名数据类型可否为空含义Cno Char(5) 否课程号(主键)Cname Varchar(10) 否课程名称Tno Char(3) 否教师编号(外键)表(三)Score属性名数据类型可否为空含义Sno Char(3) 否学号(外键)Cno Char(5) 否课程号(外键)Degree Decimal(4,1) 可成绩主码:Sno+ Cno表(四)Teacher属性名数据类型可否为含义空Tno Char(3) 否教师编号(主键)Tname Char(4) 否教师姓名Tsex Char(2) 否教师性别Tbirthday datetime 可教师出生年月Prof Char(6) 可职称Depart Varchar(10) 否教师所在部门表1-2数据库中的数据表(一)StudentSno Sname Ssex Sbirthday class108 曾华男1977-09-9503301105 匡明男1975-10-9503102107 王丽女1976-01-950332395033101 李军男1976-02-2095031109 王芳女1975-02-1095031103 陆君男1974-06-03表(二)CourseCno Cname Tno3-105 计算机导论8253-245 操作系统8046-166 数字电路8569-888 高等数学831表(三)ScoreSno Cno Degree103 3-245 86105 3-245 75109 3-245 68103 3-105 92105 3-105 88109 3-105 76101 3-105 64107 3-105 91108 3-105 78101 6-166 85107 6-166 79108 6-166 81表(四)TeacherTno Tname Tsex Tbirthday Prof Depart804 李诚男1958-12-02 副教授计算机系856 张旭男1969-03-12 讲师电子工程系825 王萍女1972-05-05助教计算机系831 刘冰女1977-08-14 助教电子工程系-- 1、查询Student表中的所有记录的Sname、Ssex和Class列。
select sname,ssex,class from student;-- 2、查询教师所有的单位即不重复的Depart列。
select distinct depart from Teacher;-- 3、查询Student表的所有记录。
select * from student;-- 4、查询Score表中成绩在60到80之间的所有记录。
select * from score where degree between 60 and 80;-- 5、查询Score表中成绩为85,86或88的记录。
select * from score where degree in(85,86,88);-- 6、查询Student表中“95031”班或性别为“女”的同学记录。
select * from student where class = '95031' or ssex='女';-- 7、以Class降序查询Student表的所有记录。
select * from student order by class desc;-- 8、以Cno升序、Degree降序查询Score表的所有记录。
select * from score order by cno,degree desc;-- 9、查询“95031”班的学生人数。
select class,count(*) as 学生人数 from studentgroup by class having class='95031';-- 10、查询Score表中的最高分的学生学号和课程号。
(子查询或者排序)select sno,cno,degree,(select max(degree) from score) as maxscore--计算最高分from score where degree= (select max(degree) from score);-- 11、查询…3-105‟号课程的平均分。
select avg(degree) as avgdegreefrom score group by cno having cno='3-105';-- 12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
select avg(degree) as avgdegree from score group by cno --按照课程分组取平均值having cno= (select cno from score group by cno having count(*)>=5)--至少有5名学生选修的课程and cno like '3%';--以3开头的课程-- 13、查询最低分大于70,最高分小于90的Sno列。
select sno,max(degree)as maxdegree,min(degree) as mindegree from Score group by snohaving max(degree)<90 and min(degree)>70-- 14、查询所有学生的Sname、Cno和Degree列。
select sname,cno,degree from studentjoin score on student.sno=score.sno;-- 15、查询所有学生的Sno、Cname和Degree列。
select sno,cname,degree from Scorejoin course on o=o;-- 16、查询所有学生的Sname、Cname和Degree列。
select sname,cname,degree from studentjoin score on student.sno=score.snojoin course on o=o;-- 17、查询“95033”班所选课程的平均分。
select avg(degree) as avgdegree from score where sno in(select sno from student where class='95033')18、假设使用如下命令建立了一个grade表:create table grade(low int(3),upp int(3),rank char(1))insert into grade values(90,100,’A’)insert into grade values(80,89,’B’)insert into grade values(70,79,’C’)insert into grade values(60,69,’D’)insert into grade values(0,59,’E’)--现查询所有同学的Sno、Cno和rank列。
select sno,cno,(case when degree between 90 and 100 then 'A'when degree between 80 and 89 then 'B'when degree between 70 and 79 then 'C'when degree between 60 and 69 then 'D'when degree between 0 and 59 then 'E'END) as rank from score;-- 19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
select * from score where cno='3-105'and degree>(select degree from score where sno='109' and cno='3-105');-- 20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。
select * from score where sno in--选学多门课程的同学中分数为非最高分成绩的同学的全记录(select sno from score group by sno having count(cno)>1--选学多门课程的同学intersect--取交集为选学多门课程的同学中分数为非最高分成绩的同学。
select distinct sno from score where sno not in( --分数为非最高分成绩的同学select sno from score where degree=(select max(degree) from score)))--分数最高成绩的同学-- 21、查询score中选学多门课程的同学中分数为非同课程最高分成绩的记录。
方法1:select * from score where sno in--选学多门课程的同学中分数为非同课程最高分成绩的同学的全记录(select sno from score group by sno having count(cno)>1--选学多门课程的同学intersect--取交集为选学多门课程的同学中分数为非同课程最高分成绩的同学。
select distinct sno from score where sno not in(--非同课程分数最高成绩的同学select distinct sno from score where degree in (--同课程分数最高成绩的同学select max(degree)from score group by cno)))--同课程分数最高成绩方法2:select * from score where sno in--选学多门课程的同学中分数为非同课程最高分成绩的同学的全记录(select sno from score group by sno having count(cno)>1-- 选学多门课程的同学intersect -- 取交集为选学多门课程的同学中分数为同课程非最高分成绩的同学select distinct sno from score where sno not in -- 选出非同课程最高分成绩的同学(select distinct sno from score as s1where degree=(select max(degree) from score as s2 where o=o group by cno)));-- 使用关联子查询选出同课程最高分成绩的同学-- 22、查询1975年之后出生的学生的所学课程以及成绩。