数据库 简单查询 Sql Server 学生表 课程表 选课表
创建教材中的三张表格,并输入相应的数据
Create table student(
Sno char(9),
Same char(20),
Ssex char(2),
Sage smallint,
Sdept char(20)
);
Create table course(
Cno char(4),
Cname char(40),
Cpno char(4),
Ccredit smallint
);
Create table sc(
Sno char(9),
Cno char(4),
Grade smallint
);
Insert into student values(‘200215121’,’李勇’,’男’,20,’cs’);
Insert into student values(‘200215122’,’刘晨’,’女’,19,’cs’);
Insert into student values(‘200215123’,’王敏’,’女’,18,’ma’);
Insert into student values(‘200515124’,’张立’,’男’,19,’is’);
Insert into course values (‘1’,’数据库’,’5’,4);
Insert into course values (‘2’,’数学’,NULL,2);
Insert into course values(‘3’,’信息系统’,’1’,4);
Insert into course values(‘4’,’操作系统’,’6’,3);
Insert into course values(‘5’,’数据结构’,’7’,4);
Insert into course values(‘6’,’数据处理’,NULL,2);
Insert into course values(‘7’,’pascal语言’,’6’,4);
Insert into sc values(‘200215121’,’1’,92);
Insert into sc values(‘200215121’,’2’,85);
Insert into sc values(‘200215121’,’3’,88);
Insert into sc values(‘200215122’,’2’,90);
Insert into sc values(‘200215122’,’3’,80);
查询语句1:
1. 列出所有不姓李的所有学生;
select *FROMStudent
where SnameNOTLIKE
'李%'
2. 列出姓“张”且全名为2个汉字的学生
select *FROMStudent
where SnameLIKE'张_'
3. 显示在1993年以后出生的学生的基本信息;
select *FROMStudent
where Sage<2015-1993
4. 查询出课程名含有“数据”字串的所有课程基本信息;
select *FromCourse
where CnameLIKE'%数据%'
5. 列出选修了‘1’课程的学生学号,按成绩的降序排列;
select SnoFROMSC
where Cno='1'ORDERBY
Grade DESC
6. 列出课程表中全部信息,按先修课的升序排列;
select *FROMCourse
ORDER BY
CpnoASC
7. 列出年龄超过平均值的所有学生名单,按年龄的降序显示;
select *FROMStudent
where Sage>(SELECTAVG(Sage)
FROM Student)ORDERBY
Sage DESC
8. 按照出生年份升序显示所有学生的学号、姓名、性别、出生年份及院系,在结果集中列标题分别指定为“学号,姓名,性别,出生年份,院系”;
select Sno学号,Sname
姓名,Ssex性别,2014-Sage出生年月,Sdept院系FROM StudentORDERBY 2014-SageASC
9. 按照课程号、成绩降序显示课程成绩在80-90之间的学生的学号、课程号及成绩
selectSno,Cno,GradeFROMSC
where Gradebetween 80AND 90ORDER
BY Cno
DESC,GradeDESC
10.显示学生信息表中的学生总人数及平均年龄,在结果集中列标题分别指定为“学生总人数,平均年龄”;
select
COUNT(DISTINCTSno)学生总人数,AVG(Sage)平均年龄FROM Student
11.显示选修的课程数大于2的各个学生的选修课程数;
select Sno学号,COUNT(Sno)选修课程数
FROM SCGROUPBYSno
HAVING COUNT(*)>2
12.显示平均成绩大于“2002151022”学生平均成绩的各个学生的学号、平均成绩;
select Sno,AVG(Grade)
from
SCGroup
by Snohaving
AVG(Grade)>(selectAVG(Grade)fromSCwhere Sno='200215122')
查询语句2:
1、查询所有学生的Sname、Cname和Grade列。
SELECT Sname,Cname,Grade
FROM
Student,Course,SCwhere
Student.Sno=SC.SnoandSC.Cno=Course.Cno;
2、查询所有选修“数据库”课程的同学的成绩。
SELECT Student.Sno,Sname,Cname,Grade
FROM
Student,Course,SCwhere
Cname='数据库'ANDCourse.Cno=sc.CnoANDStudent.Sno=sc.Sno;
3、查询和“李勇”同性别的同学Sname.
SELECT x.SnameFROMStudentx
where
x.Ssex=(selectSsexFROM
Student y
WHEREy.Sname='李勇')ANDx.Sname!='李勇'
4、查询所有同学的基本情况和选课情况,包括未选课的同学。
/* SELECTStudent.*,SC.* FROM Student,SC where Student.Sno=sc.Sno */
SELECT Student.*,SC.*
FROM
StudentLEFT OUTERJOINSC
ON(Student.Sno=SC.Sno)
5、查询选修1号课程且成绩高于90分的同学的名字。
SELECT SnameFROMStudent,SC
WHERE
Student.Sno=sc.SnoANDCno='1'ANDGrade>90
6、查询和学号为200215121的同学相同年龄的所有学生的Sno、Sname列。
由于该题学号为200215121时,没有其他同学与他年龄相同,故实验中把学号改为200215122。查询结果包括“刘晨”自己。
SELECT x.Sno,x.SnameFROMStudent
xwhere
x.Sage=(SELECTy.SageFROMStudent
y WHERE
y.Sno='200215122')
7、查询刘晨同学所有的成绩。
SELECT Sname,Cno,Grade
FROM
Student,SCwhere
Student.Sname='刘晨'ANDStudent.Sno=Sc.Sno
8、查询非计算机系的不超过计算机系所有学生的年龄的学生姓名。
SELECT x.SnameFROMStudentx
WHERE
x.Sage<(SELECTMIN(y.Sage)FROM
Studenty WHEREy.Sdept='CS')ANDx.Sdept!='CS'
查询语句3
1 、使用带IN谓词的子查询
(1) 查询与刘晨在同一个系学习的学生的学号和性名。
select Sno,SnameFROM
Student
WHERE
SdeptIN(SELECTSdept
From Student
WHERE Sname='刘晨')
AND Sname!='刘晨'
(2) 查询选修了数据库课程的学生的学号和姓名。
SELECT Sno,SnameFrom
Student
WHERE
SnoIN(SELECTSno
From SC
WHERE Cno
IN(SELECTCno
FROM Course
WHERE CnameIN('数据库')))
(3) 查询选修了1号课程和2号课程的学生的学号和姓名。
SELECT Sno,SnameFROM
Student
WHERE
SnoIN(SELECTSno
FROM SC
WHERE CnoIN('1','2'))
2 、使用带比较运算的子查询
(4) 查询比男生平均年龄小的所有学生的信息。
SELECT *FROM
Student /*因为AVG是采取舍去计数,故要加等号*/
WHERE
Sage<=(SELECTAVG(Sage)FROM
Student WHERE
Ssex='男')
(5) 查询比王敏年龄大的所有学生的信息。
SELECT *FROM
Student
WHERE
Sage>(SELECTSage
FROM Student
WHERE Sname='王敏')
3 、使用带有ANY,ALL谓词的子查询
(6) 查询其它系中比计算机系CS所有学生年龄都要小的学生姓名和年龄。
SELECT Sname,SageFROM
Student
WHERE
Sdept!='CS'
AND
Sage<=ALL(SELECTSage
FROM Student
WHERE Sdept='CS')
(7) 查询与计算机系所有学生的年龄均不同的学生学号,姓名和年龄
SELECT Sno,Sname,SageFROM
Student
WHERE Sage!=ALL(SELECTSage
FROM Student
WHERE Sdept='CS')
4 、使用带Exists谓词的子查询和相关子查询
(8) 查询选修了数据库的学生的姓名和学号
SELECT Sname,SnoFROM
Student
WHERE
EXISTS(SELECT*
FROM SC
WHERE
Student.Sno=SnoAND
Cno
IN(SELECTCno
FROM Course
WHERE Cname='数据库'))
(9) 查询没有选修数据库的学生姓名和学号
SELECT Sname,SnoFROM
Student
WHERE
NOTEXISTS(SELECT*
FROM SC
WHERE
Student.Sno=SnoAND
Cno
IN(SELECTCno
FROM Course
WHERE Cname='数据库'))
(10)查询所有选修了1号课程的学生姓名。
SELECT SnameFROM
Student
WHERE
EXISTS(SELECT *FROM
SC
WHERE
Student.Sno=SnoAND
Cno='1')
(11)查询没有人选修的课程的课程号和课程名。
SELECT Cno,CnameFROM
Course
WHERE
NOTEXISTS(SELECT*
FROM SC
WHERE Course.Cno=Cno)
数据库 简单查询 Sql Server 学生表 课程表 选课表的更多相关文章
- sql server 很好的基础练习 <学生表-老师表-课程表-选课表>
表结构 --学生表tblStudent(编号StuId.姓名StuName.年龄StuAge.性别StuSex) --课程表tblCourse(课程编号CourseId.课程名称CourseName. ...
- SQL Server 基础之《学生表-教师表-课程表-选课表》(二)
表结构 --学生表tblStudent(编号StuId.姓名StuName.年龄StuAge.性别StuSex) --课程表tblCourse(课程编号CourseId.课程名称CourseName. ...
- SQL Server 基础之《学生表-教师表-课程表-选课表》
一.数据库表结构及数据 建表 CREATE TABLE Student ( S# INT, Sname ), Sage INT, Ssex ) ) CREATE TABLE Course ( C# I ...
- SQL Server 基础之《学生表-教师表-课程表-选课表》(一)
数据库表结构及数据 建表 CREATE TABLE Student ( S# INT, Sname ), Sage INT, Ssex ) ) CREATE TABLE Course ( C# INT ...
- 查询Sql Server数据库对象结构
查询Sql Server数据库对象结构 查询数据库 查询架构 查询表 查询列 查询存储过程 查询视图 1.查询某一服务器下所有数据库 select t.[name] as 数据库 from sys.d ...
- sql server 复制表从一个数据库到另一个数据库
sql server 复制表从一个数据库到另一个数据库 /*不同服务器数据库之间的数据操作*/ --创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQL ...
- 【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表
原文:[SQL Server高可用性]数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表 经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使 ...
- SQL Server 锁表、查询被锁表、解锁相关语句
SQL Server 锁表.查询被锁表.解锁相关语句,供参考. --锁表(其它事务不能读.更新.删除) BEGIN TRAN SELECT * FROM <表名> WITH(TABLOCK ...
- Sql Server 判断表或数据库是否存在
发布:thebaby 来源:脚本学堂 [大 中 小] 本文详细介绍了,在sql server中判断数据库或表是否存在的方法,有理论有实例,有需要的朋友可以参考下,一定有帮助的.原文地址:h ...
随机推荐
- python按行读取apk中版本号、包名等信息
主要是读apk中manifest.xml中的信息. 读单一apk信息:见“文件”中“apkInfo.xml”.实际运行时,需要将后缀由“.xml”改为“.py". 批量自动获取apk软件信息 ...
- win10 microsoft edge 浏览器收藏夹位置
1.打开文件夹,找到(注意 用户名 改为你自己的用户名) C:\Users\用户名\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bb ...
- .Net Framework 与 SQL Server 2005 混乱的时间最大最小值
Net Framewrok 中,DateTime.MinValue => 0001/01/01 00:00:00SqlDateTime.MinValue.Value => 1753/01 ...
- tony_update yum
更改方法是这样的 在 /etc/yum.repos.d 下 1 wget http://mirrors.163.com/.help/CentOS6-Base-163.repo 2 #mv Cen ...
- Ubuntu安装sublime test 3 (Build 3126)
Ubuntu下 Sublime Text 3 (Build 3143) 存在一些bug........ 满心欢喜地更新后, 又默默换回Build 3126 1. 安装 sudo apt-get upd ...
- 自动清理DataGuard备机日志
>> from zhuhaiqing.info #!/usr/bin/bash #删除DataGuard备机归档日志备份 export ORACLE_HOME=/opt/oracle/pr ...
- C# 为枚举创建新方法
可以使用扩展方法添加特定于某个特定枚举类型的功能. 示例在下面的示例中,Grades 枚举表示学生可能在班里收到的字母等级分.该示例将一个名为 Passing 的扩展方法添加到 Grades 类型中, ...
- c语言中external,static关键字用法
static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...
- 利用socket.io实现消息实时推送
最近在写的项目中存在着社交模块,需要实现这样的一个功能:当发生了用户被点赞.评论.关注等操作时,需要由服务器向用户实时地推送一条消息.最终完成的项目地址为:socket-message-push,这里 ...
- php 在linux 用file_exists() 函数判断 另外一台服务器映射过来的文件是否存在 总是返回false
php 在linux 用file_exists() 函数判断 另外一台服务器映射过来的文件是否存在 总是返回false .如下案例 $type="android"; $url=&q ...