当前位置:首页 » 编程语言 » 涉及sql的知识点
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

涉及sql的知识点

发布时间: 2023-03-19 20:12:02

⑴ 什么是sql SERVER实例,以及相关知识点

就是一个在数据库中存在的,现实的数据库例子! 数据库实例就是后台进程和数据库文件的集合。 一个SQL Server服务器就是一个实例,2000支持在同一个NT/2000 Server操作系统装多个服务器,换言之,就是多个实例。 多个 SQL Server 实例 Microsoft® SQL Server™ 2000 支持在同一台计算机上同时运行多个 SQL Server 数据库引擎实例。每个 SQL Server 数据库引擎实例各有一套不为其它实例共享的系统及用户数据库。应用程序连接同一台计算机上的 SQL Server 数据库引擎实例的方式与连接其它计算机上运行的 SQL Server 数据库引擎的方式基本相同。 有两种类型的 SQL Server 实例: 默认实例 SQL Server 2000 数据库引擎默认实例的运行方式与 SQL Server 早期版本的数据库引擎相同。默认实例仅由运行该实例的计算机的名称唯一标识,它没有单独的实例名。如果应用程序在请求连接 SQL Server 时只指定了计算机名,则 SQL Server 客户端组件将尝试连接这台计算机上的数据库引擎默认实例。这保留了与现有 SQL Server 应用程序的兼容性。 一台计算机上只能有一个默认实例,而默认实例可以是 SQL Server 的任何版本。 命名实例 除默认实例外,所有数据库引擎实例都由安装该实例的过程中指定的实例名标识。应用程序必须提供准备连接的计算机的名称和命名实例的实例名。计算机名和实例名以格式 computer_name\instance_name 指定。 一台计算机上可以运行多个命名实例,但只有 SQL Server 2000 数据库引擎才可作为命名实例运行。SQL Server 早期版本中的数据库引擎不能作为命名实例运行。 实例主要应用于数据库引擎及其支持组件,而不应用于客户端工具。如果安装了多个实例,则每个实例都将获得各自唯一的一套: 系统和用户数据库。 SQL Server 和 SQL Server 代理服务。对于默认实例,服务名仍为 MSSQLServer 和 SQLServerAgent。对于命名实例,服务名改为 MSSQL$instancename 和 SQLAgent$instancename,使得这些服务与服务器上的其它实例分开启动和停止。可使用相关联的 SQL Server 服务启动和停止不同实例的数据库引擎。SQL Server 代理服务管理相关联的数据库引擎实例的调度事件。 与数据库引擎、SQL Server 和 SQL Server 代理服务相关联的注册表键。 使应用程序能连接特定实例的网络连接地址。 共享组件 以下组件可由运行于同一台计算机上的所有实例共享: 此计算机上只有一个 SQL Server 2000 程序组 (Microsoft SQL Server),以及由该程序组中的每个图标表示的唯一一个实用工具的复本。唯一一个 SQL Server 联机丛书的复本。 程序组中的实用工具版本来自计算机上最先安装的 SQL Server 2000 版本。例如,如果将 SQL Server 2000 简体中文版作为默认实例安装,然后将 SQL Server 2000 美国英语版作为命名实例安装,则只有一个 SQL Server 2000 程序组。该程序组中的所有实用工具图标和 SQL Server 联机丛书图标都将启动简体中文版的工具。 所有 SQL Server 2000 实用工具都能处理多个实例。可以从一个 SQL Server 2000 服务管理器的复本启动和停止每个实例。可使用一个 SQL Server 2000 SQL Server 企业管理器复本控制计算机上所有实例中的对象,使用一个 SQL Server 2000 服务器网络管理器复本管理计算机上所有实例的网络通讯地址。 仅有一个 MSSearchService 复本管理针对计算机上所有 SQL Server 实例的全文检索。 English Query 和 Microsoft SQL Server 2000 Analysis Services 服务器都只有一个复本。 与客户端软件相关联的注册表键在实例间不重复。 只有一个 SQL Server 开发库(包括 *.lib 文件)和示例应用程序的复本。 默认实例 可作为默认实例操作的配置包括: SQL Server 2000 的默认实例。 作为默认实例运行的 SQL Server 7.0 版安装。 作为默认实例运行的 SQL Server 6.5 版安装。 可使用 SQL Server 2000 vswitch 实用工具,与 SQL Server 6.5 版安装进行版本切换的 SQL Server 2000 默认实例。 可使用 SQL Server 7.0 版 vswitch 实用工具,与 SQL Server 6.5 版安装进行版本切换的 SQL Server 7.0 版安装。 说明 在同一台计算机上安装 SQL Server 2000 实例前,必须将 SQL Server 6.5 Service Pack 5 应用于所有 SQL Server 6.5 实例。 在 SQL Server 版本间切换 不能在 SQL Server 7.0 版安装和 SQL Server 2000 默认实例之间进行版本切换。 除了默认实例外,还可以拥有任意数量的 SQL Server 2000 命名实例。在运行命名实例前,无须在计算机上运行默认实例。在没有默认实例的计算机上可运行命名实例。SQL Server 6.5 版和 SQL Server 7.0 只能作为默认实例运行,不能作为命名实例运行。 在单台计算机或单个故障转移群集中,Microsoft 不支持超过 16 个实例。 如果在一台计算机上运行作为默认实例的 SQL Server 6.5 版和一个或多个 SQL Server 2000 命名实例,则该计算机将有两个 SQL Server 程序组,而非一个 SQL Server 程序组: SQL Server 2000 程序组执行 SQL Server 2000 工具。 SQL Server 6.5 版程序组运行 SQL Server 6.5 工具。 如果同时运行 SQL Server 7.0 版和 SQL Server 2000,则 SQL Server 7.0 程序组中的图标将执行 SQL Server 2000 工具。 说明 在同一台计算机上安装 SQL Server 2000 实例前,必须将 SQL Server 6.5 Service Pack 5 应用于所有 SQL Server 6.5 实例。

