数据库 实验二 查询

这篇具有很好参考价值的文章主要介绍了数据库 实验二 查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验内容

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且成绩在8090分之间的学生学号和成绩,并将成绩乘以系数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
数据库 实验二 查询文章来源地址https://www.toymoban.com/news/detail-422685.html

到了这里,关于数据库 实验二 查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库 SQL高级查询语句:聚合查询,多表查询,连接查询

    创建Students和Courses表 直接查询 设置别名查询 设置条件查询 使用COUNT(*) 和 COUNT(StudentID)是一样的效果,因为StudentID是主键,每行记录的主键都不同。另外我们在聚合查询中还是能使用WHERE子句的,比如我们要 查找年龄大于20岁的学生数量 ,可使用以下SQL语句: 函数 说明 SUM

    2024年02月09日
    浏览(99)
  • WordPress必备数据库SQL查询语句整理

    最近明月给博客和主站都部署了SSL证书,彻彻底底的加入了HTTPS站点行列。这个期间也用到了SQL查询语句来批量的对内链的HTTP前缀做替换,就感觉掌握一些SQL方面的语句还是非常有必要的,这不在【俄语译客】博客上就发现了几条比较实用的,适合 WordPress 实用的SQL语句。于

    2024年02月01日
    浏览(87)
  • MySQL数据库——MySQL SELECT:数据表查询语句

    在 MySQL 中,可以使用 SELECT 语句来查询数据。查询数据是指从数据库中根据需求,使用不同的查询方式来获取不同的数据,是使用频率最高、最重要的操作。 SELECT 的语法格式如下: 其中,各条子句的含义如下: {*|字段列名} 包含星号通配符的字段列表,表示所要查询字段的

    2024年02月05日
    浏览(43)
  • 数据库学习笔记-----SQL查询语句和代码演示

    SQL不区分大小写,本文是邹兆年老师的课件和课堂的部分内容总结,部分比较细的内容请看课件 Db笔记(1).pdf 数值型: 整型:INT/SMALLINT/BIGINT        4个字节/两个字节/八个字节 浮点型:NUMERIC/DECIMAL(p,s):定点数,p位有效数字,小数点后s位                               

    2023年04月12日
    浏览(54)
  • 数据库的基础学习1:select语句的查询

    数据库的三个阶段:人工管理阶段、文件系统阶段、数据库系统阶段 数据库管理系统:DBMS 常见的关系型数据库:Oracle、DB2、mysql 常见的非关系型数据库:MongoDB、redies sql的四部分: DML(update、delete、insert) DDL(create、drop、alter、truncate) DQL(select查询语句) DCL(对数据进行变

    2024年02月08日
    浏览(48)
  • 有关MySQL onlinedb数据库的一些查询语句

    (1)查询users表,列出用户的所有信息。 SELECT * FROM users; (2)查询goods表,列出商品编号、名称和进货量(库存量+销售量,列名为purchases). SELECT gid, gname, (gquantity + gsale_qty) AS purchases FROM goods; (3)查询users表,找出2000年以后出生的用户,列出用户名、性别和所在城市。 SELECT uname,

    2024年02月07日
    浏览(35)
  • 《数据库原理》实验六 SQL数据查询实验

    本系列传送门: 实验二 SQL Server SSMS工具创建和管理数据库及数据表 实验三 SQL Server SSMS工具添加数据 实验四 SQL的数据定义语句 实验五 数据库完整性约束的实现与验证 实验六 SQL数据查询实验 实验六(2) SQL数据查询—连接查询 实验七 SQL的数据更新和视图 实验八 T_SQL编程

    2024年02月03日
    浏览(83)
  • 数据库 实验二 查询

    1、用SQL语句表示下列操作,在学生库中实现 数据查询 。 (1)求数学系学生的学号和姓名。 (2)求选修了课程的学生学号。 (3)求选修001号课程的学生学号和成绩,并要求对查询结果 按成绩降序 排列,如果成绩相同则 按学号升序 排列。 (4)求选修课程001且成绩在80~

    2023年04月23日
    浏览(29)
  • 数据库实验三 数据查询二

    任务描述 本关任务:查询来自借阅、图书、读者数据表的数据 为了完成本关任务,你需要掌握: 如何多表查询 相关知识 查询多个数据表 在实际应用中,查询经常会涉及到几个数据表。 基于多个相关联的数据表进行的查询称为连接查询。 命令格式: select * from 数据表 fro

    2024年02月09日
    浏览(36)
  • 实验二 数据库的查询

    2学时 (1)掌握查询的概念和方法。 (2)掌握查询命令窗口的使用方法。 (3)熟练掌握单表查询的select语句。 (4)熟练掌握聚合函数的使用。 (5)熟练掌握复杂查询的select语句。 (6)熟练掌握连接查询方法。 (7)熟练掌握嵌套查询方法。 (1)硬件设备:奔腾II或奔腾

    2024年02月01日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包