MYSQL数据库原理及应用考试题库

  1. 区分不同实体的依据是( 属性)。
  2. 现实世界中客观存在并能相互区别的事物称为( 实体 )。
  3. 现实世界中事物的特性在信息世界中称为( 属性 )。
  4. 下列实体类型的联系中,属于一对一联系的是( 省对省会的所属联系 )。
  5. 公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,职员到部门的联系类型是( 多对一 )。
  6. 下列实体类型的联系中,属于多对多联系的是( 供应商与工程项目的供货联系 )。
  7. 学生和课程之间是典型的( 多对多 )关系。
  8. 学生社团可以接纳多名学生参加,但每个学生只能参加一个社团,从社团到学生之间的联系类型是( 一对多 )。
  9. 概念模型是现实世界的第一层抽象,这一类最著名的模型是( 实体-关系模型 )。
  10. 采用二维表格结构表达实体类型及实体间联系的数据模型是(关系模型 )。
  11. 不同的数据库管理系统支持不同的数据模型。在常用的数据模型中,不包括( 链状模型
  12. 在数据库技术中,独立于计算机系统的模型是( E-R模型 )。
  13. 如果在一个关系中,存在多个属性(或属性组)都能用来唯一标识该关系的元组,且其任何子集都不具有这一特性,则这些属性(或属性组)被称为该关系的(候选码)。
  14. 关系模型中,一个码是( 由一个或多个属性组成,其值能够惟一标识关系中一个元组 )。
  15. 候选码的属性可以有( 1个或多个 )。
  16. 候选码中的属性称为(主属性)。
  17. 如果在一个关系中,存在多个属性(或属性组)都能用来唯一标识该关系的元组,且其任何子集都不具有这一特性,则这些属性(或属性组)被称为该关系的(  候选码  )。
  18. 下面的选项不是关系数据库基本特征的是(不同的列应有不同的数据类型 )。
  19. 在数据库设计中,E-R模型是进行( 概念设计   )的一个主要工具。
  20. E-R图是数据库设计的工具之一,它适用于建立数据库的( 概念模型
  21. 概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的(概念模型 )。
  22. 如果采用关系数据库实现应用,在数据库的逻辑设计阶段需将(E-R模型 )转换为关系数据模型。
  23.  下列选项中属于创建数据库的语句是(  CREATE DATABASE  )。
  24. 在创建数据库时,每个数据库都对应存放在一个与数据库同名的(  文件夹  )中
  25. 显示当前所有数据库的命令是( SHOW DATABASES   )。
  26. 在MySQL5.5以上系统中,默认的存储引擎是( InnoDB   )。
  27. SQL系统中,表结构文件的扩展名是( .frm   )。
  28. MySQL使用(my.ini )文件中的配置参数。
  29. 下列选项中属于删除数据库的语句是( DROP DATABASE   )。
  30. 选择要执行操作的数据库,应该哪个SQL命令?( USE  )
  31. 下面关于数据库中表的行和列的叙述正确的是( 表中的行和列都是无序的   )。
  32. 基于这样的3个表,即学生表S、课程表C和学生选课表SC,它们的关系模式如下:S(S#,SN,SEX,AGE,DEPT)(学号,姓名,性别,年龄,系别)C(C#,CN)(课程号,课程名称)SC(S#,C#,GRADE)(学号,课程号,成绩).检索4门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。正确的SELECT语句是( SELECT S#,SUM(GRADE) FROM SC WHERE GRADE>=60 GROUP BY S#  HAVING COUNT(*)>=4  ORDER BY  2 DESC  )。
  33. 下列聚合函数不忽略空值(NULL)的是(  COUNT(*)   )。
  34. 在SQL中,下列涉及空值的操作,不正确的是(  AGE=NULL  )。
  35. “学生-选课-课程”数据库中的3个关系:

S(S#,SNAME,SEX,DEPARTMENT),主码是S#;

C(C#,CNAME,TEACHER),主码是C#;

SC(S#,C#,GRADE),主码是(S#,C#)。

在下列关于保持数据库完整性的叙述中,哪一个是不正确的?(可以任意删除关系C中的元组 )

  1. 已知学生选课信息表:sc(sno,cno,grade)。查询“至少选修了一门课程,但没有学习成绩的学生学号和课程号”的SQL语句是( SELECT sno,cno FROM sc WHERE grade IS NULL )。
  2. 若要删除数据库中已经存在的表S,可用( DROP TABLE S )。
  3. 在下列SQL语句中,修改表结构的语句是( ALTER )。
  4. SELECT语句中,__WHERE_子句用于选择满足给定条件的元组。
  5. SELECT语句中,若希望将查询结果排序,则应在SELECT语句中使用_ORDER BY__子句。
  6. “学生-选课-课程”数据库中的3个关系:

S(S#,SNAME,SEX,DEPARTMENT),主码是S#;

C(C#,CNAME,TEACHER),主码是C#;

SC(S#,C#,GRADE),主码是(S#,C#)。

若要查找姓名中第一个字为“王”的学生的学号和姓名,则下面列出的SQL语句中,哪个(些)是正确的?(      )。

Ⅰ. SELECT S#,SNAME FROM S WHERE SNAME=王%

Ⅱ. SELECT S#,SNAME FROM S WHERE SNAME LIKE 王%

Ⅲ. SELECT S#,SNAME FROM S WHERE SNAME LIKE 王_

  1. 基于“学生-选课-课程”数据库中的3个关系:S(S#,SNAME,SEX,DEPARTMENT),主码是S#          C(C#,CNAME,TEACHER),主码是C#              SC(S#,C#,GRADE),主码是(S#,C#). 若要查找姓名中第一个字为“王”的学生的学号和姓名,则下面列出的SQL语句中,哪个(些)是正确的?(SELECT S#SNAME FROM S WHERE SNAME LIKE %  )
  2. 在SQL语言中,条件“年龄 BETWEEN 20 AND 30”表示年龄在20~30之间,且(包括20岁和30   )。
  3. “学生-选课-课程”数据库中的3个关系:

S(S#,SNAME,SEX,DEPARTMENT),主码是S#;

C(C#,CNAME,TEACHER),主码是C#;

SC(S#,C#,GRADE),主码是(S#,C#)。

若要“查询选修了3门以上课程的学生的学号”,则正确的SQL语句是(SELECT S#  FROM SC GROUP BY S#  HAVING COUNT(*)> 3   )。

  1. SELECT语句中,使用__GROUP BY__子句可按指定列的值分组。
  2. SELECT语句中,使用GROUP BY子句可按指定列的值分组,同时使用__HAVING__可提取满足条件的组。
  3. “学生-选课-课程”数据库中的3个关系:
     S(S#,SNAME,SEX,DEPARTMENT),主码是S#;
     C(C#,CNAME,TEACHER),主码是C#;
     SC(S#,C#,GRADE),主码是(S#,C#)。
     查找每个学生的学号、姓名、选修的课程名和成绩,将使用关系(  S,SC,C  )。
  4. 基于这样的3个表,即学生表S、课程表C和学生选课表SC,它们的关系模式如下:S(S#,SN,SEX,AGE,DEPT)(学号,姓名,性别,年龄,系别)C(C#,CN)(课程号,课程名称)SC(S#,C#,GRADE)(学号,课程号,成绩).检索学生姓名及其所选修课程的课程号和成绩。正确的SELECT语句是(SELECT S.SN,SC.C#,SC.GRADE FROM S, SC WHERE S.S#=SC.S#   )。
  5. 假设学生关系S(S#,SNAME,SEX),课程关系C(C#,CNAME),学生选课关系SC(S#,C#,GRADE)。要查询选修“Computer”课的男生姓名,将涉及到关系( S、SC和C )。
  6. 现有学生表S、课程表C和学生选课表SC,它们的关系模式如下。

S(S#,SN,SEX,AGE,DEPT)(学号,姓名,性别,年龄,系别);

C(C#,CN)(课程号,课程名称);

SC(S#,C#,GRADE)(学号,课程号,成绩)。

检索学生姓名及其所选修课程的课程号和成绩。正确的SELECT语句是(SELECT S.SN,SC.C#,SC.GRADE FROM S, SC WHERE S.S#=SC.S#  )

  1. 有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE)。要查询选修“ACCESS”课的年龄不小于20的全体学生姓名的SQL语句是“SELECT SNAME FROM S,C,SC WHERE子句”。这里的WHERE子句的内容是(S.S#=SC.S# AND C.C#=SC.C# AND SAGE>=20 AND CNAME=ACCESS   )。
  2. 有关系S(S#,SNAME,SEX),C(C#,CNAME),SC(S#,C#,GRADE)。其中S#是学生号,SNAME是学生姓名,SEX是性别, C#是课程号,CNAME是课程名称。要查询选修“数据库”课的全体男生姓名的SQL语句是SELECT SNAME FROM S,C,SC WHERE子句。这里的WHERE子句的内容是( S.S# = SC.S# and C.C# = SC.C# and SEX=’男’ and CNAME=’数据库’ )。
  3. 有如下的SQL语句。

Ⅰ. SELECT sname FROM s, sc WHERE grade<60

Ⅱ. SELECT sname FROM s WHERE sno IN(SELECT sno FROM sc WHERE grade<60)

Ⅲ. SELECT sname FROM s, sc WHERE s.sno=sc.sno AND grade<60

若要查找分数(grade)不及格的学生姓名(sname),则以上正确的有哪些?(Ⅱ和Ⅲ  )

  1. 基于这样的3个表,即学生表S、课程表C和学生选课表SC,它们的关系模式如下:S(S#,SN,SEX,AGE,DEPT)(学号,姓名,性别,年龄,系别)C(C#,CN)(课程号,课程名称)SC(S#,C#,GRADE)(学号,课程号,成绩).检索选修课程“C2”的学生中成绩最高的学生的学号。正确的SELECT语句是(  SELECT S#  FROM SC WHERE C#=C2 AND GRADE>=ALL(SELECT GRADE FROM SC WHERE C#=C2) )。
  2. 现有学生表S、课程表C和学生选课表SC,它们的关系模式如下。

S(S#,SN,SEX,AGE,DEPT)(学号,姓名,性别,年龄,系别);

C(C#,CN)(课程号,课程名称);

SC(S#,C#,GRADE)(学号,课程号,成绩)。

检索所有比“王华”年龄大的学生姓名、年龄和性别。下面正确的SELECT语句是(SELECT SN,AGE,SEX FROM S WHERE AGE>(SELECT AGE FROM S WHERE SN='王华') )。

  1. 在SQL语言中,子查询是(嵌入到另一个查询语句之中的查询语句)。
  2. 若用如下的SQL语句创建了一个表SC: CREATE TABLE SC (S# CHAR(6) NOT NULL,C# CHAR(3) NOT NULL,SCORE INTEGER,NOTE CHAR(20));向SC表插入如下行时,( ’200823’,’101’,NULL,NULL) )行可以被插入 。
  3. 若用如下的SQL语句创建一个STUDENT表。CREATE TABLE STUDENT

(NO char(4) NOT NULL,

NAME char(8) NOT NULL,

SEX char(2),

AGE int)

可以插入到STUDENT表中的是(('1031', '曾华',NULL,NULL)  )。

  1. 设关系数据库中一个表S的结构为S(SN,CN,grade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0-100。若要把“张二的化学成绩80分”插入S中,则可用( INSERT INTO S VALUES(’张二’,’化学’,80) )。
  2. 设关系数据库中有一个表S的关系模式为S(SN,CN,GRADE),其中SN为学生名,CN为课程名,二者为字符型;GRADE为成绩,数值型,取值范围0~100。若要更正“王二”的化学成绩为85分,则可用(UPDATE S SET GRADE=85 WHERE SN='王二' AND CN='化学'   )。
  3. SQL语言的数据操作语句包括SELECT、INSERT、UPDATE和DELETE等。其中最重要的,也是使用最频繁的语句是(SELECT)。
  4. SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATE、DROP、ALTER语句是实现哪种功能( 数据定义 )。
  5. 创建索引是为了(提高存取速度 )。
  6. 为了使索引键的值在基本表中唯一,在创建索引的语句中应使用保留字(UNIQUE )。
  7. 下列关于SQL语言中索引(Index)的叙述中,哪一条是不正确的?(索引是外模式 )
  8. 下列几种情况下,不适合创建索引的是( 列的取值范围很少 )。
  9. 关于视图下列哪一个说法是错误的( 视图中也保存有数据 )。
  10. 设S_AVG(SNO,AVG_GRADE)是一个基于关系SC定义的学号和他的平均成绩的视图。下面对该视图的操作语句中,(   仅Ⅰ    )是不能正确执行的。

Ⅰ.UPDATE S_AVG SET AVG_GRADE=90 WHERE SNO=2004010601

Ⅱ.SELECT SNO, AVG_GRADE FROM S_AVG WHERE SNO=2004010601

  1. 视图是一个“虚表”,视图的构造基于(I 或II )。Ⅰ.基本表  Ⅱ.视图  Ⅲ.索引
  2. 以下关于视图的描述,错误的是( 视图里面的任何数据不可以进行修改  )
  3. 在SQL语言中,删除一个视图的命令是(DROP)。
  4. 在关系数据库中,为了简化用户的查询操作,而又不增加数据的存储空间,则应该创建的数据库对象是(view(视图) )。
  5. 在视图上不能完成的操作是(在视图上定义新的基本表)。
  6. 关系必须有唯一的候选码。(
  7. 关系中不同的属性可来自同一个域。(
  8. DBS是采用了数据库技术的计算机系统。DBS是一个集合体,包含计算机硬件、DB、DBMS、数据库就凭系统等软件和用户。(
  9. ORACLE是大型数据库管理系统。(
  10. 数据库管理系统DBMS是操作系统的一部分。(
  11. 数据定义语言的缩写为DML。(
  12. 创建唯一性索引的列可以有一些重复的值。(
  13. 在数据库中建立的索引越多越好。(
  14. SQL语言的视图定义和视图操作功能在一定程度上支持了数据的逻辑独立性。(
  15. 视图本身没有保存数据,而是保存一条查询语句。( ) 
  16. 视图和表是完全一样的。(
  17. 因为通过视图可以插入、修改或删除数据,因此视图也是一个实在表。(
  18. 能唯一标识实体的属性集,称为__ 码|候选码 ___。
  19. 现实世界的事物反映到人的头脑中经过思维加工成数据,这一过程要经过3个领域,依次、___客观世界|现实世界__、信息世界和数据世界。
  20. 现实世界的事物反映到人的头脑中经过思维加工成数据,这一过程要经过3个领域,依次是客观世界、___信息世界___和数据世界。
  21. 现实世界的事物反映到人的头脑中经过思维加工成数据,这一过程要经过3个领域,依次是客观世界、信息世界和__ 数据世界|机器世界____。
  22. 现实世界中,事物的个体在机器世界中称为__ 记录 __。
  23. 现实世界中,事物的个体在信息世界中称为__ 实体 _。
  24. 两个不同实体集的实体间有___一对一____、一对多和多对多3种联系。
  25. 两个不同实体集的实体间有一对一、___一对多___和多对多3种联系。
  26. 两个不同实体集的实体间有一对一、一对多和___多对多___3种联系。
  27. 用__实体—联系|E-R__ 方法来设计数据库的概念模型是数据库概念设计阶段广泛采用的方法。
  28. 表示实体类型和实体间联系的模型,称为___概念模型__,最著名、最为常用的概念模型是E-R模型。
  29. 表示实体类型和实体间联系的模型,称为概念模型,最著名、最为常用的概念模型是___E-R模型___。
  30. 数据模型通常由3部分组成,它们是__数据结构___、数据操作和完整性约束。
  31. 如果在一个关系中,存在多个属性(或属性组)都能用来唯一标识该关系的元组,且其任何子集都不具有这一特性,则这些属性(或属性组)被称为该关系的   码|候选码   。
  32. 唯一标识实体的属性集称为_____ 。
  33. DBS中最重要的软件是__'数据库管理系统(DBMS)___;最重要的用户是数据库管理员(DBA)。
  34. 数据库系统中,最主要的用户是  DBA   。
  35. 创建数据库除可以使用图形界面操作外,还可以使用____CREATE DATABASE___命令创建数据库。
  36. __ ___是数据库中存放数据的基本单位。
  37. SELECT语句中,___WHERE___子句用于选择满足给定条件的元组。
  38. SELECT语句中,若希望查询的结果不出现重复元组,则应在SELECT子句中使用___DISTINCT____保留字。
  39. SELECT语句中,WHERE子句的条件表达式中,字符串匹配的操作符是__LIKE______。
  40. SELECT语句中,WHERE子句的条件表达式中,字符串匹配的通配符是__%___和下划线(_)。
  41. SELECT语句中,与0个或多个字符匹配的通配符是__%___。
  42. SELECT语句中,与单个字符匹配的通配符是___  _  ___。
  43. 有学生信息表student,求年龄在20~22岁之间(含20岁和22岁)的学生姓名和年龄的SQL语句是:SELECT sname,age FROM student WHERE age___BETWEEN 20 AND 22_____。
  44. SELECT语句中,若希望将查询结果排序,则应在SELECT语句中使用___ORDER BY___子句,其中,ASC选项表示升序,DESC选项表示降序。
  45. SELECT语句中,若希望将查询结果排序,则应在SELECT语句中使用ORDER BY子句,其中,ASC选项表示升序,___DESC___选项表示降序。
  46. SELECT语句中,使用__GROUP BY___子句可按指定列的值分组,同时使用HAVING子句可提取满足条件的组。
  47. SELECT语句中,使用GROUP BY 子句可按指定列的值分组,同时使用____HAVING___子句可提取满足条件的组。
  48. 在“学生-选课-课程”数据库中的3个关系如下。

S(S#,SNAME,SEX,AGE),SC(S#,C#,GRADE),C(C#,CNAME,TEACHER)。现要查找选修“数据库技术”这门课程的学生的学生姓名和成绩,可使用如下的SQL语句。

SELECT SNAME,GRADE FROM S,SC,C WHERE CNAME=数据库技术 AND S.S#=SC.S# AND__SC.C#=C.C#__。

  1. 子查询的条件不依赖于父查询,这类查询称为___嵌套子查询|不相关子查询___,否则称为相关子查询。
  2. 子查询的条件不依赖于父查询,这类查询称为嵌套子查询或不相关子查询,否则称      相关子查询       。
  3. 设有关系SC(sno, cname, grade),各属性的含义分别为学号、课程名、成绩。若要将所有学生的“数据库技术”课程的成绩增加5分,能正确完成该操作的SQL语句是___UPDATE SC SET___grade = grade+5 WHERE cname=‘数据库技术’。
  4. 在SQL语言中,若要删除一个表,应使用的语句是___DROP____TABLE。
  5. 在关系数据库标准语言SQL中,实现数据检索的语句命令是___SELECT__。
  6. 创建唯一性索引时,应保证创建索引的列不包括重复的数据,并且没有两个或两个以上的空值。如果有这种数据,必须先将其___删除__,否则索引不能成功创建。
  7. ___视图___是由一个或多个数据表(基本表)或视图导出的虚拟表。
  8. 如果在视图中删除或修改一条记录,则相应的__基本表__也随着视图更新。

对于教学数据库的三个基本表:

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)

C(C#,CNAME,TEACHER) 

试用SQL的查询语句表达下列查询:

1)检索LIU老师所讲授课程的课程名。

1)select cname from c where teacher=’liu’

2)检索年龄大于19岁的男学生的学号和姓名。

2)select s#,sname from student where age>19 and sex=’男’

3)检索学号为S1的学生的姓名及所学课程的课程名。

3)select sname,cname from sc,c,s where s.s#=sc.s# and sc.c#=c.c# and s#=’s1’

4)检索SUN同学不学的课程的课程号。

4)select c# from c where c# not in (select c# from s,sc where s.s#=sc.s# and sname=’SUN’)

5)统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。

5)select c#,count(*) from sc group by c# having count(*)>=10 order by 2 desc,1 asc

6)求LIU老师所授课程的每门课程的平均成绩。

6)select c#,avg(grade) from sc,c where c.c#=sc.c# and teacher=’LIU’group by c.c# 

7)求年龄大于女同学平均年龄的男学生姓名和年龄。

7)select sname,age from s where age>(select avg(age) from s where sex=’女’)

8)检索姓名以L打头的所有学生的姓名和性别。

8)select sname,sex from s where sname like ‘L%’

9)把低于所有课程总平均成绩的女同学成绩提高5%。 

9) update sc set grade=grade+grade*5% where s# in (select s# from sc,s  where sc.s#=s.s# and grade<(select avg(grade) from sc))

10)在SC中删除尚无成绩的选课元组。

10)delete from sc where grade is null

对于教学数据库的三个基本表:

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)

C(C#,CNAME,TEACHER)

 试用SQL的查询语句表达下列查询:

1)检索LIU老师所讲授课程的课程号。

1)select c# from c where teacher=’liu’

2)检索年龄小于20岁的女学生的学号和姓名。

2)select s#,sname from student where age<20 and sex=’女’

3)检索学号为S1的学生所学课程的课程名与任课教师名。

3)select cname,teacher from sc,c where sc.c#=c.c# and s#=’s1’

4)检索LI同学不学的课程的课程号。

4)select c# from c where c# not in (select c# from s,sc where s.s#=sc.s# and sname=’LI’)

5)检索至少选修四门课程的学生学号。

5)select s# from sc group by s# having count(*)>=4

6)求选修C2课程的男学生的平均成绩。

6)select avg(grade) from sc,s where s.s#=sc.s# and sex=’男’and c#=c2

7)检索学号比WANG同学小,而年龄比他大的学生姓名。

7)select sname from s where s#<(select s# from s where sname=’WANG’) and age>(select age from s where sname=’WANG’)

8)检索姓名以M打头的所有学生的姓名和年龄。

8)select sname,age from s where sname like ‘M%’

9)在表SC中检索成绩为空值的学生学号和课程号。

9)select s#,c# from sc where grade is null

10)把ENGLISH课不及格的成绩全改为60分。

10)update sc set grade=60 where s# in (select s# from c,sc where c.c#=sc.c# and cname=’ENGLISH’ and grade<60)

对于教学数据库的三个基本表:

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)

C(C#,CNAME,TEACHER)

试用SQL的查询语句表达下列查询:

1)检索“程军”老师所授课程的课程号和课程名。

1)select c#,cname from c where teacher=’程军’