⑵ SQL语言的功能包括哪些

SQL语言功能主要分成四部分:

(1)数据定义。(DDL)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。

(2)数据操纵。(DML)数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。

(3)数据控制。包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。

(4)嵌入式SQL的使用规定。涉及到SQL语句嵌入在宿主语言程序中使用的规则。

拓展资料:

DDL是SQL语言的四大功能之一。
用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束
DDL不需要commit.

⑶ 什么是sql,其包含哪几项功能的语句

SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。SQL包括了所有对数据库的操作,主要是由4个部分组成:
1.数据定义:这一部分又称为“SQL DDL”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。
2.数据操纵:这一部分又称为“SQL DML”,其中包括数据查询和数据更新两大类操作,其中数据更新又包括插入、删除和更新三种操作。
3.数据控制:对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务控制语句等。
4.嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则。

⑷ SQL语句有哪几种类型,各类型的主要作用是什么

1、数据操纵语言(DML):用来操纵数据库中数据的命令。包括:select、insert、update、delete。

2、数据定义语言(DDL):用来建立数据库、数据库对象和定义列的命令。包括:create、alter、drop。

3、数据控制语言(DCL):用来控制数据库组件。

(4)涉及sql的知识点扩展阅读:

SQL Server的特点如下:

1、具有真正的客户机和服务器体系结构。

2、图形化用户界面,使系统管理和数据库管理更加直观。

3、丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。

4、其完全集成,利用了NT的许多功能,如发送和接受消息等。

⑸ sql server中有哪些常用知识点

我的看法是:
1、数据库的语法:sql的语法一定要非常灵活应用。
2、写存储过程,会加快开发速度。
3、写触发器
至于表的多少就看你自己的啦。

⑹ 数据库基础篇(三)—— SQL之数据操纵、定义

1)语法

2)两种方式区别

方式一使用最多。它支持插入多行;支持嵌入子查询。方式二不支持。

3)特点

①字段类型和值类型一致或兼容,而且一一对应

②可以为空的字段,可以不用插入值,或用null填充

③不可以为空的字段,必须插入值

④字段个数和值的个数必须一致

⑤字段可以省略,但默认所有字段,并且顺序和表中的存储顺序一致

1)语法

2)栗子

1)语法

2)栗子

3)两种方式区别

① truncate不能加where条件,而delete可以加where条件

② truncate的效率高一点

③truncate 删除带自增长的列的表后,如果再插入数据,数据从1开;delete 删除带自增长列的表后,如果再插入数据,数据从上一次的断点处开始

