数据库PTA作业(一)

  • 前言
      • 一、选择题
      • 二、编程题
        • 10-1 查询姓‘李’的学生记录
        • 10-2 查询部分专业的学生
        • 10-3 单表查询:根据运费查询订单信息
        • 10-4 查询图书表中所有记录
        • 10-5 查询员工表全部信息
        • 10-6 查询学生表所有学生记录
        • 10-7 查询学生表中的女生信息
        • 10-8 查询所有学生的姓名及年龄,要求结果中列名显示中文
        • 10-9 查询xsda表中的学号、姓名、性别三项信息,结果按照女生优先的顺序显示。
        • 10-10 查询图书表中李凯所著的图书,要求查询结果中包括条形码,书名,作者,出版社4列。
        • 10-11 查询所有学生的学号、姓名、性别和出生日期
        • 10-12 查询所有年龄小于等于25岁的女生的学号和姓名
        • 10-13 查询Students表中的所有系名,要求结果中系名不重复
        • 10-14 2-1-(e) 查询所有的男影星或者住址中含有4的影星
        • 10-15 2-2-(a)查询价格低于1600美元的个人计算机的型号(model)、速度(speed)及硬盘容量(hd)
        • 10-16 3-1-(e)查询比a1更富有的行政长官
        • 10-17 A1-5在顾客表中找出特定名字的顾客信息
        • 10-18 A2-1查找产品表中再次订购量大于15的产品信息
        • 10-19 6-5 查询各种不同速度的PC的平均价格
        • 10-20 查询S001学生选修而S003学生未选修的课程
        • 10-21 A1-2根据所在国家查找订单信息
        • 10-22 A1-3查询顾客表中所有不重复的城市
        • 10-23 3-1-(d)查询比电影《M1》时间更长的电影
        • 10-24 A1-8查询传真号码不为空的供货商信息
        • 10-25 A2-3查询产品表中单价不在范围内的的产品信息
        • 10-26 A3-4查询产品表中最大库存量
        • 10-27 查询平均成绩高于75分的学生
        • 10-28 输出有成绩的学生学号和课号
        • 10-29 查询所有姓“刘”的学生信息
        • 10-30 查询生源地不是“山东”省的学生信息
        • 10-31 查询名字中含有“明”字的男生的学生姓名和班级
        • 10-32 查询姓名是两个字的学生信息
        • 10-33 查询非信息学院和机电学院的学生信息
        • 10-34 查询学生表中没有联系电话的学生信息
        • 10-35 计算“0000001”课程的平均分、最高分和最低分
        • 10-36 统计输出各系学生的人数
        • 10-37 查询选修了“0000008”课程的学生的学号及其成绩,查询结果按分数降序排列
        • 10-38 查询成绩不及格的学生学号、课号和成绩,并按成绩降序排列
        • 10-39 统计各系的男、女生人数
        • 10-40 统计不及格人数超过3人的课程号和人数
        • 10-41 查询信息学院的男生信息,查询结果按出生日期升序排序,出生日期相同的按生源地降序排序
        • 10-42 统计选修人数最多的3门课
    • 总结

前言

最近一直在准备考试考证,虽然有一直在刷题,但都没有做什么记录。最近新开了数据库的课程,记录些做作业过程中的新手体会


提示:以下是本篇文章正文内容,下面案例可供参考

一、选择题

2-1下面关于SQL、DDL、DML 及DCL的描述错误的是__D___。(2分)
A.DDL是对SQL语句中完成数据定义功能部分的称呼
B.DML是对SQL语句中完成数据操纵功能部分的称呼
C.DCL是对SQL语句中完成数据控制功能部分的称呼
D.SQL与DDL、DML 、DCL没有关系,均是独立的语言
2-2已知关系student (sno,sname,age,gender,place), 查询姓名中含有”小”字的同学姓名,年龄的SQL语句,正确的是(D )。 (2分)
A.Select sname 姓名,age 年龄 From student Where sname = '小';
B.Select sname 姓名, age 年龄 From student Where sname like '小%';
C.Select sname 姓名, age 年龄 From student Where sname like '_小%';
D.Select sname 姓名, age 年龄 From student Where sname like '%小%';
2-3下列哪个SQL 语句属于DDL 语句( B)。(2分)
A.Select ( insert update delete select)
B.Grant (grant rovoke )
C.Create (create drop truncate)
D.Insert
2-4在SQL Server2008数据库中,从Product表中查询出Price(价格)高于Pname (产品名称)为“网通IP电话卡”的所有记录中的最高价格的查询语句是(B )。(2分)
A.SELECT * FROM Product WHERE max(Price)>’网通IP电话卡’
B.SELECT * FROM Product WHERE Price>(SELECT max(Price)FROM Product WHERE Pname=’ 网通IP电话卡’)
C.SELECT FROM Product WHERE Price>(SELECT max()FROM Product WHERE Pname=’ 网通IP电话卡’)**
D.SELECT * FROM Product WHERE EXISTS Pname=’网通IP电话卡’
2-5在SQL Server 2008中,已知Student表中有一个age列,数据类型是int,如果要限制该列的取值范围在18到28之间,可以使用以下哪个SQL语句(C )。(2分)
A.alter table Student add unique(age>=18 and age<=28)
B.alter table Student add set(age>=18 and age<=28)
C.alter table Student add check(age>=18 and age<=28)
D.alter table Student add defult(age>=18 and age<=28)