2)检索年龄大于21的男学生学号和姓名。

2)select s#,sname from student where age>21 and sex=’男’

3)检索“李强”同学不学课程的课程号。

3)select c# from c where c# not in (select c# from s,sc where s.s#=sc.s# and sname=’李强’)

4)检索至少选修两门课程的学生学号。

4) select s# from sc group by s# having count(*)>=2

5)检索所有姓刘的学生的平均年龄。

5)select avg(age) from s where sname like ‘刘%

6)检索选修课程名为“C语言”的学生学号和姓名。

6)select s#,sname from s,sc,c where s.s#=sc.s# and c.c#=sc.c# and cname=C语言’

7)检索选修课程号为K5的学生学号和姓名。

7)select s.s#,sname from s,sc where s.s#=sc.s# and c#=’K5’

8)在SC表中插入一条新记录(’S5’,’C1’,98)。

8)insert into sc values (S5’,’C1’,98)

9)查询选修了课程但没有成绩的学生学号及课程号。

9)select s#,c# from sc where grade is null

10)把低于总平均成绩的男生的成绩提高10分。

10) update sc set grade=grade+10 where s# in (select s# from sc where grade<(select avg(grade) from sc)) and sex=’男’

对于教学数据库的三个基本表:

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)

C(C#,CNAME,TEACHER)

试用SQL的查询语句表达下列查询:

1)检索“数据库原理及应用”课程的课程号。

1)select c# from c where cname=’数据库原理及应用’

2)检索年龄大于20岁的女学生的姓名和性别。

2)select sname,sex from student where age>20 and sex=’女’

3)检索学号为S3的学生所学课程的课程号与成绩。

3)select c#,grade from sc where s#=’s3’

4)检索WANG同学不学的课程的课程号。

4)select c# from c where c# not in (select c# from s,sc where s.s#=sc.s# and sname=’WANG’)

5)统计每门课程的学生选修人数(超过15人的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。

5)select c#,count(*) from sc group by c# having count(*)>=15 order by 2 desc,1 asc

6)求LIU老师所授课程的每门课程的成绩的最高分和最低分。

6)select c#,max(grade),min(grade) from sc,c where c.c#=sc.c# and teacher=’LIU’group by c.c#

7)求年龄大于所有女同学年龄的男学生姓名和年龄。

7)select sname,age from s where age>(select avg(age) from s where sex=’女’) and sex=’男’

8)检索姓名以Y打头的所有教师所教授课程的课程号和课程名。

8)select c#,cname from c where teacher like ‘Y%’

9)在表SC中,当某个成绩低于全部课程的平均成绩时,提高5%。

9)update sc set grade=grade+grade*5% where grade<(select avg(grade) from sc)

10)在SC中删除尚无成绩的选课元组。

