上机练习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(连接查询 嵌套查询)的更多相关文章

  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. Python--函数对象@命名空间与作用域@包函数@装饰器@迭代器@内置函数

    一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(Firs ...

  2. hdu2609 How many 字典树+最小表示法

    Give you n ( n < 10000) necklaces ,the length of necklace will not large than 100,tell meHow many ...

  3. hdu1686 Oulipo KMP/AC自动机

    The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e ...

  4. hdu1542 Atlantis 线段树--扫描线求面积并

    There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some ...

  5. ArrayList 与 LinkedList的区别

    今天查看源码,分析一下两者的异同.外加阐述内部类. 内部类参考官方文档,地址如下: https://docs.oracle.com/javase/tutorial/java/javaOO/nested ...

  6. 静态代码块 2.构造代码块3.构造方法的执行顺序是1>2>3;明白他们是干嘛的就理解了。

    1.静态代码块 2.构造代码块3.构造方法的执行顺序是1>2>3;明白他们是干嘛的就理解了.1.静态代码块:是在类的加载过程的第三步初始化的时候进行的,主要目的是给类变量赋予初始值.2.构 ...

  7. codeforces 788A Functions again

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

  8. itcast-svn

    svn介绍 1.1     svn服务器的工作方式 数据   库  服务 概念   使用数据库,连接服务,服务操作库 独立服务器方式: svnserve 借助Apache方式: mod_dav_svn ...

  9. SQL相关语句

    1.分类 数据定义语言(DDL),用来定义数据库.表 列 ,用到的关键字:create.alter.drop. 数据操作语言(DML),数据库进行更行的操作, insert.delete.update ...

  10. Collection接口中方法的使用

    Collection:集合的接口 1.Collection和ArrayList和List的关系 ArrayList      implement(实现)       List List        ...