目录
③ str_to_date(str,format) 函数的用法
① substring_index(str,delim,count) 解析
5. CONVERT(expr USING transcoding_name)
值得系统学习的文章:
数据库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参数格式:
常用:
- %Y 年
- %m 月
- %d 日
- %H 小时
- %i 分
- %s 秒
大全:
- %a 缩写星期名
- %b 缩写月名
- %c 月,数值
- %D 带有英文前缀的月中的天
- %d 月的天,数值(00-31)
- %e 月的天,数值(0-31)
- %f 微秒
- %H 小时 (00-23)
- %h 小时 (01-12)
- %I 小时 (01-12)
- %i 分钟,数值(00-59)
- %j 年的天 (001-366)
- %k 小时 (0-23)
- %l 小时 (1-12)
- %M 月名
- %m 月,数值(00-12)
- %p AM 或 PM
- %r 时间,12-小时(hh:mm:ss AM 或 PM)
- %S 秒(00-59)
- %s 秒(00-59)
- %T 时间, 24-小时 (hh:mm:ss)
- %U 周 (00-53) 星期日是一周的第一天
- %u 周 (00-53) 星期一是一周的第一天
- %V 周 (01-53) 星期日是一周的第一天,与 %X 使用
- %v 周 (01-53) 星期一是一周的第一天,与 %x 使用
- %W 星期名
- %w 周的天 (0=星期日, 6=星期六)
- %X 年,其中的星期日是周的第一天,4 位,与 %V 使用
- %x 年,其中的星期一是周的第一天,4 位,与 %v 使用
- %Y 年,4 位
- %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()用法
- SQL的CAST()——转换数据类型_sql cast_小白修炼晋级中的博客-CSDN博客
- SQL中CAST()函数的用法_sql cast用法_三三两的博客-CSDN博客
- Mysql中Cast()函数的用法_Dongguo丶的博客-CSDN博客
5. CONVERT(expr USING transcoding_name)
- 作用:将值转换为指定的数据类型或字符集;
- 几乎同cast()函数
- [Mysql] CONVERT函数_mysql convert_山茶花开时。的博客-CSDN博客
- CONVERT()函数_convert函数_牧马人xxx的博客-CSDN博客