当前位置: 首页 > article >正文

【PTA】【数据库】【SQL命令】编程题2

数据库SQL命令测试题2

测试题目录

      • 10-1 查询“李琳”老师所授课程的课程名称
      • 10-2 查询成绩比所有课程的平均成绩高的学生的学号及成绩
      • 10-3 创建带表达式的视图StuView
      • 10-4 从视图PerView中查询数据
      • 10-5 查询工资高于在“HR”部门工作的所有员工的工资的员工信息
      • 10-6 查询选修的各课程平均成绩高于85分的学生学号、姓名和专业
      • 10-7 查询修课平均成绩最高的学生学号
      • 10-8 SQL除法查询1
      • 10-9 SQL除法查询2
      • 10-10 创建分组统计视图
      • 10-11 查询教授多门课程的教师编号及教授的课程门数
      • 10-12 查询选修了3门及3门以上课程的学生学号、平均成绩和修课门数,并用中文显示列名


10-1 查询“李琳”老师所授课程的课程名称

作者 邵煜

单位 宁波财经学院

本题目要求编写SQL语句,检索出teachersteachingcourse表中“李琳”老师所授课程的课程名称。

提示:请使用join连接查询语句作答。

表结构:

请在这里写定义表结构的SQL语句。例如:

CREATE TABLE teachers (
  tno char(3) ,
  tname char(8),
  ps char(10),
  tbirthday date ,
  tdept char(16) ,
  tsex char(2),
  PRIMARY KEY (tno)
) ;

CREATE TABLE teaching (
  sid int ,
  cterm int,
  class char(10) DEFAULT NULL,
  cno char(7) NOT NULL,
  tno char(3) DEFAULT NULL,
  period int DEFAULT NULL,
  PRIMARY KEY (sid)
) ;

CREATE TABLE course (
 cno char(7) ,
 cname varchar(20) NOT NULL,
 cpno char(7),
 ccredit int NOT NULL,
 PRIMARY KEY (cno)
) ;

表样例

请在这里给出上述表结构对应的表样例。例如

teachers表:

tnotnamepstbirthdaytdepttsex
001谭浩强教授1958-01-01计科
002王珊教授1962-02-13计科
003萨师煊教授1953-05-01计科
004严蔚敏副教授1968-07-02软工
005李琳讲师1988-11-15软工
006韩万江助教1992-10-17信管

teaching表:

sidctermclasscnotnoperiod
1117 物流 1000001100136
2117 物流 1000003400272
3317 物流 1000005200360
4117 物流 10000027004108
5217 物流 1000003900536
6617 物流 1000000500672

course表:

cnocnamecpnoccredit
0000001数据库 OCP 考证NULL4
0000002C 语言基础00000279
0000003Linux 操作系统00000135
0000010数据结构00000024
0000039基础会计NULL2

输出样例:

请在这里给出输出样例。例如:

cname
基础会计

提交代码:

select c.cname
from course c
join teaching t1 on c.cno = t1.cno
join teachers t2 on t1.tno = t2.tno
where t2.tname = "李琳";

10-2 查询成绩比所有课程的平均成绩高的学生的学号及成绩

作者 邵煜

单位 宁波财经学院

本题目要求编写SQL语句,检索出sc表中,课程成绩比所有课程的平均成绩高的学生的学号及成绩。

提示:请使用嵌套查询语句作答。

表结构:

请在这里写定义表结构的SQL语句。例如:

CREATE TABLE sc (
 sno char(7) ,
 cno char(7) ,
 score decimal(4,1),
 point decimal(2,1),
 PRIMARY KEY (sno,cno)
) ;

表样例

请在这里给出上述表结构对应的表样例。例如

sc表:

snocnoscorepoint
1311104000001153.00.0
1311104000002780.01.0
1311105000002784.01.0
1711101000005271.02.0

输出样例:

请在这里给出输出样例。例如:

snoscore
131110480.0
131110584.0

提交代码:

select sno,score
from sc
where score > (
    select avg(score)
    from sc
);

10-3 创建带表达式的视图StuView

作者 李翔坤

单位 大连东软信息学院

已知学生表Student,创建学生信息的视图StuView,包括学生学号、姓名和年龄,在视图中的列名分别为No,Name和Age。

Student表结构:

create table  Student(
  sno char(8)  primary key,
  sname varchar(10) not null,
  gender char(2) check(gender='男' or gender='女'),
  birthdate  date,
  major varchar(20)  default '软件工程'
  );

Student 表 数据样例:

Student表:

snosnamegenderbirthdatemajor
21012101李勇2005-10-20计算机科学
21012102刘晨2006-5-5计算机科学
21012103王晓敏2005-10-6计算机科学
21021101李佳睿2006-3-30软件工程
21021102吴宾2005-9-21软件工程
21021103张海2005-10-20软件工程
21031101钱晓萍2006-6-1网络工程
21031102王大力2005-11-15网络工程
21041101于洋2006-3-15数据科学
21041102郭霖2006-3-2数据科学