④truncate删除不能回滚,delete删除可以回滚

1)库的管理:

2)表的管理:

注意:对于表和库的管理,语句理解就好。工作中最方便的是直接在Navicat中直接操作。那么,这里重要的是复制表,它的需求通常是直接复制表的结构或数据,或者部分数据及部分结构。不需要重新再创建表结构,导数据。直接用SQL,效率会很高,且不容易出错。

上面在创建表时,涉及到数据类型。它和Python程序语言类似,也有自己的数据类型。都是在存储数据时,要对数据类型进行限制,保证插入数据时的准确性。分类分别是数值型、字符型、日期型。图中标记部分为常用。

上面在创建表时涉及到约束,它是工作中非常重要的。我们从一个问题场景来看,下面是一个真实的面试题。我们第一反应是"报错!",但是面试官想听的是背后报错原因及解决方案。下面,带着问题来学习约束。

约束是一种限制,用于限制表中的数据结构,为了保证表中的数据的准确和可靠性、一致性。比如:创建用户表时,为了保证每一个用户唯一性,就需要进行约束。添加约束的时机分别是创建表、修改表时。SQL中有五大常用约束。如下:

①NOT NULL 非空约束,保证该字段的值不为空。如:用户ID

②DEFAULT 默认约束,字段如果不插入数据也有默认值。如:性别

③UNIQUE 唯一约束,可以为空。如:商品类别

④PRIMARY KEY 主键,保证字段唯一性、非空。如:ID,员工编号

⑤FOREIGN KEY 外键,用于限制两个表之间的关系,用于保证该字段的值必须来自主表的关联列的值。如:用户表里有个外键是order_id, order_id是order的主键。下图是约束在Navicat中设置的对应位置。

最后回答下上面的问题:原因是int类型的id字段最大数据量支持到4294967295,如果超过则会报错。解决方案:①检查id字段是否是主键②将id的类型转换为 bigint。

好,今天学习到这里。本节内容相对上一节要简单些。虽然简单,但每个知识点都是工作中常用的。这篇文章主要是SQL的增删改和表和库的管理。明天继续学习SQL的事务及视图。一起加油!

⑺ SQL经典50题题解

本篇文章主要是对SQL经典50题进行详细解析。

解析包含:1、解题思路,2、考核知识点,3、答案;

首先,表结构用脑图输出出来,如下所示:

先进行数据准备,建表以及插入数据。

1.查询"01"课程比"02"课程成绩高的学生的信息及课程分数

解题思路:

第一步:关键词有“课程编号”、“课程成绩”、“学生信息”,锁定使用表:学生表、成绩表。

第二步:给出学生信息及课程分数,通过主键sid关联学生表和课程表。

第三步:比较同一个学生不同课程的成绩,再关联一次课程表,利用sid、cid进行关联。

第四步:根据题目,用where比较分数筛选结果。

考核知识点: join,where

答案:

1.1 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )

解题思路:

第一步:关键词有“课程编号”、“学生编号”,锁定使用表:成绩表。

第二步:分别查询出存在" 01 "课程的学生和存在" 02 "课程的学生。

第三步:对两个子查询进行关联,用sid进行左联接。

考核知识点: where, 子查询,left join

答案:

1.2 查询同时存在01和02课程的情况

解题思路: 同1.1,把left join改为join

考核知识点: where, 子查询,join

答案:

1.3 查询选择了02课程但没有01课程的情况

解题思路: 类似1.1,把left join改为right join

考核知识点: where, 子查询,right join

答案:

小结: 上面的题主要考察join、left join、right join。

2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩

解题思路:

第一步:关键词有“平均成绩”、“学生编号”、“学生姓名”,锁定使用表:成绩表、学生表。

第二步:给出学生信息及课程分数,通过主键sid关联学生表和课程表。。

第三步:根据题目,用group by聚合计算出平均成绩,然后筛选出大于等于60分的学生。

考核知识点: join、group by、avg()

答案:

3.查询在 SC 表存在成绩的学生信息

解题思路:

第一步:关键词有“SC”、“学生信息”,锁定使用表:成绩表、学生表。

第二步:用EXISTS判断在SC表存在成绩的学生信息

考核知识点: EXISTS语句

答案:

4.查询所有同学的学生编号、学生姓名、选课总数、所有课程的成绩总和

