一、实验内容

1、用SQL语句表示下列操作,在学生库中实现数据查询
(1)求数学系学生的学号和姓名。
(2)求选修了课程的学生学号。
(3)求选修001号课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
(4)求选修课程001且成绩在80~90分之间的学生学号和成绩,并将成绩乘以系数0.8 输出。
(5)求数学系或计算机系姓张的学生的信息。
(6)查看选修了课程、但没有成绩学生的学号、姓名、课程号和所在是系部。
(7)查询学生的学号、姓名、课程名和成绩。
(8)分别实现学生和系的交叉连接、内连接外连接
2、在SQL Server查询分析器中使用IN比较符ANYALLEXISTS操作符进行嵌套查询操作。具体内容如下:
用SQL语句表示,在学生选课库中实现其数据嵌套查询操作。
(1)求选修了高等数学的学生学号和姓名。
(2)求001课程的成绩高于张力的学生学号和成绩。
(3)求其他系中年龄小于计算机系年龄最大者的学生。
(4)求其他系中比计算机系学生年龄都小的学生。
(5)求选修了001课程的学生姓名。
(6)求没有选修001课程的学生姓名。
(7)查询选修了全部课程的学生的姓名。

二、实验代码

-- theme 数据库实验二
--author dahua
-- data by 2022.6.11--创建一个学生数据库create database Student;--1.创建第一个表:学生表
create table student1(sno char(9) primary key,   --将学号设置为主码
sname char(20),
ssex char(2),
sage int,
sdept char(20)
);--插入元组
insert
into student1(sno,sname,ssex,sage,sdept)
values('01','张力','男',20,'计算机系'), ('02','雷杰多','男',19,'体育系'),('03','赛迦','男',19,'电子工程系'),('04','诺亚','男',19,'计算机系'),('05','玛丽','女',19,'数学系'),('06','盖亚','男',20,'化工化学系'),('07','张三','男',20,'计算机系'),('08','赛罗','男',19,'数学系'),('09','雷欧','男',20,'数学系'),('10','张四','男',18,'数学系');--修改表中数据
update student1 set sage=18 where sno='09';--创建索引
create unique index stusno1 on student1(sno);--2.创建第二个表:课程表
create table course1(cno char(9) primary key,   --将课程号设置为主码
cname char(30),
cpno char(30),             --先行课
cpoint int                 --学分
);--插入元组
insert
into course1(cno,cname,cpno,cpoint)
values('001','高等数学A1','无',4.5),('002','大学英语1','无',3),('003','C++程序设计A1','无',3),('004','计算机导论','无',1.5),('005','军事理论','无',1),('006','思想道德修养','无',3),('007','高等数学A2','001',4),('008','大学英语2','002',2),('009','大学物理C','无',4),('010','C++程序设计A2','003',2);--创建索引
create unique index coucno1 on course1(cno);--3.创建第三个表:选课表
create table sc1(sno char(9),
cno char(9),
grade int
primary key(sno,cno),
foreign key(sno) references student1(sno),  --外码
foreign key(cno) references course1(cno),   --外码
);--插入元组
insert
into sc1(sno,cno,grade)
values('01','001',92),('01','002',95),('01','003',90),('01','004',92),('01','005',94),('01','006',90),('01','007',92),('01','009',96),('01','010',91),('02','001',86),('02','002',97),('02','003',86),('02','004',99),('02','005',97),('02','006',92),('02','007',86),('02','008',89),('02','009',90),('02','010',86),('03','001',96),('04','001',96),('04','004',97),('04','007',85),('04','008',86),('04','003',96),('05','001',84),('06','001',84),('06','003',null),('06','007',97);--4.创建第四个表:系部表
create table department1(dno char(9) primary key,
dname char(20),
manager char(20)
);--插入元组
insert
into department1(dno,dname,manager)
values('202001','机械工程系','萧峰'),('202002','电子工程系','段誉'),('202003','自动化系','虚竹'),('202004','化学与化工系','王语嫣'),('202005','计算机系','阿朱'),('202006','环境与安全系','阿紫'),('202007','材料工程系','木婉清'),('202008','理学系','瑛姑'),('202009','外语系','慕容复'),('202010','设计艺术系','游坦之');--创建索引
create unique index departmentdno1 on department1(dno);--1.(1)求数学系学生的学号和姓名。
select sno,sname from student1 where sdept='数学系';--1.(2)求选修了课程的学生学号。
select distinct sno from sc1;--1.(3)求选修001号课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
select sno,grade from sc1 where cno='001' order by grade desc,sno asc;--1.(4)求选修课程001且成绩在80~90分之间的学生学号和成绩,并将成绩乘以系数0.8 输出。
select sno,0.8*grade from sc1 where cno='001' and grade between 80 and 90;--1.(5)求数学系或计算机系姓张的学生的信息。
select * from student1 where sdept in('数学系','计算机系') or sname like '张_%';--1.(6)查看选修了课程、但没有成绩学生的学号、姓名、课程号和所在是系部。
select sc1.sno,student1.sname,cno,student1.sdept from student1,sc1 where sc1.cno is not null and grade is null and sc1.sno=student1.sno;--1.(7)查询学生的学号、姓名、课程名和成绩。
select  sc1.sno,sname,cname,sc1.grade from student1,sc1,course1 where sc1.sno=student1.sno and sc1.cno=course1.cno;--1.(8)分别实现学生和系的交叉连接、内连接、外连接。
select student1.*,department1.* from department1 cross join student1;
select student1.*,department1.* from student1 inner join department1 on student1.sdept = department1.dno;
select student1.*,department1.* from  student1 left outer join department1 on student1.sdept = department1.dno;--2.(1)求选修了高等数学A1的学生学号和姓名。
select sno,sname from student1 where sno in(select sno from sc1 where cno=(select cno from course1 where cname='高等数学A1'));--2.(2)求001课程的成绩高于张力的学生学号和成绩。
select a.sno,a.grade from sc1 a,sc1 b where a.cno=001 and b.cno=001 and a.grade>b.grade and a.sno!=b.sno and b.sno=(select sno from student1 where sname='张力');--2.(3)求其他系中年龄小于计算机系年龄最大者的学生。
select sname,sage,sdept from student1 where Sage < any(select max(sage) from student1 where sdept='计算机系' ) and sdept <> '计算机系';--2.(4)求其他系中比计算机系学生年龄都小的学生。
select sname,sage,sdept from student1 where Sage < all(select sage from student1 where sdept='计算机系' ) and sdept <> '计算机系';--2.(5)求选修了001课程的学生姓名。
select sname from student1,sc1 where student1.sno = sc1.sno and cno='001';--2.(6)求没有选修001课程的学生姓名。
select sname from student1 where not exists (select * from sc1 where sno=student1.sno and cno='1');--2.(7)查询选修了全部课程的学生的姓名。
select sname from student1 where not exists(select * from course1 where not exists(select * from sc1 where sno=student1.sno and CNo = course1.cno));

