数据库SQL语言学习--上机练习2(连接查询 嵌套查询)
上机练习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 |
- 、 为Student表添加“系名”字段,存储数据如:“信息系”,“数学系”,“计算机系”等,具体数据可自行添加到Student表中;
- ALTER TABLE Student
- ADD Sdept char();
- 、 统计各个课程号及相应的选课人数;
- SELECT Cno,COUNT(Sno)
- FROM Score
- GROUP BY Cno;
- 、 统计没有参加考试的学生学号和姓名;
- SELECT Sno,Sname
- FROM Student
- WHERE Sno IN
- (SELECT Sno
- FROM Score
- WHERE Sscore IS NULL);
- 、 查询选修了3门课以上的学生姓名;
- SELECT Sname
- FROM Student
- WHERE Sno IN
- (SELECT Sno
- FROM Score
- GROUP BY Sno
- HAVING COUNT(*)>);
- 、 统计选修人数在3人以上的课程号和课程名;
- SELECT Cno,Cname
- FROM Course
- WHERE Cno IN
- (SELECT Cno
- FROM Score
- GROUP BY Cno
- HAVING COUNT(*)>);
- 、 查询每个学生的学号、姓名、选修的课程名及成绩;
- SELECT Student.Sno,Sname,Cname,Cscore
- FROM Student,Score,Course
- WHERE Student.Sno=Score.Sno AND Score.Cno=Course.Cno;
- 、 查询选修了课程号为“”的学生姓名和住址;
- SELECT Sname,Saddr
- FROM Student,Score
- WHERE Score.Sno=Student.Sno AND Score.Cno='';
- 、 查询与“刘一平”来自同一个系的学生姓名;
- SELECT S2.Sname
- FROM Student S1,Student S2
- WHERE S1.Sdept=S2.Sdept AND S1.Sname='刘一平';
- 、 查询其它系中课程‘’比信息系所有学生分数高的学生学号和姓名;
- SELECT Sno,Sname
- FROM Student
- WHERE Sno IN
- (SELECT Sno
- FROM Score
- WHERE Score.Cno='' AND Cscore>
- (SELECT MAX(Cscore)
- FROM Student,Score
- WHERE Student.Sno=Score.Sno AND Cno='' AND Sdept='信息系'
- )
- AND Sdept<>'信息系');
- 、 查询其它系中比信息系所有学生年龄大的学生姓名和性别;
- SELECT Sname, Sgender
- FROM Student
- WHERE -YEAR(Sbirth)>ALL
- (SELECT -YEAR(Sbirth)
- FROM Student
- WHERE Sdept='信息系'
- ) AND Sdept<>'信息系' ;
- 、 查询每门课程中低于该课程平均成绩的学生学号和姓名;
- SELECT DISTINCT Score.Sno,Sname
- FROM Student,Score
- WHERE Student.Sno = Score.Sno
- AND Score.Cscore<
- (SELECT avgscore
- FROM
- (SELECT Cno,AVG(Cscore)
- FROM Score
- GROUP BY Cno)
- AS AVGSC(Cno,avgscore)
- WHERE Cno = Score.Cno);
- SELECT Student.Sno,Sname,Cno
- FROM Student,Score A
- WHERE Student.Sno = A.Sno
- AND Cscore<
- (SELECT AVG(Cscore)
- FROM Score B
- WHERE A.Cno = B.Cno);
- 我的:
- SELECT Sno,Sname
- FROM Student
- WHERE Sno IN
- (SELECT Sno
- FROM Score A
- WHERE Cscore<
- (SELECT AVG(Cscore)
- FROM Score B
- WHERE A.Cno = B.Cno));
- 、 查询“信息系”中选课最多的学生学号;
- SELECT Score.Sno
- FROM Score ,Student
- WHERE Sdept ='信息系'
- AND Score.Sno=Student.Sno
- GROUP BY Score.Sno
- HAVING COUNT(*)>=ALL
- (SELECT COUNT(*)
- FROM Score,Student
- WHERE Sdept='信息系'
- AND Score.Sno=Student.Sno
- GROUP BY Score.Sno);
- SELECT TOP Score.Sno, COUNT(*) NumOfCourse
- FROM Student,Score
- WHERE Sdept='信息系' AND student.Sno=Score.Sno
- GROUP BY Score.Sno
- ORDER BY NumOfCourse DESC ;
- SELECT TOP Student.Sno
- FROM
- (SELECT Sno,COUNT(*)
- FROM Score
- GROUP BY sno)
- AS st(sno,cnt),Student
- WHERE st.sno=Student.Sno AND Student.Sdept='信息系'
- ORDER BY st.cnt DESC ;
- 、 查询有两门及以上课程不及格的学生学号和姓名;
- SELECT Sname,Sno
- FROM Student
- WHERE Sno IN
- (SELECT s1.Sno
- FROM
- (SELECT *
- FROM Score
- WHERE Cscore<) s1
- GROUP BY s1.Sno
- HAVING COUNT(*)>);
- 我的:
- SELECT Sno,Sname
- FROM Student
- WHERE
- (SELECT COUNT(*) FROM Score WHERE Student.Sno=Score.Sno AND
- (Cscore< OR Cscore=NULL))>=;
- 、 查询比“”号课程平均分高的其它课程信息;
- 我的:
- SELECT Course.*
- FROM Course,Score A
- WHERE Course.Cno = A.Cno AND
- A.Cno!='' AND
- (SELECT AVG(Cscore)
- FROM Score B
- WHERE A.Cno=B.Cno)>
- (SELECT AVG(Cscore)
- FROM Score
- WHERE Cno ='')
- SELECT *
- FROM Course
- WHERE Cno IN
- (SELECT Cno
- FROM Score
- GROUP BY Cno
- HAVING Cno <> '' AND AVG(Cscore)>
- (SELECT AVG(Cscore)
- FROM Score
- GROUP BY Cno
- HAVING Cno = ''));
- 、 查询选修了所有课程的学生学号和姓名。
- 我的:
- SELECT Sno,Sname
- FROM Student
- WHERE NOT EXISTS
- (SELECT *
- FROM Course
- WHERE NOT EXISTS
- (SELECT *
- FROM Score
- WHERE Sno = Student.Sno
- AND Cno=Course.Cno));
- SELECT Sno
- FROM Score
- GROUP BY Sno
- HAVING COUNT(*) =
- (SELECT COUNT(*)
- FROM Course);
数据库SQL语言学习--上机练习2(连接查询 嵌套查询)的更多相关文章
- 数据库SQL语言学习--上机练习4(视图)
上机练习4 一.实验目的 . 熟悉和掌握对数据表中视图的查询操作和 SQL 命令的使用: . 熟悉和掌握对数据表中视图的更新操作和 SQL 命令的使用,并注意视图更新与基本表更新的区别与联系: . 学 ...
- 数据库SQL语言学习--上机练习3(插入 更新 删除)
上机练习3 . 将一个新学生记录(学号::姓名:陈冬:性别:男:所在系:信息系:年龄:20岁)插入到Student表中: ALTER TABLE Student ,); UPDATE Student ...
- 数据库SQL语言从入门到精通--Part 6--单表查询(快来PICK)
数据库从入门到精通合集(超详细,学习数据库必看) 查询操作是SQL语言中很重要的操作,我们今天就来详细的学习一下. 一.数据查询的语句格式 SELECT [ALL|DISTINCT] <目标列表 ...
- 数据库SQL语言学习----左外连接,右外连接,外连接,自然连接的形象对比
现在有两张表,一张Student 另一张Score 1.查询每个学生及其选修课程的情况: 自然连接,Sno在Cscore中找不到就不显示,Cno在Cscore中找不到也不显示 SELECT Stu ...
- 数据库SQL语言学习--上级练习1(数据查询)
上机练习1 1. 启动SQL Server 2008中的 SQL Server Management Studio. 2. 创建数据库Student ...
- 数据库SQL语言从入门到精通--Part 4--SQL语言中的模式、基本表、视图
数据库从入门到精通合集(超详细,学习数据库必看) 前言: 使用SQL语言时,要注意SQL语言对大小写并不敏感,一般使用大写.所有符号一定是西文标点符号(虽然是常识,但我还是提一嘴) 1.模式的定义与删 ...
- 数据库SQL语言从入门到精通--Part 1--SQL语言概述
数据库从入门到精通合集(超详细,学习数据库必看) 一.SQL概述 关系数据库标准语言SQL(结构化查询语言). 结构化查询语言(Structured Query Language)简称SQL,是一种特 ...
- SQL语言学习-数据定义语言
Sql语言至今已经有6个版本.SQL查询语言包括了所有对数据的操作命令,这些操作可分为四类:数据定义语言(DDL).数据操纵语言(DML).数据控制语言(DCL)和嵌入式SQL语言. 数据定义语言(D ...
- 数据库SQL语言类型(DQL.DML.DDL.DCL)
1.SQL语言 SQL(Structure Query Language)语言是数据库的核心语言. SQL是一个标准的数据库语言, 是面向集合的描述性非过程化语言. 它功能强,效率高,简单易学易维护. ...
随机推荐
- EasyUI datagrid combox onchange 五
$("#sTwo").combobox({ onChange: function (n,o) { n改变后,o改变前 }
- python-基础-文件
一.文件操作 打开文件时,需要指定文件路径和以何等方式打开文件, 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件的模式有: r ,只读模式[默认模式 ...
- tomcat 9.0中,用cookie进行会话时出现的不合法字符问题
https://blog.csdn.net/KooKing_L/article/details/77435717 An invalid character [32] was present in th ...
- codeforces 788A Functions again
…… 原题: Something happened in Uzhlyandia again... There are riots on the streets... Famous Uzhlyandia ...
- Node学习笔记2:建立HTTP服务器和客户端之间的通信
http服务器端: var http = require('http'); var server = http.createServer(); server.on('request', functio ...
- Linux下安装jdk&Jmeter
一.在Linux上部署一个jdk以及Jmeter tips1:Linux安装tar.gz文件到路径 tar -zxvf 软件包名.tar.gz -C 路径 比如我的jdk-8u131-linux- ...
- prop-types:该第三方库对组件的props中的变量进行类型检测
利用prop-types第三方库对组件的props中的变量进行类型检测
- git在不同平台windows、linux、mac 上换行符的问题
0.01 不同平台上换行符的问题 1,不同平台对换行符的制定不同 windows <回车换行> (carriage return AND line feed) “\n\r” CRLF Un ...
- CF 316G3 Good Substrings——广义后缀自动机
题目:http://codeforces.com/contest/316/problem/G3 对询问串和模式串一起建一个后缀自动机,做出在每个串上的 right 集合大小之后枚举自动机上的每个点看看 ...
- Nginx + Tomcat搭建集群
一.Tomcat集群带来的好处 1.提高服务的性能,并发能力,以及高可用性 2.提供项目架构的横向扩展能力 二.Tomcat集群实现原理 通过Nginx负载均衡进行请求转发 三.Nginx + Tom ...