SQL语句基础练习(表的创建,基础查询)-提供建表语句和查询题目与解答

2023-10-31

说明

此基础练习的题目难度都比较简单,但是还有一些细节需要把握
此题目的主要目的是熟悉SQL语句的基础查询,关于建表方面的语句了解即可,因为一般开发中所用的都是图形化建表,SQL语句建表所用较少。
虽然这些题目比较简单,但是开始中大多数都是这些简单的查询,所以需要我们必须掌握。

建表要求

一、 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)-表(四)所示

             表1-1数据库的表结构 

表(一)Student (学生表)

属性名 数据类型 可否为空 含 义
STU_ID Char(3) 学号(主码)
STU_NAME Char(8) 学生姓名
STU_SEX Char(2) 学生性别
STU_BIRTH datetime 学生出生年月
CLASSES Char(5) 学生所在班级

表(二)Course(课程表)

属性名 数据类型 可否为空 含 义
COU_ID Char(5) 课程号(主码)
COU_NAME Varchar(10) 课程名称
TEA_ID Char(3) 教工编号(外码)

表(三)Score(成绩表)

属性名 数据类型 可否为空 含 义
STU_ID Char(3) 学号(外码)
COU_ID Char(5) 课程号(外码)
DEGREE Decimal(4,1) 成绩
主码: STU_ID+ COU_ID

表(四)Teacher(教师表)

属性名 数据类型 可否为空 含 义
TEA_ID Char(3) 教工编号
TEA_NAME Char(4) 教工姓名
TEA_SEX Char(2) 教工性别
TEA_BIRTH datetime 教工出生年月
TEA_PROF Char(6) 职称
DEPART Varchar(10) 教工所在部门

数据库中数据

student表中数据(学生表)
在这里插入图片描述

score表中数据(成绩表)
在这里插入图片描述

course表中数据(课程表)
在这里插入图片描述

teacher表中数据(老师表)
在这里插入图片描述

建表SQL语句

-- 创建Student表、学生表
CREATE TABLE Student(
STU_ID CHAR(3) NOT NULL PRIMARY KEY,
STU_NAME CHAR(8) NOT NULL,
STU_SEX CHAR(2) NOT NULL,
STU_BIRTH DATETIME NULL,
CLASSES CHAR(5) NULL
)
-- 创建Teacher表,教师表
CREATE TABLE Teacher(
TEA_ID CHAR(3) NOT NULL PRIMARY KEY,
TEA_NAME CHAR(4) NOT NULL,
TEA_SEX CHAR(2) NOT NULL,
TEA_BIRTH DATETIME NULL,
TEA_PROF CHAR(6) NULL,
DEPART VARCHAR(10) NOT NULL
)
-- 创建Course表,课程表
CREATE TABLE Course(
COU_ID CHAR(5) NOT NULL PRIMARY KEY,
COU_NAME VARCHAR(10) NOT NULL,
TEA_ID CHAR(3) NOT NULL,
FOREIGN KEY(TEA_ID) REFERENCES Teacher(TEA_ID)
)
-- 创建Score表,成绩表
CREATE TABLE Score(
STU_ID CHAR(3) NOT NULL,
COU_ID CHAR(5) NOT NULL,
DEGREE DECIMAL(4,1) NULL,
PRIMARY KEY(STU_ID,COU_ID),
FOREIGN KEY(STU_ID) REFERENCES Student(STU_ID),
FOREIGN KEY(COU_ID) REFERENCES Course(COU_ID)
)

SQL查询语句问题

1、 查询Student表中的所有记录的STU_NAME、STU_SEX和CLASSES列。
2、 查询教师所有的单位即不重复的DEPART列。
3、 查询Score表中成绩在60到80之间的所有记录。
4、 查询Score表中成绩为85,86或88的记录。
5、 查询Student表中“95031”班或性别为“女”的同学记录。
6、 以COU_ID升序、DEGREE降序查询Score表的所有记录。
7、 查询“95031”班的学生人数。
8、 查询Score表中的最高分的学生学号和课程号。
9、 查询每门课的平均成绩。
10、查询Score表中至少有5名学生选修的课程的平均分数。
11、查询所有学生的STU_NAME、COU_ID和DEGREE列。
12、查询所有学生的STU_NAME、COU_NAME和DEGREE列。
13、 查询“95033”班学生的平均分。

查询问题解答