输出样例:

StuView视图:

在这里插入图片描述

提交代码:

create view StuView(No,Name,Age)
as select sno,sname,YEAR(CURRENT_DATE) - YEAR(birthdate)
from Student;

10-4 从视图PerView中查询数据

作者 李翔坤

单位 大连东软信息学院

从上题中创建的视图PerView中查询平均成绩超过75分的专业有哪些。

PerView视图结构:

 Create view PerView(专业名, 修课人数, 平均成绩)
AS Select major, count(distinct sc.sno), avg(grade) from student join sc on student.sno=sc.sno group by major;

PerView视图数据样例

PerView视图:

专业名修课人数平均成绩
数据科学172.0
网络工程187.5
计算机科学280.0
软件工程273.4

输出样例:

专业名平均成绩
网络工程87.5
计算机科学80.0

提价代码:

select 专业名,平均成绩
from PerView
where 平均成绩 > 75;

10-5 查询工资高于在“HR”部门工作的所有员工的工资的员工信息

作者 李翔坤

单位 大连东软信息学院

查询工资高于在“HR”部门工作的所有员工的工资的员工信息

提示:请使用SELECT语句作答。

表结构:

请在这里写定义表结构的SQL语句。例如:

CREATE TABLE employees (  
    employee_id INT PRIMARY KEY,  
    first_name VARCHAR(50),  
    last_name VARCHAR(50),  
    department VARCHAR(50),  
    salary INT  
);

表样例

employees表:

在这里插入图片描述

输出样例:

在这里插入图片描述

提交代码:

select *
from employees 
where salary > (
    select max(salary)
    from employees
    where department = "HR"
);

10-6 查询选修的各课程平均成绩高于85分的学生学号、姓名和专业

作者 李翔坤

单位 大连东软信息学院

查询选修的各课程平均成绩高于85分的学生学号、姓名和专业

提示:请使用SELECT语句作答。

表结构:

create table if not exists Student(
  sno char(8)  primary key,
  sname varchar(10) not null,
  gender char(2) check(gender='男' or gender='女'),
  birthdate  date,
  major varchar(20)  default '软件工程'
  );
create table if not exists SC(    -- 选课成绩单表
  scid  int auto_increment  primary key,
  sno char(8)   references Student(sno),
  cno char(10)  references Course(cno),
  tno char(15)  references Teacher(tno),
  grade int check(grade>=0 and grade<=100),
  gpoint  decimal(2,1),     -- 学生得到的课程绩点
  memo  text(100)    --  备注
  );

表样例

请在这里给出上述表结构对应的表样例。例如

Student表:

在这里插入图片描述

SC表:

在这里插入图片描述

输出样例:

在这里插入图片描述

提交代码:

SELECT s.sno, s.sname, s.major
FROM Student s
JOIN (
    SELECT sno, AVG(grade) AS avg_grade
    FROM SC
    GROUP BY sno
    HAVING AVG(grade) > 85
) AS high_avg ON s.sno = high_avg.sno;

10-7 查询修课平均成绩最高的学生学号

作者 李翔坤

单位 大连东软信息学院

查询修课平均成绩最高的学生学号

提示:请使用SELECT语句作答。

表结构:

请在这里写定义表结构的SQL语句。例如:

create table if not exists Student(
  sno char(8)  primary key,
  sname varchar(10) not null,
  gender char(2) check(gender='男' or gender='女'),
  birthdate  date,
  major varchar(20)  default '软件工程'
  );
 select * from student;
create table if not exists Course(
  cno char(10) primary key,
  cname varchar(20) not null,
  ccredit int check(ccredit>0), -- 课程学分
  semester int check(semester>0),  -- 学期
  period int  check(period>0)     -- 总学时
  );
 
select * from course;
create table if not exists Teacher(
   Tno char(15) primary key,
   Tname varchar(10) not null,
   gender char(2),
   deptname varchar(50) ,  -- 所属系部
   title varchar(20)       -- 职称
);
create table if not exists SC(    -- 选课成绩单表
  scid  int auto_increment  primary key,
  sno char(8)   references Student(sno),
  cno char(10)  references Course(cno),
  tno char(15)  references Teacher(tno),
  grade int check(grade>=0 and grade<=100),
  gpoint  decimal(2,1),     -- 学生得到的课程绩点
  memo  text(100)    --  备注
  );

表样例

Student表:

在这里插入图片描述

Course表:

在这里插入图片描述

Teacher表:

在这里插入图片描述

SC表:

在这里插入图片描述

输出样例:

在这里插入图片描述

