首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2019Java面试宝典 -- 数据库常见面试题

union(称为联合)的作用是将多个结果合并在一起显示出来。...如果没有在查询中指定某一个子句,将跳过相应的步骤。 4、常用的SQL 聚合函数?...聚合函数是对一组进行计算并返回单一的的函数,它经常与 select 语句中的 group by 子句一同使用。 a. avg():返回的是指定组中的平均值,空被忽略。 b....这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化序列化请求,使得在同一间仅有一个请求用于同一数据。...SQL Server: 在分页查询上,我感觉SQL Server比较费劲,没有一个专门的分页的语句,并且每个版本对应的查询方式不一样,下面例子是每页10条,取第31-40条数据:   --方法一:Order

2.2K20

神奇的 SQL ,高级处理之 Window Functions → 打破我们的局限!

功能   中文翻译过来,叫 窗口函数 ,或者 开窗函数 ,在 Oracle 中也称 分析函数   与 聚合函数 一样,也是对集合进行聚合计算,但和 聚合函数 又不一样,使用 聚合函数 ,每组只返回一个...Oracle 11g 、 SQL Server 2008 、 DB2 9.7 、 PostgreSQL 8.4 都支持窗口函数   但 MySQL 从 8 开始才支持, MySQL5.7 及之前的版本不支持...,如: 1,2,2,2,5 , 3,4 被跳过了 DENSE_RANK 排序时,如果存在相同位次的记录,则不会跳过之后的位次,如: 1,2,2,2,3,4   ROW_NUMBER   获取行数或者行号...我都跟你们实现好了:MySQL 分组排序后 → 如何取前N条倒数N条   还有其他的 专用窗口函数 就不一一做介绍了,大家可以去各个数据库的官网进行查阅 聚合函数的窗口化使用   所有的 聚合函数 都能用作窗口函数...  4、 窗口函数 的使用范围很有限,你可以随意使用,报语法错误了再调整呗 参考   《SQL 基础教程》

16610
您找到你想要的搜索结果了吗?
是的
没有找到

【数据库设计和SQL基础语法】--查询数据--聚合函数

六、注意事项和优化建议 7.1 处理 NULL NULL 的特殊处理 NULL 比较: 在使用比较运算符(如 =、),要特别注意 NULL 的比较。...连接操作和 NULL 使用 COALESCE IFNULL 连接: 在连接操作中,如果有可能出现 NULL ,可以使用 COALESCE IFNULL 将 NULL 转换为其他。...避免过多使用 NULL: 尽量设计表结构避免过多使用 NULL,可以考虑使用默认占位符。...使用 CASE 表达式: 在需要对 NULL 进行条件判断,可以使用 CASE 表达式明确处理不同情况。...NULL 处理 NULL 的注意事项: 在包含 NULL 的列上使用 DISTINCT ,可能会遇到 NULL 的排序和比较问题。

25810

【数据库设计和SQL基础语法】--查询数据--聚合函数

六、注意事项和优化建议 7.1 处理 NULL NULL 的特殊处理 NULL 比较: 在使用比较运算符(如 =、),要特别注意 NULL 的比较。...连接操作和 NULL 使用 COALESCE IFNULL 连接: 在连接操作中,如果有可能出现 NULL ,可以使用 COALESCE IFNULL 将 NULL 转换为其他。...避免过多使用 NULL: 尽量设计表结构避免过多使用 NULL,可以考虑使用默认占位符。...使用 CASE 表达式: 在需要对 NULL 进行条件判断,可以使用 CASE 表达式明确处理不同情况。...NULL 处理 NULL 的注意事项: 在包含 NULL 的列上使用 DISTINCT ,可能会遇到 NULL 的排序和比较问题。

21310

一道简单的sql语句题

