MySQL面试

高阶函数

select ROW_NUMBER() over(partition by t3.customerId order by t3.uid) as rownum

select rank() over(partition by t3.customerId order by t3.uid) as rownum

PIVOT行转列,

UNPIVOT列转行

查找相关
COALESCE函数
COALESCE()函数返回列表中的第一个非空值。
语法:COALESCE(val1, val2, …, val_n)
查询示例

W3Schools.com

SELECT COALESCE(NULL, NULL, NULL, ‘W3Schools.com’, NULL, ‘Example.com’);

1

SELECT COALESCE(NULL, 1, 2, ‘W3Schools.com’);
Top
进制相关
BIN函数
BIN()函数返回数字的二进制表示形式,作为字符串值。
语法:BIN(number)
查询示例:
SELECT BIN(8);
SELECT BIN(15);
SELECT BIN(111);

BINARY函数
BINARY函数将值转换为二进制字符串。
此功能相当于使用CAST(值AS BINARY)。
语法:

1 在这里,MySQL执行“HELLO”和“hello”的逐字符比较并返回1(因为在逐个字符的基础上,它们是等效的):

SELECT “HELLO” = “hello”;

0 这里MySQL执行“HELLO”和“hello”的逐字节比较并返回0(因为在逐个字节的基础上,它们不等效):

SELECT BINARY “HELLO” = “hello”;
CONV函数
CONV()函数将一个数字从一个数字基系统转换为另一个,并将结果作为字符串值返回。
注意:如果任何参数为NULL,则此函数返回NULL。
语法:CONV(number, from_base, to_base)
转换示例

从2进制转为10进制

SELECT CONV(1111, 2, 10);

从10进制转为16进制

SELECT CONV(88, 10, 16);

Top
转换相关
CAST函数
CAST()函数将(任何类型的)值转换为指定的数据类型。
语法:CAST(value AS datatype)
查询示例

YYYY-MM-DD 日期

SELECT CAST(“2017-08-29” AS DATE);

YYYY-MM-DD HH:MM:SS 日期时间型

SELECT CAST(“2017-08-29 08:20:33” AS DATETIME);

HH:MM:SS 时间

SELECT CAST(“08:20:33” AS TIME);

字符型

SELECT CAST(150 AS CHAR);

整数

SELECT CAST(5-10 AS SIGNED);

无符号整数

SELECT CAST(12 AS UNSIGNED);

浮点数

SELECT CAST(12.1 AS DECIMAL);

二进制

SELECT CAST(“12” AS BINARY);

CONVERT函数
CONVERT()函数将值转换为指定的数据类型或字符集。
语法:
CONVERT(value, type)
OR:
CONVERT(value USING charset)
转换类型示例

YYYY-MM-DD 日期

SELECT CONVERT(“2017-08-29” , DATE);

YYYY-MM-DD HH:MM:SS 日期时间型

SELECT CONVERT(“2017-08-29 08:20:33” , DATETIME);

HH:MM:SS 时间

SELECT CONVERT(“08:20:33” , TIME);

字符型

SELECT CONVERT(150 , CHAR);

整数

SELECT CONVERT(5-10 , SIGNED);

无符号整数

SELECT CONVERT(12 , UNSIGNED);

浮点数

SELECT CONVERT(12.1 , DECIMAL);

二进制

SELECT CONVERT(“12” , BINARY );

转换字符集示例
SELECT CONVERT(“W3Schools.com” USING utf8);
SELECT CONVERT(“W3Schools.com” USING utf8mb4);
SELECT CONVERT(“W3Schools.com” USING latin1);

Top
判断相关
CASE函数
语法:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
查询示例:
CASE语句通过条件并在满足第一个条件时返回一个值(如IF-THEN-ELSE语句)。 因此,一旦条件成立,它将停止读取并返回结果。
SELECT
CASE
WHEN 5 > 2 THEN “case 1”
WHEN 2 = 5 THEN “case 2”
ELSE “case else”
END
如果条件不满足,则它将返回ELSE子句中的值。
SELECT
CASE
WHEN 2 = 5 THEN “case 2”
ELSE “case else”
END
如果没有ELSE部分且没有条件为真,则返回NULL。
SELECT
CASE
WHEN 2 = 5 THEN “case 2”
END
在排序中使用

SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END);

IF函数
IF()函数在条件为TRUE时返回一个值,如果条件为FALSE则返回另一个值。
语法:IF(condition, value_if_true, value_if_false)
查询示例:

YES

SELECT IF(500<1000, “YES”, “NO”);

NO

SELECT IF(500>1000, “YES”, “NO”);

NO 注:STRCMP(str1, str2)比较两个字符串,如果这两个字符串相等返回0

SELECT IF(STRCMP(“hello”,“bye”) = 0, “YES”, “NO”);
IFNULL函数
如果表达式为NULL,则IFNULL()函数返回指定的值。如果表达式为NOT NULL,则此函数返回表达式。
语法:IFNULL(expression, alt_value)
使用示例:

W3Schools.com

SELECT IFNULL(NULL, “W3Schools.com”);

Hello

SELECT IFNULL(“Hello”, “W3Schools.com”);
ISNULL函数
ISNULL()函数返回1或0,具体取决于表达式是否为NULL。如果expression为NULL,则此函数返回1.否则,返回0。
语法:ISNULL(expression)
使用示例:

1

SELECT ISNULL(NULL);

0

SELECT ISNULL("");

0

SELECT ISNULL(350);

0

SELECT ISNULL(“Hello world!”);

NULLIF函数
NULLIF()函数比较两个表达式,如果它们相等则返回NULL。 否则,返回第一个表达式。
语法:NULLIF(expr1, expr2)
使用示例:

25

SELECT NULLIF(25, “Hello”);

Hello

SELECT NULLIF(“Hello”, “world”);

NULL

SELECT NULLIF(“2017-08-25”, “2017-08-25”);
Top
服务器相关
CONNECTION_ID函数
CONNECTION_ID()函数返回当前连接的唯一连接ID。
语法:CONNECTION_ID()
SELECT CONNECTION_ID();
CURRENT_USER函数
CURRENT_USER()函数返回服务器用于验证当前客户端的MySQL帐户的用户名和主机名。
结果作为UTF8字符集中的字符串返回。
语法:CURRENT_USER()
SELECT CURRENT_USER();
DATABASE函数
DATABASE()函数返回当前数据库的名称。
如果没有当前数据库,则此函数返回NULL或“”。
语法:DATABASE()
SELECT DATABASE();
Top
杂项
LAST_INSERT_ID函数
LAST_INSERT_ID()函数返回已在表中插入或更新的最后一行的AUTO_INCREMENT标识。
语法:LAST_INSERT_ID(expression)
SELECT LAST_INSERT_ID();

分节点部署

子查询排序
添加limit或者group by,对查询结果进行聚合操作

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值