解题思路:

第一步:关键词有“学生编号”、“学生姓名”、“选课总数”、“课程成绩”,锁定使用表:成绩表、学生表。

第二步:通过主键sid关联学生表成绩表,得到学生信息、学生成绩的宽表

第三步:根据题目,用group by聚合计算选课总数和总成绩

考核知识点: left join、group by、count()、sum()、ifnull()

答案:

5.查询“李”姓老师的数量

解题思路:

第一步:关键词有“老师的数量”,锁定使用表:教师表。

第二步:先筛选出“李”姓老师,再汇总统计“李”姓老师的数量

考核知识点: like、where、%、count()

答案:

6.查询学过“张三”老师授课的同学的信息

解题思路:

第一步:关键词有“老师”、“学生信息”,锁定使用表:教师表、学生表、成绩表、课程表。

第二步:通过sid关联学生表、成绩表,再通过cid关联课程表,最后通过tid关联教师表。

第三步:用where筛选出“张三”老师授课的同学的信息。

考核知识点: 多重连接join

答案:

7.查询没有学全所有课程的同学的信息。

解题思路:

第一步:关键词有“课程”、“学生信息”,锁定使用表:学生表、成绩表、课程表。

第二步:先统计学生的课程数量,再筛选出小于所有课程数量的学生。

考核知识点: left join、group by、count()

答案:

8.查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息。

解题思路:

第一步:关键词有“课程”、“学生信息”,锁定使用表:学生表、成绩表。

第二步:先查询学号“01”的同学学习的课程。

第三步:通过sid关联学生表和成绩表,获取所有学生信息、课程信息。

第四步:用EXISTS筛选出至少1门课相同的同学信息。

考核知识点: left join、子查询、EXISTS

答案:

9.查询和" 01 "号的同学学习的课程完全相同的其他同学的信息

解题思路:

第一步:关键词有“课程”、“学生信息”,锁定使用表:学生表、成绩表。

第二步:用“01”号的同学学习的课程左关联学生课程表,筛选出关链课程数一致的其他同学的sid

第三步:通过sid关联学生表和成绩表,获取完整的学生信息。

考核知识点: left join、子查询、group by

答案:

10.查询没学过"张三"老师讲授的任一门课程的学生姓名

解题思路:

第一步:关键词有“老师”、“学生姓名”,锁定使用表:学生表、成绩表、课程表、教师表。

第二步:反向求解。先查询至少学过“张三”老师讲授的课程的学生sid

第三步:用NOT EXISTS筛选出不在第二步查询结果的学生信息,。

考核知识点: 多重连接join、NOT EXISTS、子查询

答案:

11.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩

解题思路:

第一步:关键词有“姓名”、“平均成绩”,锁定使用表:学生表、成绩表。

第二步:通过sid关联学生表和成绩表,得到学生成绩信息宽表

第三步:用group by聚合统计,having对聚合的结果进行筛选。

考核知识点: join、group by、having、case when语句、avg()

答案:

12.检索" 01 "课程分数小于 60,按分数降序排列的学生信息

解题思路:

第一步:关键词有“课程分数”、“学生信息”,锁定使用表:学生表、成绩表。

第二步:通过sid关联学生表和成绩表,得到学生成绩信息宽表

第三步:用where筛选" 01 "课程分数小于 60的记录,并按照分数降序排列。

考核知识点: join、where、order by

答案:

13.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩

解题思路:

第一步:关键词有“平均成绩”,锁定使用表:成绩表。

第二步:用group by将学生课程的成绩由行转换为列并计算平均成绩。

第三步:按照平均成绩降序显示学生的所有课程的成绩以及平均成绩。

考核知识点: join

答案:

14.查询各科成绩最高分、最低分和平均分,以如下形式显示:

以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,

优良率,优秀率

及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90

要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列

解题思路:

第一步:关键词有“课程name”、“最高分”,锁定使用表:课程表、成绩表。

第二步:用group by聚合计算课程最高分、最低分、平均分。

第三步:用case语句判断及格、中等、优良、优秀,并结合group by计算。

考核知识点: join、group by、max()、min()、avg()、sum()、case when语句

答案:

15.按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺

解题思路:

第一步:关键词有“各科成绩”,锁定使用表:成绩表。

