本文中将与大家学习和交流以下两件事: 1)学习和教一些基本功能以外的SQL函数 2)探讨一些SQL面试练习问题 * 本文中的问题仅来自Leetcode 问题1:第二高的薪水 编写一个SQL查询用于从Employee...每个员工都有一个ID、一个薪水,还有一个部门ID列。...查询来查找每个部门中薪水最高的员工。...解决方案:CASE WHEN 可以将CASE WHEN THEN语句视为编码中的IF语句。 第一条WHEN语句检查行数是否为奇数,如果行数为奇数,请确保ID号不变。...第二个WHEN语句为每个id加1(例如,1,3,5变为2,4,6) 同样,第三个WHEN语句将每个id减1(2,4,6变为1,3,5) SELECT CASE WHEN((SELECT MAX(id)
(产品),用于管理DB中的数据 3、SQL: 结构化查询语言,用于和DBMS通信的语言 数据库存储数据的特点 1、将数据放到表中,表再放到库中 2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己...的使用法一: case 要判断的字段或表达式 when 条件1 then 要显示的值1或语句1 when 条件2 then 要显示的值2或语句2 when 条件3 then 要显示的值3或语句3 .....的使用法二: case when 条件1 then 要显示的值1或语句1 when 条件2 then 要显示的值2或语句2 when 条件3 then 要显示的值3或语句3 ...... else...tx_isolation; */ 4.6 视图 #视图 /* 含义: 虚拟表,和普通表一样使用 好处: 1、sql语句提高重用性,效率高 2、和表实现了分离,提高了安全性 视图和表的区别:...(该参数不能做返回值) out:该参数只能作为输出(该参数只能做返回值) inout:既能做输入又能做输出 5.流程控制 5.1 函数 /* 含义:一组预先编译好的SQL语句的集合,可理解成批处理语句
作用之优点 存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以 完成复杂的判断和较复杂的运算。 存储过程允许标准组件式编程。...在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。 而批处理的 Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。...有些系统变量的值是可以利用语句来动态进行更改的,但是有些系统变量的值却是只读的,对于那些可以更改的系统变量,我们可以利用set语句进行更改。 系统变量-全局变量:由系统提供,在整个数据库有效。..., 在存储过程和函数中可以使用光标对结果集进行循环的处理。...光标的使用包括光标的声明、OPEN、FETCH 和 CLOSE.
、表A字段如下 month person income 月份 人员 收入 要求用一个SQL语句(注意是一个)的处所有人(不区分人员)每个月及上月和下月的总收入 要求列表输出为...要求的输出数据 ? 试用一个Sql语句完成。 6,简述oracle行触发器的变化表限制表的概念和使用限制,行触发器里面对这两个表有什么限制。 7、oracle临时表有几种。...select aa.x from aa where not exists ( select 'x' from bb where aa.x = bb.x ) ; 以上语句同时使用到了aa中x的索引和的bb...c、共享池Shared Pool:包含用来处理的SQL语句信息。它包含共享SQL区和数据字典存储区。共享SQL区包含执行特定的SQL语句所用的信息。...使用分区方式建立的表叫分区表 范围分区 每个分区都由一个分区键值范围指定(对于一个以日期列作为分区键的表,“2005 年 1 月”分区包含分区键值为从“2005 年 1 月 1 日” 到“2005
11-2019','%d-%m-%Y') AS 日期; # 查询入职日期为1992-4-3的员工信息 SELECT * FROM employees WHERE hiredate=STR_TO_DATE...AS 新工资 FROM employees; # case函数的使用二 # 工资大于20000,显示A级别 # 工资大于15000,显示B级别 # 工资大于10000,显示C级别 SELECT...,全外连接) 交叉连接 # DQL函数语句--连接查询 /* 含义:又称为多表查询,当查询的字段来自于多个表时,就会用到连接查询 分类: 按年代分类:sql92标准(仅支持内连接),sql99标准(...,一夜显示不全,需要分页提交sql请求 LIMIT 语句放在查询语句的最后 # 分页查询 /* 应用场景: 当要显示的数据,一夜显示不全,需要分页提交sql请求 语法: SELECT 查询列表 FROM...单查询的信息一致 特点: 要求多条查询语句的查询列数是一致的 要求多条查询语句每一列的类型和顺序最好是一致的 UNION关键字会自动去重,如果不想去重可以使用UNION ALL关键字 # 联合查询 /
GROUP BYrq-- 使用 CASE WHEN 来对每个胜负情况进行条件判断,然后将符合条件的结果进行计数。...语句使用自联接将 team 表与自身连接,通过比较球队的名称确保每个组合只显示一次。...year;-- 这条 SQL 语句使用了条件聚合函数 MAX(CASE WHEN ...)...SQL语句统计2011年至2013年三年中每个季度的销售金额?...-- AS row_num: 这部分是将窗口函数的结果命名为 row_num,作为一个新的列名。-- 因此,整个语句的作用是为每个部门内的员工按照工资从高到低进行排序,并为每个排名结果分配一个行号。
更改 108 员工的信息: 使其工资变为所在部门中的最高工资, job 变为公司中平均工资最低的 job update employees e1 set salary = ( select...ps:这些题考察SQL的编写能力,对于这类型的题目,需要你先把4张表之间的关联关系搞清楚了,最好的办法是自己在草稿纸上画出关联图,然后再编写对应的SQL语句就比较容易了。...下图是我画的这4张表的关系图,可以看出它们之间是通过哪些外键关联起来的: 一、创建数据库和表 为了演示题目的运行过程,我们先按下面语句在客户端navicat中创建数据库和表。...(超过2人的课程才统计) 要求输出课程号和选修人数,查询结果按人数降序排序,若人数相同,按课程号升序排序 /* 分析思路 select 查询结果 [要求输出课程号和选修人数] from 从哪张表中查找数据...:学号、课程号、成绩) 使用sql实现将该表行转列为下面的表结构 【解答】 第1步,使用常量列输出目标表的结构 可以看到查询结果已经和目标表非常接近了 select 学号,'课程号0001','课程号
ps:这些题考察SQL的编写能力,对于这类型的题目,需要你先把4张表之间的关联关系搞清楚了,最好的办法是自己在草稿纸上画出关联图,然后再编写对应的SQL语句就比较容易了。...下图是我画的这4张表的关系图,可以看出它们之间是通过哪些外键关联起来的: 一、创建数据库和表 为了演示题目的运行过程,我们先按下面语句在客户端navicat中创建数据库和表。...(超过2人的课程才统计) 要求输出课程号和选修人数,查询结果按人数降序排序,若人数相同,按课程号升序排序 /* 分析思路 select 查询结果 [要求输出课程号和选修人数] from 从哪张表中查找数据...by)和汇总函数得到每个组里的一个值(最大值,最小值,平均值等)。...:学号、课程号、成绩) 使用sql实现将该表行转列为下面的表结构 【解答】 第1步,使用常量列输出目标表的结构 可以看到查询结果已经和目标表非常接近了 select 学号,'课程号0001','课程号
,然后再编写对应的SQL语句就比较容易了。...下图是我画的这4张表的关系图,可以看出它们之间是通过哪些外键关联起来的: ? 一、创建数据库和表 为了演示题目的运行过程,我们先按下面语句在客户端navicat中创建数据库和表。...(超过2人的课程才统计) 要求输出课程号和选修人数,查询结果按人数降序排序,若人数相同,按课程号升序排序 /* 分析思路 select 查询结果 [要求输出课程号和选修人数] from 从哪张表中查找数据...分组取每组最大值 案例:按课程号分组取成绩最大值所在行的数据 我们可以使用分组(group by)和汇总函数得到每个组里的一个值(最大值,最小值,平均值等)。但是无法得到成绩最大值所在行的数据。...【解答】 第1步,使用常量列输出目标表的结构 可以看到查询结果已经和目标表非常接近了 select 学号,'课程号0001','课程号0002','课程号0003' from score; ?
ps:这些题考察SQL的编写能力,对于这类型的题目,需要你先把4张表之间的关联关系搞清楚了,最好的办法是自己在草稿纸上画出关联图,然后再编写对应的SQL语句就比较容易了。...下图是我画的这4张表的关系图,可以看出它们之间是通过哪些外键关联起来的: 一、创建数据库和表 为了演示题目的运行过程,我们先按下面语句在客户端navicat中创建数据库和表。...by)和汇总函数得到每个组里的一个值(最大值,最小值,平均值等)。...:学号、课程号、成绩) 使用sql实现将该表行转列为下面的表结构 【解答】 第1步,使用常量列输出目标表的结构 可以看到查询结果已经和目标表非常接近了 select 学号,'课程号0001','课程号...第3关,分组 分组,并使用最大值函数max取出上图每个方块里的最大值 select 学号, max(case 课程号 when '0001' then 成绩 else 0 end) as '课程号0001
,然后再编写对应的SQL语句就比较容易了。...下图是我画的这4张表的关系图,可以看出它们之间是通过哪些外键关联起来的: 一、创建数据库和表 为了演示题目的运行过程,我们先按下面语句在客户端navicat中创建数据库和表。...(超过2人的课程才统计) 要求输出课程号和选修人数,查询结果按人数降序排序,若人数相同,按课程号升序排序 /* 分析思路 select 查询结果 [要求输出课程号和选修人数] from 从哪张表中查找数据...by)和汇总函数得到每个组里的一个值(最大值,最小值,平均值等)。...:学号、课程号、成绩) 使用sql实现将该表行转列为下面的表结构 【解答】 第1步,使用常量列输出目标表的结构 可以看到查询结果已经和目标表非常接近了 select 学号,'课程号0001','课程号
本文将讨论10个最重要的SQL概念。在准备面试时,你应该主要关注这些概念。 开始吧! 1. CASE WHEN 许多问题都可能需要使用CASE-WHEN语句,仅仅是因为这个概念功能如此之多。...例如,如果你已有“月(month)”列,又希望为每个month创建一个单独的列,则可以使用CASE WHEN语句来透视数据。 示例问题:编写一个SQL查询重新排列表样式,以使每个月对应一个收入栏。...左连接 vs 内连接 对于那些对SQL比较陌生或有一段时间没有使用过SQL的人来说,他们很容易混淆左连接和内连接。请确保你能清楚理解每个连接如何获得不同的结果。许多面试问题会要求你做一些连接。...这是种好方法,可以解决需要多次按序查询以生成给定结果的特殊问题。子查询和WITH AS语句在查询中的使用次数都非常多,因此你需要知道如何使用它们。...日期时间处理 你肯定会遇到一些涉及日期和时间数据的SQL问题。例如,你也许需要按月份对数据分组,或者将变量格式从DD-MM-YYYY转换为简单的月份。
部门工资最高的员工 难度中等 SQL架构 Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。...请你编写 SQL 语句,对于每个员工,查询他除最近一个月(即最大月)之外,剩下每个月的近三个月的累计薪水(不足三个月也要计算)。 结果请按 Id 升序,然后按 Month 降序显示。...编写一个 SQL 查询,报告每个安装日期、当天安装游戏的玩家数量和第一天的留存时间。...请写出一条SQL语句以查询每个用户的注册日期和在 2019 年作为买家的订单总数。...这个表包括员工的company id, id, name 和 salary 写一条查询 SQL 来查找每个员工的税后工资 每个公司的税率计算依照以下规则 如果这个公司员工最高工资不到 1000 ,税率为
---- 题九:各部门工资最高的员工 Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。...题十:各部门工资前三高的员工 Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId 。...所以我们可以像这样给 WHERE 子句添加一个新的条件。 因为我们已经得到了要删除的记录,所以我们最终可以将该语句更改为 DELETE。...题十二:上升的温度 给定一个 Weather 表,编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 Id。...SELECT COUNT(*) AS counts FROM seat 然后使用 CASE 条件和 MOD 函数修改每个学生的座位 id。
如果冲突的数据和要更新的数据不同,则会先删除表中原有的冲突数据,然后在新插入要更新的数据,sql语句返回的结果就是2 row affected;如果update的数据和表中不冲突的话,则该语句的作用和普通的...如何显示每个部门的平均工资和最高工资 显示每个部门的每种岗位的平均工资和最低工资 先以部门的不同将emp中的数据分为三组,然后在每个组内部再按照岗位的不同进行细分组,然后对最终细分的组内进行聚合统计...使用年薪进行降序排序 显示工资最高的员工的名字和工作岗位 显示工资高于平均工资的员工信息 显示每个部门的平均工资和最高工资 显示平均工资低于2000的部门号和它的平均工资 显示每种岗位的雇员总数...显示部门号为10的部门名,员工名和工资 显示各个员工的姓名,工资,及工资级别 显示员工FORD的上级领导的编号和姓名(mgr是员工领导的编号–empno) 像上面这样的需求,其实就需要自连接,可以使用多表查询的方式...显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员工) 查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人 显示每个高于自己部门平均工资的员工的姓名、
的雇员, 姓名是:smith,工作是:clerk 字符串的连接使用‘||’ 四、条件查询和排序 使用where 语句对结果进行过滤 比较运算符 11 其他比较运算符...来,在sql 中使用LIKE 语句完成。...在SQL 语句中使用IF-THEN-ELSE 实现的方式: CASE 表达式:SQL99 的语法,类似Basic,比较繁琐 DECODE 函数:Oracle 自己的语法,类似Java,比较简介...sum() 范例:查询出20 号部门的员工的工资总和 分组数据 范例:查询每个部门的人数 11 范例:查询出每个部门的平均工资 范例:查询出来部门编号,和部门下的人数 我们发现报了一个...处理语句 else 是所有sql数据库都支持的 case 判断列 when 列值 then 显示值 when 列值 then
4.使用CASE WHEN枢转数据 您很可能会看到许多要求在陈述时使用CASE WHEN的问题,这只是因为它是一种多功能的概念。如果要根据其他变量分配某个值或类,则允许您编写复杂的条件语句。...例如,如果您有一个月列,并且您希望为每个月创建一个单个列,则可以使用语句追溯数据的情况。 示例问题:编写SQL查询以重新格式化表,以便每个月有一个收入列。...示例问题:给定下面的员工表,写出一个SQL查询,了解员工的工资,这些员工比其管理人员工资更多。对于上表来说,Joe是唯一一个比他的经理工资更多的员工。...您应该肯定会期望某种涉及日期时间数据的SQL问题。...例如,您可能需要将数据分组组或将可变格式从DD-MM-Yyyy转换为简单的月份。 示例问题:给定天气表,写一个SQL查询,以查找与其上一个(昨天)日期相比的温度较高的所有日期的ID。
SQL是一套标准,程序员主要学习的就是SQL语句,这个SQL在mysql中可以使用,同时在Oracle中也可以使用,在DB2中也可以使用。...xxxx.sql这种文件被称为sql脚本文件。 sql脚本文件中编写了大量的SQL语句。 我们执行SQL语句,可以使用sql脚本文件。 在mysql当中怎么执行sql脚本文件呢?...正确 例:查询每个员工的上级领导,要求显示所有员工的名字和领导名?...:员工表每个员工的领导编号 = 员工表的员工号(相当于是领导的员工编号) #所以就可以把a表看作是员工表,b表看作是领导表 此处king的信息用外连接也查出来了,而使用内连接就差不出来 7....一条SQL中内连接和外连接可以混合。都可以出现。 例:找出每个员工的部门名称以及工资等级,要求显示员工名,部门名,薪资,薪资等级?
4.使用CASE WHEN枢转数据 您很可能会看到许多要求在陈述时使用CASE WHEN的问题,这只是因为它是一种多功能的概念。如果要根据其他变量分配某个值或类,则允许您编写复杂的条件语句。...例如,如果您有一个月列,并且您希望为每个月创建一个单个列,则可以使用语句追溯数据的情况。 示例问题:编写SQL查询以重新格式化表,以便每个月有一个收入列。...示例问题:给定下面的员工表,写出一个SQL查询,了解员工的工资,这些员工比其管理人员工资更多。对于上表来说,Joe是唯一一个比他的经理工资更多的员工。...您应该肯定会期望某种涉及日期时间数据的SQL问题。...示例问题:给定天气表,写一个SQL查询,以查找与其上一个(昨天)日期相比的温度较高的所有日期的ID。
领取专属 10元无门槛券
手把手带您无忧上云