by),这个在mysql中并没有实现,在oracle或者sql server中是有实现的。...表名 where …… 注意上面两种赋值符号,使用set可以用“=”“:=”,但是使用select必须用“:=赋值” 使用变量添加行号 我们可以设置一个初始行号,接下来在 select语句中不断改变行号的即可...上面的效果得以实现,得益于mysql中变量在select被循环赋值的特性,即每取出一行,i的都会变化一次,而在sql server中,i不会被循环赋值,所有列的都是最后一次的i。...if语句 mysql中if语句的语法如下: IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 0 and expr1 NULL),则 IF()的返回为...IF() 的返回为数字字符串,具体情况视其所在语境而定。

2.7K31

SQL Server2012在程序开发中实用的一些新特性

SQL Server 2012已经发布一段时间了,最近在新的机器上安装了最新的SQL Server 2012 SP1,体检下感觉良好。...以前在SQL Server中分页,最早是用top或者临时表,后来出现了ROW_NUMBER函数实现分页,现在最新的SQL2012可以在order by子句后跟offset和fetch来分页,感觉有点像是...3.2不用判断类型和NULL的字符串连接CONCAT函数 SQL Server本来对字符串的连接很简单,直接使用“+”号,但是需要注意两个问题,一是必须类型都是字符串类型,如果是数字类型那么会报语法错误...在程序中经常使用枚举,在数据库中使用tinyint来保存枚举,但是在查看却不是很容易理解枚举的含义,必须查看代码看1对应什么,2对应什么才知道。...,所以如果枚举的0那么就没办法显示,2是枚举必须连续而且比较小,不能使用100、200等,那要是用CHOOSE那得写死人了。

1.8K20

那些年我们写过的T-SQL(中篇)

此外开窗函数ROW_NUMBER使用也使得数据库分页变得异常的容易,其他的一些特性使用相对较少,在需要再查阅即可。...表表达式Table Expression是一种命名的查询表达式,代表一个有效的关系表与其他表的使用类似。SQL Server支持4种类型的表表达式:派生表、公用表表达式、视图等。...可能你会说使用外联接或者EXISTS运算符也可以达到相似效果,并在存在NULL比较的情况下必须添加相应处理代码,使用集合操作符可以简化SQL代码。...在对两个(多个)查询结果集进行集合操作,需要注意其中的查询并不支持ORDER BY操作,如果还是需要这样的功能可以使用外部的ORDER BY或者是使用TOP等操作符将返回的游标转化为结果集。...SQL Server 2012 T-SQL基础教程[M]. 北京:人民邮电出版社, 2013.

3.7K70

HiveSQL分析函数实践详解

框架是对窗口进行进一步分区,框架有两种范围限定方式: 一种是使用 ROWS 子句,通过指定当前行之前之后的固定数目的行来限制分区中的行数。...另一种是使用 RANGE 子句,按照排列序列的当前,根据相同来确定分区中的行数。...RANGE表示按照的范围进行范围的定义,而ROWS表示按照行的范围进行范围的定义;边界规则的可取值见下表: 需要注意: 当使用框架,必须要有 order by 子句,如果仅指定了order by 子句而未指定框架...序号函数:row_number() / rank() / dense_rank()(面试重点) 三者区别: RANK(): 并列排序,跳过重复序号——1、1、3 ROW_NUMBER(): 顺序排序——...Defval 默认,当两个函数取 上N 或者 下N 个,当在表中从当前行位置向前数N行已经超出了表的范围,lag() 函数将defval这个参数值作为函数的返回,若没有指定默认,则返回NULL

16910

【测试】两种数据库,四种分页算法的效率比较

SQL Server 2000(2005) 表变量 最大失所望的 太多了 SQL Server 2000(2005) Row_Number 只适合SQL Server2005 只能用在一种数据库 SQL...Server 2005 一、max      缺点就是只能有一个排序字段,而且排序字段的不能有重复,或者说可以有重复,但是不能在一页的最上面、最后重复。...5、只能在SQL Server 2000和SQL Server2005里面使用,而且在2005里面速度明显没有Row_Number快,吴旗娃的那个网站推荐的分页算法,都分成了两个版本,SQL2000的和...SQL2005的,对于后者推荐使用Row_Number。      ...3、第一次运行的时候SQL Server需要加载一些数据到内存里面,所以时间比较长。      4、第一页的时候需要使用Count(*)来统计总记录数,所以时间也有点长。

