mysql中高阶玩法系列(基础知识储备)


先定义一张表,在之后的讲解中的所有例子,都是基于这张表做的演示,那么就定义一张最常见的用户表吧。

CREATE TABLE `user` (
    `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(45) COLLATE UTF8MB4_UNICODE_CI NOT NULL,
    `pwd` VARCHAR(255) COLLATE UTF8MB4_UNICODE_CI NOT NULL,
    `created_at` INT(8) UNSIGNED NOT NULL,
    PRIMARY KEY (`id`),
    KEY `idx_created_at` (`created_at`)
)  ENGINE=INNODB DEFAULT CHARSET=UTF8MB4 COLLATE = UTF8MB4_UNICODE_CI;

插入几条数据,方便之后快乐的玩耍

INSERT INTO `user` (`id`, `name`, `pwd`, `created_at`) VALUES ('1', '牛A', '555', '1559318400');
INSERT INTO `user` (`id`, `name`, `pwd`, `created_at`) VALUES ('2', '牛B', '555', '1559318400');
INSERT INTO `user` (`id`, `name`, `pwd`, `created_at`) VALUES ('3', '牛C', '555', '1573441871');
INSERT INTO `user` (`id`, `name`, `pwd`, `created_at`) VALUES ('4', '牛X', '555', '1558329240');

在这里插入图片描述
在这里插入图片描述


语句

IF 语句

IF语句根据表达式的某个条件或值结果来执行一组SQL语句。表达式可以返回TRUE,FALSE或NULL,这三个值之一。

  • IF语句的语法:
IF expression THEN 
   statements;
END IF;

IF语句的执行过程:
在这里插入图片描述


  • IF ELSE语句的语法:
IF expression THEN
   statements;
ELSE
   else-statements;
END IF;

IF ELSE语句的执行过程:
在这里插入图片描述


  • IF ELSEIF ELSE语句的语法:
IF expression THEN
   statements;
ELSEIF elseif-expression THEN
   elseif-statements;
...
ELSE
   else-statements;
END IF;

IF ELSEIF ELSE语句的执行过程:
在这里插入图片描述


CASE WHEN 语句

CASE WHEN语句的语法:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result
END;

示例:

扫描二维码关注公众号,回复: 9255078 查看本文章
# 简单的Case
SELECT *, CASE name 
         WHEN '牛A' THEN '大毛' 
         WHEN '牛B' THEN '二毛' 
         WHEN '牛C' THEN '三毛'
ELSE '小明' END AS nickname FROM user;

执行结果图:
在这里插入图片描述

# Case的搜索
SELECT *, CASE  
         WHEN name = '牛A' THEN '大毛' 
         WHEN id = 2 THEN '二毛' 
         WHEN created_at >= 1573441871 THEN '三毛'
ELSE '小明' END AS nickname FROM user;

执行结果图:
在这里插入图片描述

可以对比下两种Case的用法,虽然执行结果都一样,但第二种的用法会更多样,所以我们一般都会用第二种去实现工作中的需要,毕竟第二种适合复杂的条件判断


内置函数

IF 函数

IF()语法:

IF(expr,v1,v2)				# 如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2

示例:

SELECT IF(1 > 0,'正确','错误')

在这里插入图片描述

IFNULL 函数

一般用来解决查询出的结果是空值的判空问题

IFNULL()语法:

IFNULL(v1,v2)				# 如果 v1 的值不为 NULL,则返回结果 v1,否则返回 v2。

示例:

SELECT IFNULL(null,'Hello Word');
SELECT IFNULL(1/0,'错误');

在这里插入图片描述

ISNULL 函数

ISNULL()语法:

ISNULL(expr)				# 如果expr 为null,那么返回值为 1,否则返回值为 0

示例:

SELECT ISNULL(1 + 1); 
SELECT ISNULL(1 / 0);

在这里插入图片描述

日期类型格式化函数

  • date_format()日期转字符串
select date_format(now(), '%Y-%m-%d'); 
# 结果:2019-06-1

  • str_to_date()字符串转日期
select str_to_date('2019-06-01', '%Y-%m-%d %H');
# 结果:2019-06-01 00:00:00

  • unix_timestamp()字符串转时间戳
select unix_timestamp('2019-06-01');
# 结果:1559318400

  • from_unixtime()时间戳转日期
select from_unixtime(1559318400,'%Y-%c');
# 结果:2019-6

附表
在这里插入图片描述



参考

https://blog.csdn.net/mengzuchao/article/details/80686181
https://www.cnblogs.com/smileFL/p/8473245.html

发布了22 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42403866/article/details/96908398