三、运行结果

3.1问题一的运行结果图
3.1.1

3.1.2

3.1.3

3.1.4

3.1.5

3.1.6

3.1.7

3.1.8

3.2问题二的运行结果图
3.2.1

3.2.2

3.2.3

3.2.4

3.2.5

3.2.6

3.2.7

数据库 实验二 查询相关推荐

  1. 数据库实验二之数据查询

    实验二 数据查询 一.实验目的 1.理解数据库中数据的其他查询方法和应用: 2.学会各种查询要求的实现: 3.学会各种查询的异同及相互之间的转换方法. 二. 实验内容 在实验1的基础上,练习其它查询语 ...

  2. MySQL数据库实验二 数据基本查询

    ★观前提示:本篇内容为mysql数据库实验,代码内容经测试过,可能一小部分有所疏漏,也有会不符合每个人实验的要求的地方,因此以下内容建议仅做思路参考,. 一.实验目的 1.掌握SQL查询语句的一般格式 ...

  3. 删除计算机系学生的选课记录6,天津理工大学+数据库实验二.doc

    文档介绍: 实验报告学院(系)名称:计算机与通信工程学院姓名Touchkiss学号20125577专业计算机科学与技术班级2班实验项目实验二:复杂SQL数据操作课程名称数据库系统课程代码0668026 ...

  4. 数据库实验二 SQL语言

    实验二 SQL语言 实验目的 熟悉并掌握创建表,插入记录,查询记录,删除记录,修改记录. 创建索引,删除索引. 创建视图,使用视图,删除视图. 实验内容 现有一个单位内部的小型图书借阅系统,假设每本图 ...

  5. 数据库实验二 SQL数据定义和操作

    SQL数据定义和操作 欢迎阅读本教程 一.数据定义 二.数据更新 三.数据查询 欢迎阅读本教程 掌握关系数据库语言 SQL 的使用. 使所有的 SQL 作业都能上机通过. 实现内容如下: 数据定义:表 ...

  6. 数据库实验二--学生选课数据库(OpenGuess)

    文章目录 实验二要求: 实验二 实验内容: (一)实验目的: (二)实验内容: 学生选课数据库的数据: 过程 打开数据库 新建数据库 创建模式和数据表 查询 建立索引 实验二要求: 实验二 实验内容: ...

  7. 西南科技大学数据库实验二(Oracle 11g)

    /* *实验二 数据查询 *时间:2019-11-25 *联系:2838215550@qq.com *附言:把代码写成一首诗. *SELECT [ ALL | DISTINCT] < 目标列表达 ...

  8. 数据库 ----- 实验二:SQL的数据定义和数据更新

    实验二 SQL的数据定义和数据更新 [实验目的和要求] 1.掌握SQL Server Management Studio中以SQL 命令方式和以向导方式操作表和数据的操作: 2.掌握SQL 的数据定义 ...

  9. 数据库实验二 ——1018

    --对xs表增加身份证号码属性列,要求是18位的字符类型 alter table xs add  身份证号 char(18) --1.查询有直接先行课的课程的课号,课名和先行课号. select 课程 ...

最新文章

  1. ASA与PIX的区别
  2. python 读取csv文件生成散点图
  3. 双系统gazebo闪退_记录Ubuntu16.04下PX4联合Gazebo仿真时遇到的问题与解决方法
  4. secureCRt中文乱码问题
  5. RHEL7.0系统相关配置
  6. 【无套路送书】架构师是怎样炼成的?
  7. java 二维数组动态添加,菜鸟求助: 二维数组如何实现动态接收?
  8. c++ 数据结构之 线段树
  9. C#上使用Echarts做报表
  10. 最新 android 机型,安卓11支持哪些机型,Android11适配机型一览
  11. 阿里矢量图可根据样式修改颜色
  12. 网络安全防护体系建设
  13. 基于jQuery的图片懒加载插件
  14. 快速开发小程序——案例
  15. Linux 系统 CPU 占用率较高问题排查思路
  16. ad中按钮开关的符号_送给初学者电工最常用电气元件实物图及对应符号
  17. UGUI优化(三)Hierarchy层级关系导致DrawCall升高
  18. 怎样从浏览器保存html文件在哪里,保存网页时HTML和MHTML区别在哪里
  19. 手机拍照-基础构图小结
  20. 无线网络连接适配器的驱动程序出现问题怎么解决

热门文章

  1. [有奖活动进行中]阿里数据库专家曾文旌为你解决数据库那些事
  2. 【Linux】计算机软硬件体系结构
  3. iOS 15.1即将上线,iPhone13的“苹果手表解锁”Bug已被修复
  4. 博弈优化实例:网络节点最小覆盖问题
  5. ASP.NET 2.0数据教程之三十六 在DataList里编辑和删除数据
  6. centos7下安装nginx
  7. 2004年11月12日
  8. 使body占有整个页面
  9. 求助如何写这种复杂的影射关系文件
  10. win10家庭中文正式版输入法切换快捷键设置为Ctrl+Shift