86070

Hive SQL 大厂必考常用窗口函数及相关面试题

框架是对窗口进行进一步分区,框架有两种范围限定方式: 一种是使用 ROWS 子句,通过指定当前行之前之后的固定数目的行来限制分区中的行数。...另一种是使用 RANGE 子句,按照排列序列的当前,根据相同来确定分区中的行数。...RANGE表示按照的范围进行范围的定义,而ROWS表示按照行的范围进行范围的定义;边界规则的可取值见下表: 需要注意: 当使用框架,必须要有 order by 子句,如果仅指定了order by...序号函数:row_number() / rank() / dense_rank()(面试重点) 三者区别: RANK(): 并列排序,跳过重复序号——1、1、3 ROW_NUMBER(): 顺序排序——...Defval 默认,当两个函数取 上N 或者 下N 个,当在表中从当前行位置向前数N行已经超出了表的范围,lag() 函数将defval这个参数值作为函数的返回,若没有指定默认,则返回NULL

3.1K20

【愚公系列】2022年01月 SQL Server数据库-数据分页的五种性能分析

先把数据库中的相关数据全部读入“缓存”第三方工具,再由代码程序对“缓存”第三方工具中的数据进行读取+分页操作(速度快,简易性差)。...本文主要是直接在数据库中对相关数据进行分页操作,数据库是SQL Server上的案例(其它种类数据库由于Sql语句略有差异,所以需要调整,但方案也类似) 一、数据分页的五种性能分析 1.ROW_NUMBER...() OVER()方式 1、这种分页方案主要是在SQL2012以下推荐使用。...)RowId查询,比较高效的查询方式,只有在SQL Server2005更高版本才支持。...2、代码案例 -- 2.数据库分页方案一 ROW_NUMBER() OVER()方式 SELECT * FROM MO ORDER BY MO_ID offset 0 ROWS FETCH NEXT

78030

hive sql系列(总结)

需求转化成sql思路: 1、排序相关三个函数:row_number()、rank()、dense_rank() 2、统计A下的B topn,需要基于A开窗根据不同的情况使用排序函数,得到临时表,然后基于临时表过滤数据...(有点类似spark、flink算子链,算子合并的意思) 5、当遇到实现方式不能得到正确结果,先核对逻辑,每一步的实现得到的结果是否如你所愿,如果还不能解决,每步一测,确保一进一出符合的(划重点)...4、row_number:添加序号,无论字段是否相同 5、dense_rank():基于over开窗函数的排序函数,如果相同,则排序的序号相同,紧接的序号不跳过。...、nvl(value1,value2):如果value1是null,则返回value2,如果不是,则返回value1 16、lag(字段,n,默认):基于over开窗函数,根据排序规则取当前行前第n个数...,如果不指定n,则默认取前一个,如果取不到,返回默认,如果不指定默认,取不到则返回Null

1.8K40

Go 语言使用原生 SQL 兼容多种数据库

SQL Server 使用双引号 "" 方括号 [] 包裹标识符 2. PostgreSQL 使用双引号 "" 包裹标识符 3. MySQL 使用反引号 `` 包裹标识符 4....SQLite 使用双引号 "" 反引号 `` 包裹标识符 (二)常用数据类型 对于同一个字段,在不同的数据库中可能需要使用不同的数据类型,如: 大文本类型在 SQL Server 数据库中可以使用...[n]varchar(max) [n]text,而在 Oracle 数据库中则需要使用 [n]clob; 布尔类型在 SQL Server 数据库中使用 bit,在 Oracle 数据库中则需要使用...CAST(1 AS CHAR) FROM DUAL; COALESCE() COALESCE(): 在字段NULL 使用另一个代替应该使用通用的 COALESCE() 函数,而不是某些数据库中特有的...(SELECT NULL)) NUM, * FROM table_name) TB WHERE NUM > 0 SQL Server 2012 及以后版本的数据库 通过 ORDER BY <column