提交代码:

select sno
from SC
GROUP BY sno
HAVING AVG(grade) = (
    SELECT MAX(avg_grade)
    FROM (
        SELECT AVG(grade) AS avg_grade
        FROM SC
        GROUP BY sno
    ) AS avg_grades
);

10-8 SQL除法查询1

作者 沈炜

单位 浙江理工大学

本题目要求编写SQL语句,
检索出movies表中拍摄了所有Fox公司拍摄的所有电影类型的电影公司。

提示:本题意思就是找这样的电影公司,只要是Fox拍了某个电影类型的电影,那么这个公司也拍过这样类型的电影。

表结构:

请在这里写定义表结构的SQL语句。例如:

CREATE TABLE movies (
  title char(100) NOT NULL DEFAULT '',
  year int(11) NOT NULL DEFAULT '0',
  length int(11) DEFAULT NULL,
  movieType char(10) DEFAULT NULL,
  studioName char(30) DEFAULT NULL,
  producerC int(11) DEFAULT NULL,
  PRIMARY KEY (title,year)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

表样例

请在这里给出上述表结构对应的表样例。例如

movies表:

titleyearlengthmovieTypestudioNameproducerC
Empire Strikes Back1980111dramaFox555
Gone With the Wind1938238dramaMGM123
Logan’s run1977120dramaMGM888
Pretty Woman1990119dramaDisney999
Star Trek1979132sciFicParamount444
Star Trek: Nemesis2002116sciFicParamount321
Star Wars1977124sciFicFox555
Star Wars2015sciFicFOX
Star Wars2017sciFic
Terms of Endearment1983132dramaMGM123
The Man Who Wasn’t There2001116comedyUSA Entertainm.777
The Usual Suspects1995106dramaMGM999

输出样例:

请在这里给出输出样例。例如:

studioName
Fox
MGM

注意:返回的公司名称必须唯一。

提交代码:

SELECT DISTINCT studioName
FROM movies m1
WHERE NOT EXISTS (
    SELECT movieType
    FROM movies
    WHERE studioName = 'Fox'
    GROUP BY movieType
    HAVING NOT EXISTS (
        SELECT *
        FROM movies m2
        WHERE m2.studioName = m1.studioName
        AND m2.movieType = movies.movieType
    )
);

10-9 SQL除法查询2

作者 沈炜

单位 浙江理工大学

查询出演了演员Carrie Fisher出演的所有电影的演员

提示:满足题目条件的演员,应该是只要Carrie Fisher出演了一本电影,这个演员也演了;不同年份,名称相同的电影认为是同一本电影。

表结构:

CREATE TABLE starsin (
  movieTitle char(100) NOT NULL DEFAULT '',
  movieYear int(11) NOT NULL DEFAULT '0',
  starName char(30) NOT NULL DEFAULT '',
  PRIMARY KEY (movieTitle,movieYear,starName)
);

表样例

starsin表:

movieTitlemovieYearstarName
Empire Strikes Back1980Harrison Ford
Star Wars1977Carrie Fisher
Star Wars1977Harrison Ford
Star Wars1977Mark Hamill
Star Wars2017Carrie Fisher
Terms of Endearment1983Debra Winger
Terms of Endearment1983Jack Nicholson
The Usual Suspects1995Kevin Spacey

输出样例:

starName
Harrison Ford
Carrie Fisher
Mark Hamill

提交代码:

select distinct(starName)
from starsin s1
where not exists(
    select *
    from starsin s2
    where s2.starName = "Carrie Fisher" and not exists(
        select *
        from starsin s3
        where s3.starName = s1.starName and s3.movieTitle = s2.movieTitle
    )
);

10-10 创建分组统计视图

作者 李翔坤

单位 大连东软信息学院

创建每个专业学生修课信息的视图PerView,包括每个专业的专业名称、修课的学生人数、平均成绩。

表结构:

create table Student(
  sno char(8)  primary key,
  sname varchar(10) not null,
  gender char(2) check(gender='男' or gender='女'),
  birthdate  date,
  major varchar(20)  default '软件工程'
  );

create table SC(  
  scid  int auto_increment  primary key,
  sno char(8)   references Student(sno),
  cno char(10)  references Course(cno),
  tno char(15)  references Teacher(tno),
  grade int check(grade>=0 and grade<=100),
  gpoint  decimal(2,1),   
  memo  text(100)  
  );

表样例

Student表:

snosnamegenderbirthdatemajor
21012101李勇2005-10-20计算机科学
21012102刘晨2006-5-5计算机科学
21012103王晓敏2005-10-6计算机科学
21021101李佳睿2006-3-30软件工程
21021102吴宾2005-9-21软件工程
21021103张海2005-10-20软件工程
21031101钱晓萍2006-6-1网络工程
21031102王大力2005-11-15网络工程
21041101于洋2006-3-15数据科学
21041102郭霖2006-3-2数据科学

SC表:

scidsnocnotnogradegpointmemo
null21012101c01t200306m1213290nullnull
null21012101c02t200703m1221886nullnull
null21012101c03t200703m12218nullnull缺考
null21012102c02t200703m1221878nullnull
null21012102c03t200703m1221866nullnull
null21021102c01t200306m1213282nullnull
null21021102c02t200608f1220575nullnull
null21021102c03t200306m12132nullnull缓考
null21021102c05t201803f1240550nullnull
null21021103c02t200703m1221868nullnull
null21021103c04t201208m1230892nullnull
null21031101c01t200306m1213280nullnull
null21031101c02t200608f1220595nullnull
null21041102c02t200608f1220556nullnull
null21041102c05t201803f1240588nullnull

输出样例:

PerView视图:

在这里插入图片描述

提交代码:

CREATE VIEW PerView AS
SELECT 
    s.major AS 专业名,
    COUNT(DISTINCT s.sno) AS 修课人数,
    AVG(sc.grade) AS 平均成绩
FROM 
    Student s
JOIN 
    SC sc ON s.sno = sc.sno
GROUP BY 
    s.major;

10-11 查询教授多门课程的教师编号及教授的课程门数

作者 马丰媛

单位 大连东软信息学院

题目描述:查询教授多门课程的教师编号及教授的课程门数。

提示:请使用SELECT语句作答。

表结构:

SC表结构:

create table  SC( 
  scid  int auto_increment  primary key,
  sno char(8)   references Student(sno),
  cno char(10)  references Course(cno),
  tno char(15)  references Teacher(tno),
  grade int check(grade>=0 and grade<=100),
  gpoint  decimal(2,1), 
  memo  text(100) 
  );

表样例

请在这里给出上述表结构对应的表样例。例如

SC表:

在这里插入图片描述

输出样例:

请在这里给出输出样例。例如:

在这里插入图片描述

提交代码:

SELECT tno AS tno,COUNT(DISTINCT cno) AS 门数
FROM SC
GROUP BY tno
HAVING COUNT(DISTINCT cno) > 1;

10-12 查询选修了3门及3门以上课程的学生学号、平均成绩和修课门数,并用中文显示列名

作者 马丰媛

单位 大连东软信息学院

题目描述:查询选修了3门及3门以上课程的学生学号、平均成绩和修课门数,并用中文显示列名。

提示:请使用SELECT语句作答。

表结构:

SC表结构的SQL语句:

create table  SC( 
  scid  int auto_increment  primary key,
  sno char(8)   references Student(sno),
  cno char(10)  references Course(cno),
  tno char(15)  references Teacher(tno),
  grade int check(grade>=0 and grade<=100),
  gpoint  decimal(2,1), 
  memo  text(100) 
  );

表样例

请在这里给出上述表结构对应的表样例。例如

SC表:

在这里插入图片描述

输出样例:

请在这里给出输出样例。例如:

在这里插入图片描述

select sno as "学号",avg(grade) as "平均成绩",count(cno) as "修课门数"
from SC
group by sno
having count(cno) >= 3;

本文作者: 鸿·蒙

撰写工具: Typora

内容反馈: 若发现本文内容有误或有任何意见,欢迎向作者鸿·蒙反馈或评论区留言。

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 鸿·蒙 !


http://www.kler.cn/a/411059.html

相关文章:

  • ️ 爬虫开发中常见的性能优化策略有哪些?
  • [极客大挑战 2019]BabySQL--详细解析
  • java charAt()返回数值型 详解
  • 【第十课】Rust并发编程(一)
  • 【Mysql】视图--介绍和作用 视图的创建
  • 基于Java Springboot公园管理系统
  • MR30分布式 IO 模块在冷却水泵系统中的卓越应用
  • 通过异步使用消息队列优化秒杀
  • Web开发技术栈选择指南
  • 刷题日常(移动零,盛最多水的容器,三数之和,无重复字符的最长子串)
  • Java 中实现异步的方式
  • IMX 平台UART驱动情景分析:read篇--从硬件驱动到行规程的全链路剖析
  • XG(S)-PON原理
  • 【贪心算法第五弹——300.最长递增子序列】
  • QUICK调试camera-xml解析
  • QT QToolButton控件 全面详解
  • Scala—Collections集合概述
  • goframe框架bug-记录
  • 如何提升编程能力第二篇
  • 关于网络安全攻防知识
  • [CA] 读懂core.cpp -3 Core::decode
  • docker 的各种操作
  • 防御网络攻击的创新策略
  • IP反向追踪技术,了解一下?
  • vim 如何高亮/取消高亮
  • MySQL系列之数据类型(Numeric)