二、编程题
10-1 查询姓‘李’的学生记录
select sno as 学号,sname as 姓名,sex as 性别,mno as 专业,birdate as 出生日期,memo as 备注
from stu
where sname like '李%'

姓名这类的一般模糊查询,select * from 表名 where name like '%李%'
其中, '%李%' 是名字中任意位置有“李”字;'李%'是以“李”字开头的;'%李'是以“李”字结尾的

10-2 查询部分专业的学生
select sno as 学号,sname as 姓名,sex as 性别,mname as 专业
from stu,major
where stu.mno=major.mno and mname in ('计算机工程','软件工程')
order by sno;
10-3 单表查询:根据运费查询订单信息
select orderid,customerid,employeeid
from orders
where Freight between 10 and 50
10-4 查询图书表中所有记录
select * from 图书
10-5 查询员工表全部信息
select * from 员工
10-6 查询学生表所有学生记录
select * from stu
10-7 查询学生表中的女生信息

select sno as 学号,sname as 姓名
from stu
where sex=0
10-8 查询所有学生的姓名及年龄,要求结果中列名显示中文

select sname as 姓名,(YEAR(CURDATE())-YEAR(bday)) as 年龄
from students

这题比较难的是只给了出生日期没有给年龄,需要计算。
方法一般有三种:
1、YEAR(CURDATE())-YEAR(bday)
2、year(2021-getdate())
3、datediff(year,birthday,getdate())
例:birthday = '2003-3-8' getDate()= '2008-7-7'

10-9 查询xsda表中的学号、姓名、性别三项信息,结果按照女生优先的顺序显示。
select 学号,姓名,性别
from xsda
order by 性别 desc;
10-10 查询图书表中李凯所著的图书,要求查询结果中包括条形码,书名,作者,出版社4列。
select 条形码,书名,作者,出版社
from 图书
where 作者 like "李凯%"
10-11 查询所有学生的学号、姓名、性别和出生日期
select sno,sname,ssex,bday from students
10-12 查询所有年龄小于等于25岁的女生的学号和姓名
select sno as 学号,sname as 姓名,ssex as 性别
from students
where ssex='女' and (year(curdate())-year(bday))<=25
10-13 查询Students表中的所有系名,要求结果中系名不重复
select distinct sdept from students

数据库里可能会包含重复值,而关键词 distinct用于返回唯一不同的值。

10-14 2-1-(e) 查询所有的男影星或者住址中含有4的影星
select name from MovieStar where gender='M' or address like '%4%'
10-15 2-2-(a)查询价格低于1600美元的个人计算机的型号(model)、速度(speed)及硬盘容量(hd)
select model,speed,hd
from pc
where price<1600
10-16 3-1-(e)查询比a1更富有的行政长官

select name
from MovieExec
where certID in(select presCertID from Studio) and netWorth>all(select netWorthfrom MovieExecwhere name='a1')

这题就需要多想一下,先找名字再限定身份,注意有两张表

10-17 A1-5在顾客表中找出特定名字的顾客信息
select CustomerID,CompanyName
from customers
where CompanyName like'%th%'
10-18 A2-1查找产品表中再次订购量大于15的产品信息
select ProductID,ProductName,SupplierID
from products
where ReorderLevel>15
10-19 6-5 查询各种不同速度的PC的平均价格
select speed,avg(price) as avg_price from pc group by speed

求平均直接用关键词avg。
group by 从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。
PS:在使用group by的语句中,只能用于select分类的列(表达式),或聚合函数。where条件用于group by之前

10-20 查询S001学生选修而S003学生未选修的课程

select cno as 课程号
from sc
where cno not in(select s1.cno as 课程号from sc as s1 inner join sc as s2 on s1.cno = s2.cnowhere(s1.sno = 'S001' and s2.sno = 'S003'))and sno = 's001';

看表会发现001、002和003都选的课里只有C001,直接从1和2共同选课中排除就行

10-21 A1-2根据所在国家查找订单信息
select OrderID,CustomerID
from orders
where ShipCountry='Germany' or ShipCountry='Brazil' or ShipCountry='France'
10-22 A1-3查询顾客表中所有不重复的城市
select distinct City
from customers
10-23 3-1-(d)查询比电影《M1》时间更长的电影
select title,year
from Movie
where length>100
10-24 A1-8查询传真号码不为空的供货商信息
select SupplierID,CompanyName
from suppliers
where Fax is not NULL