第二步:用rank()排名。

考核知识点: rank() over(partition by)

答案:

15.1 按各科成绩进行行排序,并显示排名, Score 重复时合并名次

解题思路:

第一步:关键词有“各科成绩”,锁定使用表:成绩表。

第二步:用dense_rank()排名。

考核知识点: dense_rank() over(partition by)

答案:

16.查询学生的总成绩,并进行排名,总分重复时保留名次空缺

解题思路:

第一步:关键词有“总成绩”,锁定使用表:成绩表。

第二步:用group by统计学生的总成绩。

第三步:用left join自关联进行排名。

考核知识点: group by、 left join

答案:

16.1 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺

解题思路:

第一步:关键词有“总成绩”,锁定使用表:成绩表。

第二步:用group by统计学生的总成绩。

第三步:用变量进行排名。

考核知识点: group by、变量

答案:

17. 统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分比

解题思路:

第一步:关键词有“各科成绩”、“课程名称”,锁定使用表:成绩表、课程表。

第二步:通过cid关联课程表和成绩表,得到课程、成绩信息宽表。

第三步:用group by聚合统计各分段的人数及百分比。

考核知识点: join、group by、case when条件语句

答案:

18.查询各科成绩前三名的记录

解题思路:

第一步:关键词有“各科成绩”,锁定使用表:成绩表。

第二步:筛选出各科比当前成绩高的人数小于3的学生记为各科的前三名。

考核知识点: 子查询

答案:

19.查询每门课程被选修的学生数

解题思路:

第一步:关键词有“每门课程”、“学生数”,锁定使用表:课程表、成绩表。

第二步:用left join关联课程表和成绩表,再用group by分组汇总各科的学生数。

考核知识点: left join、group by

答案:

20.查询出只选修两门课程的学生学号和姓名

解题思路:

第一步:关键词有“选修课程”、“学生姓名”,锁定使用表:学生表、成绩表。

第二步:用join关联学生表和成绩表,再用group by分组汇总每个学生的选修课程数,最后用having对分组汇总结果筛选出选修两门课程的学生。

考核知识点: join、group by、having

答案:

21. 查询男生、女生人数

解题思路:

第一步:关键词有“男生、女生”,锁定使用表:学生表。

第二步:通过ssex学生表用group by分组汇总男生、女生人数。

考核知识点: group by

答案:

22. 查询名字中含有“风”字的学生信息

解题思路:

第一步:关键词有“学生信息”,锁定使用表:学生表。

第二步:用like匹配姓名中含有风”字的学生。

考核知识点: like、%

答案:

23查询同名同性学生名单,并统计同名人数

解题思路:

第一步:关键词有“学生名单”,锁定使用表:学生表。

第二步:使用group by,汇总同名同性人数,再用having筛选出大于1的记录

考核知识点: group by、having

答案:

24.查询 1990 年出生的学生名单

解题思路:

第一步:关键词有“学生名单”,锁定使用表:学生表。

第二步:用where筛选出1990年出生的学生名单

考核知识点: where、year

答案:

25.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编

号升序排列。

解题思路:

第一步:关键词有“平均成绩”,锁定使用表:成绩表。

第二步:用group by分组计算各科平均成绩,再用order by完成多列排序

考核知识点: group by、order by

答案:

26.查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩

解题思路:

第一步:关键词有“平均成绩”、“学生姓名”,锁定使用表:成绩表、学生表。

第二步:用join关联学生表和成绩表

第三步:用group by分组汇总计算每个学生的平均成绩,再用having筛选平均成绩>=85的记录

考核知识点: join、group by、having

答案:

27.查询课程名称为“数学”,且分数低于 60 的学生姓名和分数

解题思路:

第一步:关键词有“课程名称”、“分数”、“学生姓名”,锁定使用表:课程表、成绩表、学生表。

第二步:用join关联学生表、成绩表、课程表,再用where筛选

考核知识点: 多重join、where

答案:

28. 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)

解题思路:

第一步:关键词有“所有学生”、“分数”,锁定使用表:学生表、成绩表

第二步:用left join关联学生表、成绩表

考核知识点: left join

答案:

29.查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数

解题思路:

第一步:关键词有“课程成绩”、“姓名”、“课程名称”,锁定使用表:学生表、成绩表、课程表

