目录

值得系统学习的文章:

一、mysql批量造数据

二、mysql常用数据类型

三、mysql常用函数

1. 日期函数

① date_add() 和 addtime() 

② date_sub()用法 & subdate()用法

③ str_to_date(str,format) 函数的用法

2. 字符串截取

① substring_index(str,delim,count) 解析

②SUBSTRING截取字符串函数解析

③ SUBSTR 截取字符串

3. 拼接字符串

CONCAT()

CONCAT_WS()

4. CAST()用法

5. CONVERT(expr USING transcoding_name)

6. 大小写转化


值得系统学习的文章:

关于数据库SQL优化_你才是臭弟弟的博客-CSDN博客

数据库MySQL详解_mysql数据库_砖业洋__的博客-CSDN博客

【MySQL】数据库基础 ①_你才是臭弟弟的博客-CSDN博客

【MySQL】数据库基础 ②_你才是臭弟弟的博客-CSDN博客

【MySQL】数据库基础 ③_你才是臭弟弟的博客-CSDN博客

MySQL数据库常见面试题总结(超详细)_mysql面试题_Java大数据运动猿的博客-CSDN博客

110道 MySQL面试题及答案 (持续更新)_关于mysql 的面试题_普通网友的博客-CSDN博客 

MySQL 常见面试题汇总_mysql场景面试题_石硕页的博客-CSDN博客

经典 55道 MySQL面试题及答案_Firstlucky77的博客-CSDN博客

一、mysql批量造数据

-- 循环插入10W条,耗时一分钟多
drop PROCEDURE test_insert; -- 如果报错“PROCEDURE test_insert already exists”时,需要执行这一行

-- 创建一个存储过程,并开始插入数据
CREATE PROCEDURE test_insert()
BEGIN
    declare i int;
    set i = 1;
    while i <= 100000
        do

            INSERT INTO `student_info`(id, stu_name, sex, birthday_date, phone_number, family_address, created_time)
            VALUES (null, i, '男', str_to_date('2023/03/02', '%Y/%m/%d'), '15533365984', '上海市', sysdate());

            set i = i + 1;

        end while;
END;
call test_insert();

二、mysql常用数据类型

日期时间类

字符串类型

三、mysql常用函数

1. 日期函数

① date_add() 和 addtime() 

  • 都表示对日期时间进行“加”操作。

② date_sub()用法 & subdate()用法

  • 都表示对日期时间进行“减”操作;
  • 这两个函数和①的两个函数可以相互转化,即第二个参数为负数正数时可以转化;
  • 更多举例请参考dataGrip,鼠标挪上去就会展示示例及解释。