不为空用 is not null 或者 !=0 都行

10-25 A2-3查询产品表中单价不在范围内的的产品信息
select ProductID,ProductName,CategoryID
from products
where UnitPrice<15 or UnitPrice>45
10-26 A3-4查询产品表中最大库存量
select max(UnitsInStock) as maxUnitsInStock
from products
10-27 查询平均成绩高于75分的学生
select sno as 学号,avg(grade) as 平均成绩
from sc
group by 学号
having 平均成绩>75
10-28 输出有成绩的学生学号和课号
select sno,cno
from sc
where score is not NULL
10-29 查询所有姓“刘”的学生信息
select sno,sname,class,ssex,bday,bplace,IDNum,sdept,phone
from students
where sname like '刘%'
10-30 查询生源地不是“山东”省的学生信息
select sno,sname,class,ssex,bday,bplace,IDNum,sdept,phone
from students
where bplace not like '山东%'
10-31 查询名字中含有“明”字的男生的学生姓名和班级
select sname,class
from students
where sname like '%明%' and ssex='男'
10-32 查询姓名是两个字的学生信息
select sno,sname,class,  ssex,bday,bplace,IDNum,sdept,phone
from students
where sname like '__'

PS:查询两位用两个下划线表示即可

10-33 查询非信息学院和机电学院的学生信息
select sno,sname,class,ssex,bday,bplace,IDNum,sdept,phone
from students
where sdept not in('机电学院','信息学院')
10-34 查询学生表中没有联系电话的学生信息
select sno,sname,class,ssex,bday,bplace,IDNum,sdept,phone
from students
where phone is null
10-35 计算“0000001”课程的平均分、最高分和最低分
select avg(score) as 平均分, max(score) as 最高分, min(score) as 最低分
FROM sc
where cno ='0000001'
10-36 统计输出各系学生的人数
select distinct sdept as 系,count(*) as 人数
from students
group by sdept
10-37 查询选修了“0000008”课程的学生的学号及其成绩,查询结果按分数降序排列
select sno,score
from sc
where cno = '0000008'
order by score desc
10-38 查询成绩不及格的学生学号、课号和成绩,并按成绩降序排列
select sno,cno,score
from sc
where score < 60
order by score desc
10-39 统计各系的男、女生人数
select sdept as 系别,ssex as 性别,count(*) as 人数
from students
group by 系别,性别
10-40 统计不及格人数超过3人的课程号和人数
select cno as 课程号,count(*) as 不及格人数
from sc
where score <60
group by cno
having count(*) >3
10-41 查询信息学院的男生信息,查询结果按出生日期升序排序,出生日期相同的按生源地降序排序
select *
from students
where sdept='信息学院'and ssex= '男'
order by bday, bplace desc
10-42 统计选修人数最多的3门课

select distinct cno as 课程号,count(*) as 选修人数
from sc
group by cno
order by count(*) desc
limit 3;

这题在PTA中有要求为MYSQL,而“TOP 3” 适用SQL service,所以此处只能用limit 3

总结

个人经验,如果有问题,欢迎大家留言给我意见指正。 以下是我在学习过程中的一些学习借鉴的地址
源地址:sql中order by和group by的区别 - konglingbin - 博客园 (cnblogs.com)
order by 和 group by 的区别:
1,order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。
2,group by 从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。
3,在使用group by的语句中,只能select用于分类的列(表达式),或聚合函数。where条件用于group by之前,having用于group by 之后对结果进行筛选。

源地址:SQL中where与having的区别 - 永恒的回忆 - 博客园 (cnblogs.com)
1.where和having的区别
where:
where是一个约束声明,使用where来约束来自数据库的数据;
where是在结果返回之前起作用的;
where中不能使用聚合函数。
having:
having是一个过滤声明;
在查询返回结果集以后,对查询结果进行的过滤操作;
在having中可以使用聚合函数。
2.聚合函数和group by
聚合函数就是例如SUM, COUNT, MAX, AVG等对一组(多条)数据操作的函数,需要配合group by 来使用。

