上机练习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. hdu1695 GCD 容斥原理

    Given 5 integers: a, b, c, d, k, you're to find x in a...b, y in c...d that GCD(x, y) = k. GCD(x, y) ...

  2. 字符常量 java

    从Java语言的定义,ABCD都是错误的,4个都不是正确的字符常量.可以查阅<JLS8>中的描述: A character literal is expressed as a charac ...

  3. pageContext中page、request、session、application四种范围变量的用法。

    在PageContext中有很多作用域 第一种:PageContext.PAGE_SCOPE适用于当前页面的作用域,其接受数据的代码是pageContext.getAttribute();访问页面也是 ...

  4. vue全家桶+Koa2开发笔记(8)--开发网页

    1.使用 mongoose 动态倒入数据 mongoimport -d student -c areas areas.dat -d 后面是数据库名称: -c后面是表名称 最后是数据源 2.使用vue的 ...

  5. 统计cpu相关信息

    我的cpu为i3310m 适用类型:笔记本 CPU系列:酷睿i3 3代系列 CPU主频:2.4GHz 三级缓存:3MB 插槽类型:FCBGA1023,FCPGA988 封装大小:37.5×37.5mm ...

  6. fcntl获取和修改文件打开状态标志

    [root@bogon code]# cat b.c #include<stdio.h> #include<error.h> #include<unistd.h> ...

  7. MySQL Transaction--MySQL与SQL Server在可重复读事务隔离级别上的差异

    MySQL和SQL Server两种数据库在REPEATABLE-READ事务隔离级别实现方式不同,导致使用上也存在差异. 在MySQL中,默认使用REPEATABLE-READ事务隔离级别,MySQ ...

  8. x的奇幻之旅 (史蒂夫·斯托加茨 著)

    第1部分 数字 第1章 数学:从企鹅的"鱼"订单到无穷大 (已看) 第2章 一组组石头与加减乘除运算 (已看) 第3章 "敌人的敌人就是朋友“与"负负得正&qu ...

  9. Python基础_私有变量访问限制

    Python内置了一些特殊变量,以前后上下划线标注,同时我们自己要想定义一些变量,不想让外部访问,又该怎么做呢?更多内容请参考:Python学习指南 访问限制 在class内部,可以有属性和方法,而外 ...

  10. Python网络_TCP/IP简介

    本章将介绍tcp网络编程,更多内容请参考:Python学习指南 Socket是网络编程的一个抽象概念,通常我们用一个Socket表示"打开了一个网络连接",而打开一个Socket需 ...