-- TODO  date_add()用法 & addtime()用法
SELECT date_add('1997-12-31 23:59:59', INTERVAL 1 DAY); -- 1998-01-01 23:59:59
SELECT date_add('1997-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND); -- 1998-01-01 00:01:00
-- adddate(expr:date, days:int) 第二个参数默认是“天”
SELECT adddate('1998-01-02', 31); -- 1998-01-02
SELECT adddate('1998-01-02', -1); -- 1998-01-01
SELECT adddate('1998-01-02', interval 31 day); -- 1998-02-02
-- adds expr2 to expr1 and returns the result. expr1 is a time or datetime expression, and expr2 is a time expression.
SELECT addtime('1997-12-31 23:59:59.999999', '1 1:1:1.000002'); -- 1998-01-02 01:01:01.000001
SELECT addtime('01:00:00.999999', '02:00:00.999998'); -- 03:00:01.999997



-- TODO  date_sub()用法 & subdate()用法
SELECT date_sub('1998-01-02', INTERVAL 31 DAY); -- 1997-12-02
SELECT date_sub('1998-01-01 00:00:00', INTERVAL '1 1:1:1' DAY_SECOND); -- 1997-12-30 22:58:59
SELECT subdate('1998-01-02', INTERVAL 31 DAY); -- 1997-12-02
-- The second form allows the use of an integer value for days. In such cases,
-- it is interpreted as the number of days to be subtracted from the date or datetime expression expr.
SELECT subdate('1998-01-02 12:00:00', 31); -- 1997-12-02 12:00:00
-- 减少10分钟
select subdate('1998-01-02 12:00:00', interval 10 hour_minute ); -- 1998-01-02 11:50:00
-- 减少10秒
select subdate('1998-01-02 12:00:00', interval 10 hour_second ); -- 1998-01-02 11:59:50
-- 减少10小时
select subdate('1998-01-02 12:00:00', interval 10 hour ); -- 1998-01-02 02:00:00

③ str_to_date(str,format) 函数的用法

str_to_date函数将str转化为日期型的数据,format表示转化后的格式。

format参数格式:

常用:

  1. %Y  年
  2. %m  月
  3. %d  日
  4. %H  小时
  5. %i  分
  6. %s  秒

大全:

  1. %a 缩写星期名
  2. %b 缩写月名
  3. %c 月,数值
  4. %D 带有英文前缀的月中的天
  5. %d 月的天,数值(00-31)
  6. %e 月的天,数值(0-31)
  7. %f 微秒
  8. %H 小时 (00-23)
  9. %h 小时 (01-12)
  10. %I 小时 (01-12)
  11. %i 分钟,数值(00-59)
  12. %j 年的天 (001-366)
  13. %k 小时 (0-23)
  14. %l 小时 (1-12)
  15. %M 月名
  16. %m 月,数值(00-12)
  17. %p AM 或 PM
  18. %r 时间,12-小时(hh:mm:ss AM 或 PM)
  19. %S 秒(00-59)
  20. %s 秒(00-59)
  21. %T 时间, 24-小时 (hh:mm:ss)
  22. %U 周 (00-53) 星期日是一周的第一天
  23. %u 周 (00-53) 星期一是一周的第一天
  24. %V 周 (01-53) 星期日是一周的第一天,与 %X 使用
  25. %v 周 (01-53) 星期一是一周的第一天,与 %x 使用
  26. %W 星期名
  27. %w 周的天 (0=星期日, 6=星期六)
  28. %X 年,其中的星期日是周的第一天,4 位,与 %V 使用
  29. %x 年,其中的星期一是周的第一天,4 位,与 %v 使用
  30. %Y 年,4 位
  31. %y 年,2 位

实例:

select str_to_date('2023-03-02', '%Y-%m-%d'); -- 2023-03-02
select str_to_date('2023/03/02', '%Y/%m/%d'); -- 2023-03-02

注意事项:

年月日的位置可以调动,但是一定要注意format格式的大小写!!!

2. 字符串截取

① substring_index(str,delim,count) 解析

  • str:要处理的字符串
  • delim:分隔符
  • count:计数

SQL的substring_index()用法——MySQL字符串截取_小白修炼晋级中的博客-CSDN博客

SELECT substring_index('www.mysql.com', '.', 2); -- www.mysql
SELECT substring_index('www.mysql.com', '.', -2); -- mysql.com
select substring_index(substring_index('www.mysql.com', '.', 2), '.', -1); -- mysql
-- 截取日期中的年份
select substring_index(now(),'-', 1); -- 2023
-- 截取日期中的天数
select substring_index('1998-01-02','-', -1); -- 02

②SUBSTRING截取字符串函数解析


-- 两个参数时,第2个参数表示从第几位开始截取(负数表示从倒数第几位开始截取)
SELECT SUBSTRING('Quadratically',5); -- ratically
SELECT SUBSTRING('Sakila', -3); -- ila
-- 没有逗号,带from的,效果同上
SELECT SUBSTRING('Quadratically' FROM 5); -- ratically
SELECT SUBSTRING('Quadratically' FROM -5); -- cally

-- 三个参数时,第2个参数表示从第几位开始截取(负数表示从倒数第几位开始截取),第3个参数表示截取几位
SELECT SUBSTRING('Quadratically',5,6); -- ratica
SELECT SUBSTRING('Sakila', -5, 3); -- aki
SELECT SUBSTRING('Sakila' FROM -4 FOR 2); -- ki

③ SUBSTR 截取字符串

  • SUBSTR 与 SUBSTRING 含义用法完全一样

3. 拼接字符串

  • CONCAT()

  • CONCAT_WS()

SELECT CONCAT('My', 'S', 'QL'); -- MySQL
-- CONCAT() returns NULL if any argument is NULL.
SELECT CONCAT('My', NULL, 'QL'); -- NULL


SELECT CONCAT_WS(',','First name','Second name','Last Name'); -- First name,Second name,Last Name
SELECT CONCAT_WS('','First name','Second name','Last Name'); -- First nameSecond nameLast Name
-- CONCAT_WS() does not skip empty strings. However, it does skip any NULL values after the separator argument.
SELECT CONCAT_WS(',','First name',NULL,'Last Name'); -- First name,Last Name

4. CAST()用法

5. CONVERT(expr USING transcoding_name)

6. 大小写转化

06-26 05:33