数据库PTA作业(一)相关推荐

  1. 数据库大作业 openGauss程序设计

    本文最终实现一个Web在线考试管理系统,可作为Python Web,Django的练手项目. 摘要 本系统实现学生在线考试管理的基本功能,包括学生登录.查看自己的个人信息及考试信息:提供了在线考试的界 ...

  2. MySQL数据库设计作业 ——《网上书店系统》数据库设计实验报告

    数据库设计作业--<网上书店系统>数据库设计 一.功能需求 普通用户:可以进行最基础的登陆操作,可浏览图书.按类别查询图书.查看 图书的详细信息,还可以注册成为会员. 会员:需要填写详细信 ...

  3. java大作业用jsp数据库java_JSP数据库大作业 - 不是太阳也要发光的个人页面 - OSCHINA - 中文开源技术交流社区...

    本人QQ:240814476  欢迎大家提问,共同学习,共同进步. 最近做了一个数据库大作业啊,想用JSP做,发现代码量好大,在做前台的时候感觉手忙脚乱,没时间. 可能是本人拖了太久的原因吧 . 做的 ...

  4. 电子科大互加数据库课程作业——ER图设计

    电子科大互加数据库课程作业--ER图设计 书上习题P95, 第18题 (1) (2) 关系模型,转换为3个关系 Convoy(车队名.车队号) Car(牌照号.厂家.出厂日期.车队号) Driver( ...

  5. 专科mysql数据库大作业_数据库大作业整理·总

    能找到这里的小同学,我们可能是校友哦. 这个不正经的帖子来整理一下我们用pyqt5+eric6+mysql开发天气管理系统(17地市)的所有走过的路,尤其是我走弯路后的修正路线. 因为找了一些资料,看 ...

  6. 数据库理论作业 第八章 29 33

    数据库理论作业 第八章 8.29 考虑如下关系模式r(A,B,C,D,E,F)上的函数依赖集F: A->BCD BC->DE B->D D->A a.计算B+ 最初result ...

  7. 数据库大作业代码展示2

    因为上个界面实在是太卡了,尤其在c#代码里,打字都是延缓的,所以分开来展示. 这一个主要是管理员界面的介绍,窗口调用如下: ManageMain窗口:(管理员主界面)省略代码和前文一样, (学生管理) ...

  8. PTA 作业 福到啦

    PTA作业 "福到了" "福"字倒着贴,寓意"福到".不论到底算不算民俗,本题且请你编写程序,把各种汉字倒过来输出.这里要处理的每个汉字是由 ...

  9. MySQL数据库大作业——学生管理系统GUI

    MySQL数据库大作业--学生管理系统GUI 原程序链接: https://www.bbsmax.com/A/kmzL3WQBdG/ 为了完成数据库大作业, 我在其基础上进行了一定的修改和扩充. 如果 ...

  10. mysql数据库大作业学籍管理系统_数据库大作业学籍管理系统代码和报告

    [实例简介] 此为大学数据库大作业的报告以及源代码及打包程序.数据库使用MySQL设计,管理界面采用java编写,附带完整报告. [实例截图] [核心代码] 15180210013康辉数据库报告 └─ ...

最新文章

  1. 缓存伪静态html,伪静态缓存(整站静态化)
  2. [视频]用SQL Server Compact创建简单的Windows应用程序
  3. windows下文件共享以及通过网线在两台Windows电脑之间传数据
  4. A-ID and password
  5. 解析函數論 Page 22 級數收斂的一個充分條件
  6. onvif 开发之video streamer---onvif实现功能和经验
  7. 【转】Dynamics 365中的应用程序介绍
  8. idea jdbc封装_IDEA 中 MyBatis还可以这么玩!!!
  9. (17)Zynq FPGA 全局定时器介绍
  10. WebWork配置文件详解
  11. 使用grafana4的alert功能
  12. ST电机库无感FOC模式接电机前准备工作(1)----PWM波的生成
  13. VTD-传感器使用小结
  14. java同步锁-详细易懂
  15. 4G基站软件产品测试,4G TD-LTE测试解决方案全方位解读 - 全文
  16. 睦星科技Kolmostar获1000万美元 A 轮融资,将推出更多元的GNSS定位解决方案...
  17. java中文逗号替换英文逗号
  18. WebApi编程(一)-DOM
  19. Echarts 双柱状图+折线图合并---实现效果详解(vue+Echarts实现)
  20. TBase数据库开源后重磅升级,复杂查询性能最高提升十倍

热门文章

  1. 文本文档中html图片快捷键,HTML+CSS入门 常用的键盘快捷键详解
  2. 商用密码应用与安全性评估之(三)商用密码应用法律政策要求
  3. 成功的趋势交易者的入场点
  4. DBC编辑_文本形式编辑
  5. Dataset之NLP之LLMs:自然语言处理领域—大语言模型LLMs相关开源数据集的简介(三类数据集【预训练数据/微调数据/测试数据】)、下载(国内外开源数据集平台总结)、使用方法之详细攻略
  6. 如何让centos 自动校准时间
  7. 《代码整洁之道》:这代码写的太烂了!这些重构的小技巧帮你告别你的“垃圾代码”!...
  8. 为什么LinkedHashMap是有序
  9. html5混合编写,HTML5混合式开发,创造全新奇迹
  10. python定时任务在实盘交易系统中的应用