-- 1、 查询Student表中的所有记录的STU_NAME、STU_SEX和CLASSES列。
SELECT STU_NAME,STU_SEX,CLASSES
FROM student
-- 2、 查询教师所有的单位即不重复的DEPART列。
SELECT DISTINCT DEPART
FROM teacher
-- 3、 查询Score表中成绩在60到80之间的所有记录。
SELECT *
FROM score
WHERE DEGREE >= 60 AND DEGREE <= 80
-- 4、 查询Score表中成绩为85,86或88的记录。
SELECT *
FROM score
WHERE DEGREE IN ('85','86','88')
-- 5、 查询Student表中“95031”班或性别为“女”的同学记录。
SELECT *
FROM student
WHERE CLASSES = '95031' OR STU_SEX = '女'
-- 6、 以COU_ID升序、DEGREE降序查询Score表的所有记录。
SELECT *
FROM score
ORDER BY COU_ID ASC,DEGREE DESC
-- 7、 查询“95031”班的学生人数。
SELECT COUNT(CLASSES) AS 95031number
FROM student
GROUP BY CLASSES HAVING CLASSES='95031'
-- 8、 查询Score表中的最高分的学生学号和课程号。
SELECT STU_ID,COU_ID
FROM score
ORDER BY DEGREE DESC LIMIT 1
-- 9、 查询每门课的平均成绩。
SELECT c.COU_NAME,C_AVG.DEGREE_AVG
FROM course AS c LEFT JOIN 
(SELECT COU_ID,AVG(DEGREE) AS DEGREE_AVG
FROM score
GROUP BY COU_ID) AS C_AVG
ON c.COU_ID=C_AVG.COU_ID
-- 10、查询Score表中至少有5名学生选修的课程的平均分数。
SELECT c.COU_NAME,`COUNT(STU_ID)` AS NUMBER,`AVG(DEGREE)` AS `AVG`
FROM course AS c INNER JOIN(
SELECT COU_ID,COUNT(STU_ID),AVG(DEGREE)
FROM score
GROUP BY COU_ID) AS s_avg
ON c.COU_ID=s_avg.COU_ID AND `COUNT(STU_ID)`>=5 
-- 11、查询所有学生的STU_NAME、COU_ID和DEGREE列。
SELECT STU_NAME,sc.COU_ID,DEGREE
FROM student st LEFT JOIN score sc
ON st.STU_ID=sc.STU_ID
-- 12、查询所有学生的STU_NAME、COU_NAME和DEGREE列。
SELECT STU_NAME,c.COU_NAME,DEGREE
FROM student st JOIN score sc JOIN course c
ON st.STU_ID=sc.STU_ID AND c.COU_ID=sc.COU_ID
ORDER BY STU_NAME
-- 13、 查询“95033”班学生的平均分。
SELECT CLASSES,AVG(DEGREE),COU_ID
FROM student st  JOIN score sc
ON st.STU_ID=sc.STU_ID
GROUP BY COU_ID,CLASSES
HAVING CLASSES='95033'


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL语句基础练习(表的创建,基础查询)-提供建表语句和查询题目与解答 的相关文章

  • 如何从 tarantool 中选择有限数量的记录,就像 SQL 中的 SELECT LIMIT 一样?

    我想在 Tarantool 空间上执行选择 使用过滤和限制结果 就像我可以使用简单的 SQL 查询一样 SELECT FROM users WHERE age gt 33 LIMIT 1 我怎样才能做到这一点 可以使用 Lua 和 SQL
  • 有向图 SQL

    我有以下数据集 它表示有向图中的节点 CREATE TABLE nodes NODE FROM VARCHAR2 10 NODE TO VARCHAR2 10 INSERT INTO nodes VALUES GT TG INSERT IN
  • MySQL 命令输出在命令行客户端中太宽[重复]

    这个问题在这里已经有答案了 我在用mysql终端模拟器中的命令行客户端lxterminal在Ubuntu中 当我运行以下命令时 mysql gt select from routines where routine name simplep
  • 在两个以上的表上使用内联接删除查询

    我想使用两个以上表上的内联接从表中删除记录 假设我有表 A B C D 其中 A 的 pk 在所有其他提到的表中共享 然后如何编写删除查询以使用表 B 和 A 上的内联接从表 D 中删除记录 因为条件是从这两个表中获取的 我需要从 DB2
  • 我应该如何优化 .net 代码中对一个简单存储过程的多次调用?

    我有一个非常简单的存储过程 create procedure spFoo v varchar 50 as insert into tbFoo select v 我有 50 个值要插入到 tbFoo 中 这意味着在我的 c 代码中我调用 sp
  • MySQL 多个 IN 条件对同一个表进行子查询

    我有多个带有子查询的 IN 条件 SELECT S name S email FROM something S WHERE 1 NOT IN SELECT id FROM tags WHERE somethingId S id AND 2
  • 工厂模式数据库连接

    我正在尝试使用 MySQL 实现数据库连接上的工厂模式 SQL Server 面临奇怪的错误 你调用的对象是空的 在 SQL 命令对象上 internal class SqlServerDB IDatabase private SqlCon
  • 数据太长,导致列错误(包含国家字符)

    我必须移植一些DBS变成独立的MySQL版本 5 0 18运行于Windows 7 64 位我遇到了一个困扰我的问题 如果我尝试将任何国家 Unicode 字符插入varchar我收到错误 ERROR 1406 22001 Data too
  • 将 SQL 中的数据存储在数组中

    我正在尝试将 sql 数据库中的数据存储到数组中 目前我有这个 query mysql query SELECT FROM InspEmail WHERE Company LIKE company while row mysql fetch
  • 对 SQL Server 2005 结果进行分页

    如何在 SQL Server 2005 中对结果进行分页 我在 SQL Server 2000 中尝试过 但没有可靠的方法来做到这一点 我现在想知道SQL Server 2005是否有任何内置方法 分页的意思是 例如 如果我按用户名列出用户
  • 使用 sql 查询选择最近 30 天

    我正在查找过去 30 天内周一 周二 周三 周四 周五 周六 周日的数量 我可以在没有实际数据库表的情况下选择最近 30 天的日期和星期几吗 就像是 SELECT everything between convert date GETDAT
  • SimpleSAMLPHP 重定向循环

    我们正在尝试使用自定义 mysql 数据库设置 sso 但它在以下两个请求之间进入无限循环 POST http 192 168 0 15 simplesaml module php core loginuserpass php 设置Cook
  • 使用 Hibernate Dialect 设置表字符集/排序规则?

    我使用 Hibernate MySQLInnoDB Dialect 来生成 DDL hibernate cfg xml
  • SQL限制数据库中的最小值和最大值

    CREATE TABLE TBL CD CDnr int identity 1 1 CDTitel nvarchar 80 NOT NULL CDduur int CDprijs smallmoney 所以我正在创建这个表 有什么方法可以将
  • 对时间序列数据重新采样

    我有一个以毫秒为单位的时间序列列表 我想对时间序列进行重新采样并对组应用平均值 我如何在 Postgres 中实现它 重新采样 是指聚合一秒或一分钟内的所有时间戳 一秒或一分钟内的所有行形成一组 表结构 date x y z Use dat
  • 如何在 JdbcTemplate 中创建 mySQL 存储过程

    背景 为了解决 MySql 中某些语句只允许在存储过程中出现的问题 我尝试在 JdbcTemplate 提交的 sql 中创建 运行然后删除存储过程 一个简单的例子是 这恰好是在 Spring Boot 中 Service public c
  • 计算行数并仅获取表中的最后一行

    我有一张桌子叫employeexam其结构和数据是这样的 id course id employee id degree date 1 1 3 8 2013 01 14 2 2 4 15 2013 01 14 3 2 4 17 2013 0
  • $_SESSION 中保存大量信息可以吗?

    我需要存储许多数组 SESSION以防止从 MySQL 检索信息 可以吗 其中 太多 的信息有多少 SESSION还是没有 太多 谢谢 附 或者更好地使用http php net manual en book memcache php ht
  • 更新查询时 ios 中出现“数据库锁定”错误

    我正在使用下面的代码更新查询 using sqlite 但我越来越 database is locked error 我尝试搜索一些 SO 链接 建议关闭数据库 但我再次执行此操作时遇到相同的错误 我已经提到过代码中出现错误的地方 cons
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N