第二步:用join关联学生表、成绩表、课程表,再筛选出课程成绩在70分以上的。

考核知识点: 多重join

答案:

30.查询不及格的课程

解题思路:

第一步:关键词有“不及格的课程”,锁定使用表:成绩表、课程表

第二步:关联课程表和成绩表,再条件筛选出不及格的课程信息。

考核知识点: join、where、去重

答案:

31.查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名

解题思路:

第一步:关键词有“课程编号”、“课程成绩”、“姓名”,锁定使用表:成绩表、学生表

第二步:关联成绩表和学生表,再条件筛选出结果。

考核知识点: join、where

答案:

32.求每门课程的学生人数

解题思路:

第一步:关键词有“课程”、“学生人数”,锁定使用表:成绩表

第二步:用group by分组汇总各科的学生人数。

考核知识点: group by

答案:

33.成绩不重复,查询选修“张三”老师所授课程的学生中,成绩最高的学生信息及其成绩

解题思路:

第一步:关键词有“成绩”、““张三”老师”、“学生信息”,锁定使用表:成绩表、课程表、学生表、教师表

第二步:关联所有表,筛选出选修“张三”老师所授课程的学生。

第三步:因为成绩不重复,对学生成绩由高到低排序,筛选出第一行记录。

考核知识点: 多重join、order by、limit

答案:

34.成绩有重复的情况下,查询选修“张三”老师所授课程的学生中,成绩最高的学生

信息及其成绩

解题思路:

第一步:关键词有“成绩”、““张三”老师”、“学生信息”,锁定使用表:成绩表、课程表、学生表、教师表

第二步:关联所有表,筛选出选修“张三”老师所授课程的学生。

第三步:因为成绩有重复,先求出最高成绩,再匹配最高成绩对应的学生信息。

考核知识点: 多重join、max()

答案:

35.查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩

解题思路:

第一步:关键词有“成绩”,锁定使用表:成绩表

第二步:自联接,筛选出不同课程成绩相同的记录

考核知识点: 自联接join

答案:

36. 查询每门成绩最好的前两名

解题思路:

第一步:关键词有“成绩”,锁定使用表:成绩表

第二步:自联接,筛选出各科低于自身成绩的人数为2的。

考核知识点: left join

答案:

37. 统计每门课程的学生选修人数(超过 5 人的课程才统计)。

解题思路:

第一步:关键词有“选修人数”,锁定使用表:成绩表

第二步:先用group by分组汇总各科的选修人数,再条件筛选出超过5人的课程。

考核知识点: group by、having

答案:

38.检索至少选修两门课程的学生学号

解题思路:

第一步:关键词有“两门课程”,锁定使用表:成绩表

第二步:先用group by分组汇总每个学生的选修课程数,再用having筛选出至少2门课程的学生学号

考核知识点: group by、having

答案:

39.查询选修了全部课程的学生信息

解题思路:

第一步:关键词有“全部课程”、“学生信息”,锁定使用表:成绩表、课程表、学生表

第二步:关联学生表和成绩表,再用group by分组统计每个学生的选修课程数

第三步:最后用having筛选出等于全部课程数的学生信息。

考核知识点: join、 group by、having、子查询

答案:

40.查询各学生的年龄,只按年份来算

解题思路:

第一步:关键词有“学生的年龄”,锁定使用表:学生表

第二步:用year和now来统计

考核知识点: year、now

答案:

41. 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一

解题思路:

第一步:关键词有“出生日期”,锁定使用表:学生表

第二步:用timestampdiff()统计年龄

考核知识点: timestampdiff()

答案:

42.查询本周过生日的学生

解题思路:

第一步:关键词有“过生日”,锁定使用表:学生表

第二步:用week函数

考核知识点: week()

答案:

43. 查询下周过生日的学生

解题思路:

第一步:关键词有“过生日”,锁定使用表:学生表

第二步:用week函数

考核知识点: week()

答案:

44.查询本月过生日的学生

解题思路:

第一步:关键词有“过生日”,锁定使用表:学生表

第二步:用month函数

考核知识点: month()

答案:

45.查询下月过生日的学生

解题思路:

第一步:关键词有“过生日”,锁定使用表:学生表

第二步:用month函数

考核知识点: month()

答案: