上机练习2

1、              启动SQL Server 2008中的 SQL Server Management Studio。

2、              针对下面三张基本表进行操作:

学生信息表(Student):

列名

数据类型

长度

是否可空

备注

学号

char

4

N

PRIMARY  KEY

姓名

varchar

8

N

性别

char

2

Y

男/女

出生日期

date

Y

家庭地址

varchar

50

Y

身高

decimal(3,2)

Y

备注

text

Y

课程表(Course):

列名

数据类型

长度

是否可空

备注

课程编号

Char

4

N

主键

课程名称

varchar

50

N

学分

int

Y

成绩表(Score):

列名

数据类型

长度

是否可空

备注

学号

Char

4

N

主键

课程编号

char

4

N

主键

分数

Decimal(3,1)

Y

3、              将下列数据输入各个表中

学号

姓名

性别

出生日期

家庭地址

身高

备注

0001

刘一平

1990-10-1

温州市环城西路201号

1.78

0002

张得民

1990-12-2

杭州市下沙路22号

1.65

0003

马东

1990-7-4

宁波市中山北道20号

1.71

0004

肖海燕

1990-3-15

温州市越秀北路43号

1.65

0005

张民华

1991-5-13

宁波市艮山路7号

1.63

课程编号

课程名称

学分

0001

计算机基础

2

0002

管理学原理

3

0003

数据库技术

3

0004

项目管理

2

0005

毕业论文

10

学号

课程编号

分数

0001

0001

80.0

0001

0002

90.0

0001

0003

70.0

0001

0004

85.0

0002

0001

78.0

0002

0002

NULL

0002

0003

77.0

0002

0004

67.0

0003

0001

66.0

0003

0002

76.0

0003

0003

NULL

0003

0004