10)delete from sc where grade is null

现有如下关系:

学生S(S#,SNMAE,AGE,SEX)

学习SC(S#,C#,GRADE)

课程C(C#,CNAME,TEACHER)

用SQL语言完成下列功能:

1)统计有学生选修的课程门数。

1)select count(distinct c#) from sc

2)求选修C4课程的学生的平均年龄。

2)select avg(age) from s where s# in (select s# from sc where c#=’c4’)

3)求李文老师所授课程的每门课程的学生平均成绩和最高成绩。

3)select c#,max(grade),min(grade) from sc,c where c.c#=sc.c# and teacher=’李文’group by c.c#

4)检索姓名以王打头的所有学生的姓名和年龄。

4)select sname,age from s where sname like ‘王%

5)检索比“张三”年龄大的学生学号、姓名和年龄。

5)select s#,sname,age from s where age>(select age from s where sname=’张三’)

6)检索所有选修“C1”课程的学生学号、姓名及成绩,并将结果按成绩降序排列。

6)select s#,sname,grade from s# in (select s# from sc where c#=’c1’) order by grade desc

7)检索“李强”同学不学课程的课程号。

7)select c# from c where c# not in (select c# from s,sc where s.s#=sc.s# and sname=’李强’)

8)往基本表S中插入一个学生元组(’S9’,’WU’,18,’F’)。