随机推荐

  • 【LLM】如何使用单个GPU 微调 Llama2

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 千兆以太网芯片88E1111 RGMII模式的驱动

    88E1111可工作在10Mb s 100Mb s 1000Mb s下 由于DE2 115开发板在设计的时候只采用了4位数据端口 因此只能采用MII模式 100Mb s 或者RGMII模式 1000Mb s 看了官方的DATASHEET后
  • python是一种面向什么的高级语言

    python是一种面向什么的高级语言 Python是一种面相对象 解释型的计算机程序语言 并已成为学习数据科学 虚拟现实和人工智能的首选编程语言 其设计哲学是 优雅 明确 简单 易上手 及时反馈的特点成了很多入门编程世界的首选 同时Pyth
  • git国内镜像源(64位)

    点此前往
  • Android Studio : cmdline-tools component is missing. Android license status unknown.

    运行flutter doctor报错 D AndroidStudio projectLocations gt flutter doctor Doctor summary to see all details run flutter doct
  • Caused by: java.lang.IllegalStateException: Logback configuration error detected:

    项目场景 今天像往常一样打了个jar包 在本地是可以运行的 放测试环境上就不能运行了 整了半小时才看明白 以后一定要认识看报错信息 问题描述 在本地测试可以运行 在测试环境报 Caused by java lang IllegalState
  • 【自学C++】C++ short

    C short C short教程 C 中的 short 用来表示一个 整数 也可以叫做短整型 如果我们需要表示的整数比较小 那么我们可以使用 short 来定义 这样可以节省系统资源 C short定义详解 语法 short int va
  • python学习-面向对象进阶之闭包(八)

    闭包 1 函数引用 def test1 print in test1 func 调用函数 test1 引用函数 ret test1 print id ret print id test1 通过引用调用函数 ret 运行结果 in test1
  • 第19章 通信-模拟I2C

    一 关于I2C 1 1 I2C协议 I C Inter Integrated Circuit 常读作 I方C 它是一种多主从架构串行通信总线 在1980年由飞利浦公司设计 用于让主板 嵌入式系统或手机连接低速周边设备 I C由两条线组成 一
  • JAVA开发(外部接口调用授权问题记录总结)

    一 技术背景 现在很多web项目或者小程序在上线后都需要进行交叉引流 交叉业务合作 数据传输 与其他的企业 网站 app合作 那么就需要接口数据调用 那么在做外部系统接口调用和自己开发的微服务间的接口调用显然是不同的 最明显的特征就是 系统
  • Simple_SSTI_1与Simple_SSTI_2

    目录 一 Simple SSTI 1 二 Simple SSTI 2 一 Simple SSTI 1 首先打开场景 然后F12查看一下源码 于是通过百度相关知识寻找线索 1 SSTI 服务器端模版注入是指攻击者能够使用本机模板语法将恶意有效
  • BES2500/BES2300 学习笔记目录

    交流学习 如有错误欢迎指正 by wwdeng QQ 435398366 BES2500 BES2300 学习笔记目录 开发环境 代码编辑器 vscode Source Insight 编译 Windows Linux 调试 Trace 工
  • HTML5知识点总结

    1 什么是 HTML5 1 1 HTML版本 1 2 HTML5简介 万维网的核心语言 标准通用标记语言下的一个应用超文本标记语言 HTML 的第五次重大修改 用于取代HTML4与 XHTML的新一代标准版本 所以叫HTML5 XHTML
  • Spring-Resource接口

    4 1 1 概述 在日常程序开发中 处理外部资源是很繁琐的事情 我们可能需要处理URL资源 File资源资源 ClassPath相关资源 服务器相关资源 JBoss AS 5 x上的VFS资源 等等很多资源 因此处理这些资源需要使用不同的接
  • 【云原生之kubernetes】k8s集群的日常基本操作

    云原生之kubernetes k8s集群的日常基本操作 一 查看集群的状态 1 1 查看集群的节点 1 2 查看节点的详细状态 1 3 查看当前集群的pod 1 4 查看pod的详细信息 1 5 查看集群的所有pods 1 6 查看depo
  • 从贝叶斯方法谈到贝叶斯网络

    从贝叶斯方法谈到贝叶斯网络 0 引言 事实上 介绍贝叶斯定理 贝叶斯方法 贝叶斯推断的资料 书籍不少 比如 数理统计学简史 以及 统计决策论及贝叶斯分析 James O Berger著 等等 然介绍贝叶斯网络的中文资料则非常少 中文书籍总共
  • java设计学生类

    设计一个学生类 1 Student类中包含姓名 成绩两个属性 2分别给这两个属性定义两个方法 一个方法用于设置值 另一个方法用于获取值 3 Student类中定义一个无参的构造方法和一个接收两个参数的构造方法 两个参数分别为姓名和成绩属性赋
  • 制作Python,Raspberry Pi,电机和传感器版无线控制漫游车

    构建功能强大且可升级的个人机器人 您将学习如何控制伺服系统 响应传感器输入以及了解您的机器人在何处使用 GPS 您还将学习多种连接机器人并向其发送指令的方法 从 SSH 连接到从手机发送短信 内容 Raspberry Pi 介绍 Linux
  • 数字信息记忆-八大行星

    1 八大行星 水星 金星 地球 火星 木星 土星 天王星 海王星 2 提取关键字 水金球火木土天海 3 谐音联结 水晶 金 球喷火 烧木成土 从天落到海里
  • SQL语句基础练习(表的创建,基础查询)-提供建表语句和查询题目与解答

    说明 此基础练习的题目难度都比较简单 但是还有一些细节需要把握 此题目的主要目的是熟悉SQL语句的基础查询 关于建表方面的语句了解即可 因为一般开发中所用的都是图形化建表 SQL语句建表所用较少 虽然这些题目比较简单 但是开始中大多数都是这