73.0

  1. Student表添加“系名”字段,存储数据如:“信息系”,“数学系”,“计算机系”等,具体数据可自行添加到Student表中;
  2. ALTER TABLE Student
  3. ADD Sdept char();
  4. 统计各个课程号及相应的选课人数;
  5. SELECT Cno,COUNT(Sno)
  6. FROM Score
  7. GROUP BY Cno;
  8. 统计没有参加考试的学生学号和姓名;
  9. SELECT Sno,Sname
  10. FROM Student
  11. WHERE Sno IN
  12. (SELECT Sno
  13. FROM Score
  14. WHERE Sscore IS NULL);
  15. 查询选修了3门课以上的学生姓名;
  16. SELECT Sname
  17. FROM Student
  18. WHERE Sno IN
  19. (SELECT Sno
  20. FROM Score
  21. GROUP BY Sno
  22. HAVING COUNT(*)>);
  23. 统计选修人数在3人以上的课程号和课程名;
  24. SELECT Cno,Cname
  25. FROM Course
  26. WHERE Cno IN
  27. (SELECT Cno
  28. FROM Score
  29. GROUP BY Cno
  30. HAVING COUNT(*)>);
  31. 查询每个学生的学号、姓名、选修的课程名及成绩;
  32. SELECT Student.Sno,Sname,Cname,Cscore
  33. FROM Student,Score,Course
  34. WHERE Student.Sno=Score.Sno AND Score.Cno=Course.Cno;
  35. 查询选修了课程号为“”的学生姓名和住址;
  36. SELECT Sname,Saddr
  37. FROM Student,Score
  38. WHERE Score.Sno=Student.Sno AND Score.Cno='';
  39. 查询与“刘一平”来自同一个系的学生姓名;
  40. SELECT S2.Sname
  41. FROM Student S1,Student S2
  42. WHERE S1.Sdept=S2.Sdept AND S1.Sname='刘一平';
  43. 查询其它系中课程‘’比信息系所有学生分数高的学生学号和姓名;
  44. SELECT Sno,Sname
  45. FROM Student
  46. WHERE Sno IN
  47. (SELECT Sno
  48. FROM Score
  49. WHERE Score.Cno='' AND Cscore>
  50. (SELECT MAX(Cscore)
  51. FROM Student,Score
  52. WHERE Student.Sno=Score.Sno AND Cno='' AND Sdept='信息系'
  53. )
  54. AND Sdept<>'信息系');
  55. 查询其它系中比信息系所有学生年龄大的学生姓名和性别;
  56. SELECT Sname, Sgender
  57. FROM Student
  58. WHERE -YEAR(Sbirth)>ALL
  59. (SELECT -YEAR(Sbirth)
  60. FROM Student
  61. WHERE Sdept='信息系'
  62. ) AND Sdept<>'信息系' ;
  63. 查询每门课程中低于该课程平均成绩的学生学号和姓名;
  64. SELECT DISTINCT Score.Sno,Sname
  65. FROM Student,Score
  66. WHERE Student.Sno = Score.Sno
  67. AND Score.Cscore<
  68. (SELECT avgscore
  69. FROM
  70. (SELECT Cno,AVG(Cscore)
  71. FROM Score
  72. GROUP BY Cno)
  73. AS AVGSC(Cno,avgscore)
  74. WHERE Cno = Score.Cno);
  75. SELECT Student.Sno,Sname,Cno
  76. FROM Student,Score A
  77. WHERE Student.Sno = A.Sno
  78. AND Cscore<
  79. (SELECT AVG(Cscore)
  80. FROM Score B
  81. WHERE A.Cno = B.Cno);
  82. 我的:
  83. SELECT Sno,Sname
  84. FROM Student
  85. WHERE Sno IN
  86. (SELECT Sno
  87. FROM Score A
  88. WHERE Cscore<
  89. (SELECT AVG(Cscore)
  90. FROM Score B
  91. WHERE A.Cno = B.Cno));
  92. 查询“信息系”中选课最多的学生学号;
  93. SELECT Score.Sno
  94. FROM Score ,Student
  95. WHERE Sdept ='信息系'
  96. AND Score.Sno=Student.Sno
  97. GROUP BY Score.Sno
  98. HAVING COUNT(*)>=ALL
  99. (SELECT COUNT(*)
  100. FROM Score,Student
  101. WHERE Sdept='信息系'
  102. AND Score.Sno=Student.Sno
  103. GROUP BY Score.Sno);
  104. SELECT TOP Score.Sno, COUNT(*) NumOfCourse
  105. FROM Student,Score
  106. WHERE Sdept='信息系' AND student.Sno=Score.Sno
  107. GROUP BY Score.Sno
  108. ORDER BY NumOfCourse DESC ;
  109. SELECT TOP Student.Sno
  110. FROM
  111. (SELECT Sno,COUNT(*)
  112. FROM Score
  113. GROUP BY sno)
  114. AS st(sno,cnt),Student
  115. WHERE st.sno=Student.Sno AND Student.Sdept='信息系'
  116. ORDER BY st.cnt DESC ;
  117. 查询有两门及以上课程不及格的学生学号和姓名;
  118. SELECT Sname,Sno
  119. FROM Student
  120. WHERE Sno IN
  121. (SELECT s1.Sno
  122. FROM
  123. (SELECT *
  124. FROM Score
  125. WHERE Cscore<) s1
  126. GROUP BY s1.Sno
  127. HAVING COUNT(*)>);
  128. 我的:
  129. SELECT Sno,Sname
  130. FROM Student
  131. WHERE
  132. (SELECT COUNT(*) FROM Score WHERE Student.Sno=Score.Sno AND
  133. (Cscore< OR Cscore=NULL))>=;
  134. 查询比“”号课程平均分高的其它课程信息;
  135. 我的:
  136. SELECT Course.*
  137. FROM Course,Score A
  138. WHERE Course.Cno = A.Cno AND
  139. A.Cno!='' AND
  140. (SELECT AVG(Cscore)
  141. FROM Score B
  142. WHERE A.Cno=B.Cno)>
  143. (SELECT AVG(Cscore)
  144. FROM Score
  145. WHERE Cno ='')
  146. SELECT *
  147. FROM Course
  148. WHERE Cno IN
  149. (SELECT Cno
  150. FROM Score
  151. GROUP BY Cno
  152. HAVING Cno <> '' AND AVG(Cscore)>
  153. (SELECT AVG(Cscore)
  154. FROM Score
  155. GROUP BY Cno
  156. HAVING Cno = ''));
  157. 查询选修了所有课程的学生学号和姓名。
  158. 我的:
  159. SELECT Sno,Sname
  160. FROM Student
  161. WHERE NOT EXISTS
  162. (SELECT *
  163. FROM Course
  164. WHERE NOT EXISTS
  165. (SELECT *
  166. FROM Score
  167. WHERE Sno = Student.Sno
  168. AND Cno=Course.Cno));
  169. SELECT Sno
  170. FROM Score
  171. GROUP BY Sno
  172. HAVING COUNT(*) =
  173. (SELECT COUNT(*)
  174. FROM Course);

数据库SQL语言学习--上机练习2(连接查询 嵌套查询)的更多相关文章

  1. 数据库SQL语言学习--上机练习4(视图)

    上机练习4 一.实验目的 . 熟悉和掌握对数据表中视图的查询操作和 SQL 命令的使用: . 熟悉和掌握对数据表中视图的更新操作和 SQL 命令的使用,并注意视图更新与基本表更新的区别与联系: . 学 ...

  2. 数据库SQL语言学习--上机练习3(插入 更新 删除)

    上机练习3 . 将一个新学生记录(学号::姓名:陈冬:性别:男:所在系:信息系:年龄:20岁)插入到Student表中: ALTER TABLE Student ,); UPDATE Student ...

  3. 数据库SQL语言从入门到精通--Part 6--单表查询(快来PICK)

    数据库从入门到精通合集(超详细,学习数据库必看) 查询操作是SQL语言中很重要的操作,我们今天就来详细的学习一下. 一.数据查询的语句格式 SELECT [ALL|DISTINCT] <目标列表 ...

  4. 数据库SQL语言学习----左外连接,右外连接,外连接,自然连接的形象对比

    现在有两张表,一张Student 另一张Score   1.查询每个学生及其选修课程的情况: 自然连接,Sno在Cscore中找不到就不显示,Cno在Cscore中找不到也不显示 SELECT Stu ...

  5. 数据库SQL语言学习--上级练习1(数据查询)

    上机练习1 1.              启动SQL Server 2008中的 SQL Server Management Studio. 2.              创建数据库Student ...

  6. 数据库SQL语言从入门到精通--Part 4--SQL语言中的模式、基本表、视图

    数据库从入门到精通合集(超详细,学习数据库必看) 前言: 使用SQL语言时,要注意SQL语言对大小写并不敏感,一般使用大写.所有符号一定是西文标点符号(虽然是常识,但我还是提一嘴) 1.模式的定义与删 ...

  7. 数据库SQL语言从入门到精通--Part 1--SQL语言概述

    数据库从入门到精通合集(超详细,学习数据库必看) 一.SQL概述 关系数据库标准语言SQL(结构化查询语言). 结构化查询语言(Structured Query Language)简称SQL,是一种特 ...

  8. SQL语言学习-数据定义语言

    Sql语言至今已经有6个版本.SQL查询语言包括了所有对数据的操作命令,这些操作可分为四类:数据定义语言(DDL).数据操纵语言(DML).数据控制语言(DCL)和嵌入式SQL语言. 数据定义语言(D ...

  9. 数据库SQL语言类型(DQL.DML.DDL.DCL)

    1.SQL语言 SQL(Structure Query Language)语言是数据库的核心语言. SQL是一个标准的数据库语言, 是面向集合的描述性非过程化语言. 它功能强,效率高,简单易学易维护. ...

随机推荐

  1. EasyUI datagrid combox onchange 五

    $("#sTwo").combobox({ onChange: function (n,o) { n改变后,o改变前 }

  2. python-基础-文件

    一.文件操作 打开文件时,需要指定文件路径和以何等方式打开文件, 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件的模式有: r ,只读模式[默认模式 ...

  3. tomcat 9.0中,用cookie进行会话时出现的不合法字符问题

    https://blog.csdn.net/KooKing_L/article/details/77435717 An invalid character [32] was present in th ...

  4. codeforces 788A Functions again

    …… 原题: Something happened in Uzhlyandia again... There are riots on the streets... Famous Uzhlyandia ...

  5. Node学习笔记2:建立HTTP服务器和客户端之间的通信

    http服务器端: var http = require('http'); var server = http.createServer(); server.on('request', functio ...

  6. Linux下安装jdk&Jmeter

    一.在Linux上部署一个jdk以及Jmeter   tips1:Linux安装tar.gz文件到路径 tar -zxvf 软件包名.tar.gz -C 路径 比如我的jdk-8u131-linux- ...

  7. prop-types:该第三方库对组件的props中的变量进行类型检测

    利用prop-types第三方库对组件的props中的变量进行类型检测

  8. git在不同平台windows、linux、mac 上换行符的问题

    0.01 不同平台上换行符的问题 1,不同平台对换行符的制定不同 windows <回车换行> (carriage return AND line feed) “\n\r” CRLF Un ...

  9. CF 316G3 Good Substrings——广义后缀自动机

    题目:http://codeforces.com/contest/316/problem/G3 对询问串和模式串一起建一个后缀自动机,做出在每个串上的 right 集合大小之后枚举自动机上的每个点看看 ...

  10. Nginx + Tomcat搭建集群

    一.Tomcat集群带来的好处 1.提高服务的性能,并发能力,以及高可用性 2.提供项目架构的横向扩展能力 二.Tomcat集群实现原理 通过Nginx负载均衡进行请求转发 三.Nginx + Tom ...