10710

SQL Server秘籍:数据分隔解密,数据库处理新境界!

在数据数据过程中经常会遇到数据按照一定字符进行拆分,而在不同版本的SQL SERVER数据库中由于包含的函数不同,处理的方式也不一样。本文将列举2个版本的数据库中不同的处理方法。 1....使用 XML 方法 在SQL SERVER 2016版本之前,因为没有直接进行数据拆分的方法,因此需要通过其他方式来解决,以下是案例: 首先,我们考虑以下的案例。...使用 STRING_SPLIT 函数 现在,我们看一下第二种方法,使用 SQL Server 2016 及更新版本引入的 STRING_SPLIT 函数。...小结 无论是使用 XML 数据方法,还是使用 STRING_SPLIT 函数,都可以有效地处理 SQL Server 中的逗号分隔。选择哪种方法取决于你的数据库版本和个人偏好。...希望这篇文章对你在 SQL Server 中处理逗号分隔时有所帮助。如果有任何问题疑问,请随时在评论中留言。感谢阅读!

13800

常见经典数仓面试题

else t1.b end is not null ; 2.SQL 求某天各个直播间同时最大在线人数与时刻。...()、rank()和dense_rank()的区别以及具体使用 表如下: a b 1 10 2 11 3 11 4 11 5 12 6 12 7 13 执行sql: select a,...:不管排名是否有相同的,都按照顺序1,2,3... rank:排名相同的名次一样,同一排名有几个,后面排名就会跳过几次 dense_rank:排名相同的名次一样,且后面名次不跳跃 4.hive解析array...,map,struct,json array:array中的数据为相同类型,例如,假如array A中元素['a','b','c'],则A[0]的为'a'。...map(K-V对):访问指定域可以通过["指定域名称"]进行,例如,一个Map M包含了一个{"name":"b"}的kv对,gid的可以通过M['name']来获取。

1.1K10

Hive的利器:强大而实用的开窗函数

序号从1开始,按照顺序,生成分组内记录的序列,row_number()的不会存在重复,当排序的相同时,按照表中记录的顺序进行排列。...与row_number函数不同的是,rank函数考虑到了over子句中排序字段相同的情况,如果使用rank函数来生成序号,over子句中排序字段相同的序号是一样的,后面字段不相同的序号将跳过相同的排名号排下一个...dense_rank功能与rank函数类似,但dense_rank函数在生成序号是连续的。dense_rank函数出现相同排名,将不跳过相同排名号。 rank紧接上一次的rank。...第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认(当往下第n行为NULL时候,取默认,如不指定,则为NULL。...第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认(当往上第n行为NULL时候,取默认,如不指定,则为NULL

3.2K30

MySQL窗口函数,你最熟悉的陌生人~

() / rank() / dense_rank() ROW_NUMBER():顺序排序 —— 1、2、3 RANK():并列排序,跳过重复序号 —— 1、1、3 DENSE_RANK():并列排序,不跳过重复序号...以后同学们在面试笔试被问到时,请不要再说自查询嵌套之类的lowB方案了,不然可别说你认识我~狗子们 2、分布函数:percent_rank() / cume_dist() 这个分布函数基本不用,不讲...n行(LEAD(expr,n))的expr的 应用场景:查询前n名同学的成绩和当前同学成绩的差值   内层SQL先通过LAG()函数得到前1名同学的成绩,外层SQL再将当前同学和前1名同学的成绩做差得到成绩差值...| | 10 | 面馅儿包子 | 0 | 2021-08 | 100 | NULL | +----+--------------------+-------+--...用别名一样,这样看起来会简洁舒服一些,是吧。

98410
领券