8)insert into s values(’S9’,’WU’,18,’F’)

9) 把低于总平均成绩的女同学的成绩提高10分。

9) update sc set grade=grade+10 where s# in (select s# from sc where grade<(select avg(grade) from sc)) and sex=’女’

10) 把王林同学的选课记录全部删除。

10)delete from sc where s#=(select s# from s where sname=’王林’)

现有图书借阅关系数据库如下:

图书(图书号,书名,作者,单价,库存量)

读者(读者号,姓名,工作单位,地址)

借阅(图书号,读者号,借期,还期,备注)其中,还期为NULL表示该书未还。

用SQL语言实现下列查询:

1)检索读者号为R6的读者姓名、工作单位。

1select 姓名,工作单位 from 读者where 读者号=R6

2)检索借阅图书号为B6的读者姓名。

2select 姓名 from 读者 a,借阅 b where a.读者号=b.读者号 and 图书号=B6

3)检索读者“李红”所借图书的书名。

3)select 书名 from 图书 a,读者 b,借阅 c where a.图书号=c.图书号 and b.读者号=c.读者号 and 姓名=’李红’

4)检索读者号为R1的读者所借图书中未还的书名。

4select 书名 from 图书 a,借阅 b where a.图书号=b.图书号 and 读者号=R1 and 还期 is null

5)检索书名为“操作系统”的图书的最高单价和最低单价。

5)select max(单价),min(单价) from 图书 where 书名=’操作系统’

6)检索单价在20到30元(包含20和30)之间的图书的书名及库存量。

6)select 书名,库存量 from 图书 where 单价between 20 and 30

7)检索所有姓王的读者所借图书的图书号、借期和还期。

7select 图书号,借期,还期 from 借阅 where 读者号 in (select 读者号from 读者 where 姓名like ’王%)

8)检索与“张三”同一工作单位的读者号和读者姓名。

8select 读者号,姓名 from 读者where 工作单位=(select 工作单位 from 读者where 姓名=’张三’)

9)将读者“李红”所借图书的信息从借阅表中删除。

9delete from 借阅 where 读者号 in (select 读者号 from 读者where 姓名=’李红’)

10)将读者号为R2的读者所借图书的还期增加10天。

10update 借阅 set 还期=还期+10 where 读者号=R2

你可能感兴趣的:(数据库,mysql,database)