数据库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是一个标准的数据库语言, 是面向集合的描述性非过程化语言. 它功能强,效率高,简单易学易维护. ...
随机推荐
- linux 的IP配置和网络问题的排查
1.6 IP的配制, 首先要会用: ifconfig 和加相关参数如: ifconfig -a, 来查看,自己的电脑网络配制. 再次就必需要知道,默认IP配制文件的地方: cd /etc/sysc ...
- Json工具类JsonUtil
import com.alibaba.fastjson.JSONArray; import com.fasterxml.jackson.core.JsonProcessingException; im ...
- ionic后台返回的数据是html模板的时候,解析html文件的方法:
1.后台返回来的数据格式是: { "state":"100", "data":[ {"Content": "\ ...
- C# 的AOP实现
闲来无事,做了一个AOP示例,此示例只能捕获方法调用事件,无法动态阻止方法调用的执行.因为取消后构造返回值成了难题,返回null貌似会报错.如果不需要这个功能,其实还是很完美的. 缺点是没有以接口方式 ...
- 什么是pytorch(1开始)(翻译)
Deep Learning with PyTorch: A 60 Minute Blitz 作者: Soumith Chintala 部分翻译:me 本内容包含: 在高级层面理解pytorch的ten ...
- day 32 管道 事件 信号量 进程池
一.管道(多个时数据不安全) Pipe 类 (像队列一样,数据只能取走一次) conn1,conn2 = Pipe() 建立管道 .send() 发送 .recv() 接收 二.事 ...
- idea 中maven编译速度过慢的问题的解决
解决方案一 在创建Maven项目时加上 archetypeCatalog=internal 参数,如下: 解决方案二 在maven的VM Options加上-DarchetypeCatalog=int ...
- node api 之:process - 进程
process 对象是一个全局变量,它提供当前 Node.js 进程的有关信息,以及控制当前 Node.js 进程. 因为是全局变量,所以无需使用 require().
- spring-AOP框架(基于配置文件的方式配置AOP)
.xml: ref-指向,order-指定优先级
- C# 值传参和引用传参
值传递:对于个人理解,值传递就像是python中的深拷贝,值传递的内容和原来的内容是两份不同的东西,相互不影响. 引用传递:对于个人理解,引用传递就是python中的复杂多维list的浅拷贝,它传递的 ...