SQL语句题目练习

SQL语句实验题目

  1. 建立课程表
  2. 建立学生表
  3. 建立选课表
  4. 查询所有学生的详细信息(包含学生、选课及课程信息)
  5. 查询1班的学生学号及姓名
  6. 查询‘刘晨’的出生年
  7. 查询姓‘刘’的学生的详细情况(包括学生表、选课表及课程表的全部信息)
  8. 查询选修了1号课的学生姓名、性别、成绩
  9. 查询没有先行课的课程的课程号和课程名
  10. 查询2班的所有女生的情况
  11. 查询学分为2到3之间的课程号及课程名
  12. 查询选修1或2号课的学生的班号、学号、姓名、课程名及成绩
  13. 查询2班至少选修一门其先行课为1号课的学生的班号、学号、姓名、性别、系、课程号及成绩
  14. 查询2号科成绩最高的学生班号、学号
  15. 查询1班2号课成绩最低的学生班号、学号
  16. 查询选修2号课且成绩不是最低的同学班号、学号
  17. 查询包含2班1号同学所选全部课程的同学的班号、学号
  18. 查询选修每门课程的课程号及人数
  19. 实现上述数据库的备份和恢复功能

学习掌握SQL SERVER 2000环境数据库备份方法

练习SQL SERVER 数据库备份与恢复技术方法。

源程序代码和实验结果

E-R图:
在这里插入图片描述
建立 S_CS_C 数据库

create database S_SC_C;

1.建立课程表

create table Course
 (cno char(1) PRIMARY KEY,
 cname char(10) NOT NULL,
 cpno char(1),
 ccredit int 
 );

课程表:
在这里插入图片描述
2.建立学生表

create table Student 
(sclass char(1) NOT NULL ,
 sno char(1) ,
 sname char(4) NOT NULL,
 ssex char(2) NOT NULL, 
 sage smallint NOT NULL,
 sdept char(2) NOT NULL
 primary key (sno,sclass)
 )

学生表:
在这里插入图片描述
3.建立选课表

 create table SC
 (sclass char(1) NOT NULL,
 sno char(1),
 cno char(1),
 grade char(2),
 primary key (sno,cno, sclass),
 foreign key (sno,sclass) references Student (sno,sclass),
 foreign key (cno) references Course (cno)
 );

选课表:
在这里插入图片描述
4.查询所有学生的详细信息(包含学生、选课及课程信息)

select Student.sno,sname,ssex,Student.sclass,Sdept,SC.cno,grade,Course.cname,cpno,
ccredit 
from Student left outer join(SC join Course on SC.cno=Course.cno)on(Student.sclass=SC.sclass and Student.sno=SC.sno);

所有学生信息:
在这里插入图片描述
5.查询1班的学生学号及姓名

select sno,sname
from Student
where sclass='1';

1班的学生学号及姓名:
在这里插入图片描述
6.查询‘刘晨’的出生年

select 2019-sage BIRTH
from Student
where sname='刘晨' ;

‘刘晨’的出生年:在这里插入图片描述
7.查询姓‘刘’的学生的详细情况(包括学生表、选课表及课程表的全部信息)

select distinct *
from Student LEFT OUTER  JOIN SC ON (Student.sno=SC.sno AND Student.sclass=SC.sclass) left outer join Course on(Course.cno=SC.cno)
where sname like '刘%';

姓‘刘’的学生的详细情况:
在这里插入图片描述
8.查询选修了1号课的学生姓名、性别、成绩

select sname,ssex,grade
from Student LEFT OUTER  JOIN SC ON (Student.sno=SC.sno AND Student.sclass=SC.sclass) left outer join Course on(Course.cno=SC.cno)
where SC.cno=1;

在这里插入图片描述
9.查询没有先行课的课程的课程号和课程名

select Course.cno,Course.cname
from Course
where cpno is NULL;

在这里插入图片描述
10.查询2班的所有女生的情况

select *
from Student LEFT OUTER  JOIN SC ON (Student.sno=SC.sno AND Student.sclass=SC.sclass) left outer join Course on(Course.cno=SC.cno)
where ssex='女' AND Student.sclass=2;

在这里插入图片描述

11.查询学分为2到3之间的课程号及课程名

select cno,cname
from Course
where ccredit between 2 AND 3;

在这里插入图片描述
12.查询选修1或2号课的学生的班号、学号、姓名、课程名及成绩

select SC.sclass,SC.sno,Student.sname,Course.cname,SC.grade
from Student LEFT OUTER  JOIN SC ON (Student.sno=SC.sno AND Student.sclass=SC.sclass) left outer join Course on(Course.cno=SC.cno)
where SC.cno=1 OR SC.cno=2

在这里插入图片描述
13.查询2班至少选修一门其先行课为1号课的学生的班号、学号、姓名、性别、系、课程号及成绩

select Student.sclass,Student.sno,sname,ssex,sdept,SC.cno,grade
from Student ,SC
where Student.sno=SC.sno and Student.sclass=SC.sclass and SC.sclass=2 and  SC.cno in 
								(			select SC.cno
											from Course left outer join SC on (Course.cno=SC.cno)
											where Course.cpno=1

								);

在这里插入图片描述
14.查询2号科成绩最高的学生班号、学号
select sclass,sno
from SC
where cno=2 and grade >=all(select grade from SC where cno=2)
在这里插入图片描述
15.查询1班2号课成绩最低的学生班号、学号
方法一:

select sclass,sno
from Student
where sclass=1 AND sno in (
			select sno 
			from SC 
			where SC.cno=2 AND SC.sclass=1 AND SC.grade in (
						select MIN(grade)
						from SC
						where SC.cno=2 
			)
			);

方法二:

select sclass,sno
from SC 
where cno=2 and  sclass=1 and grade <=all(select grade from SC where cno=2 and sclass=1)

在这里插入图片描述
16.查询选修2号课且成绩不是最低的同学班号、学号

select  sclass,sno
from SC 
where cno=2 and grade >any (select grade 
								from SC 
								where cno=2);

在这里插入图片描述
17.查询包含2班1号同学所选全部课程的同学的班号、学号

select distinct SCX.sclass,SCX.sno
from SC SCX 
where not exists (
			select * 
			from SC SCY
			where SCY.sclass=2 and SCY.sno=1 and not exists
						(  select *
							from SC SCZ
							where SCZ.cno=SCY.cno and SCZ.sno=SCX.sno and SCZ.sclass=SCX.sclass
			)
);

在这里插入图片描述
18. 查询选修每门课程的课程号及人数

select cno,count(sno)
from SC
group by cno;

在这里插入图片描述
19. 实现上述数据库的备份和恢复功能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SQL是高级的非过程化编程语言,是沟通数据库服务器和客户端的重要工具,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以,具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的SQL接口。 它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。    结构化查询语言(Structured Query Language)最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、DB2、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。    美国国家标准局(ANSI)与国际标准化组织(ISO)已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通讯标准。ANSI同时也是ISO和International Electrotechnical Commission(IEC)的成员之一。ANSI 发布与国际标准组织相应的美国标准。1992年,ISO和IEC发布了SQL国际标准,称为SQL-92。ANSI随之发布的相应标准是ANSI SQL-92。ANSI SQL-92有时被称为ANSI SQL。尽管不同的关系数据库使用的SQL版本有一些差异,但大多数都遵循 ANSI SQL 标准。SQL Server使用ANSI SQL-92的扩展集,称为T-SQL,其遵循ANSI制定的 SQL-92标准。    SQL语言包含4个部分:    数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。    数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。    数据查询语言(DQL),例如:SELECT语句。    数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。    SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

20230921

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值