- 运算符
算术运算符(+,-,/,%,DIV,MOD)
比较运算符(=,>,<,>=,<=,!=,BETWEEN,NOT BETWEEN,IN,NOT IN,<=>,like,IS NULL,IS NOT NULL)
逻辑运算符(NOT,AND,OR,XOR)
位运算符(&,|,^,<<,>>,!)
CASE…WHEN…THEN…ELSE…END - 字符串函数
ASCII(s) ,CHAR_LENGTH(s),CHARACTER_LENGTH(s),CONCAT(a,b,c),CONCAT_WS(x,a,b,c),FIND_IN_SET(x,y),FORMAT(),INSERT(s1,x,len,s2),LOCATE(s1,s),LCASE(),LEFT(),LOWER(),LPAD(s1,len,s2) ,LTRIM(s) ,MID(s,n,len),POSITION(s1 IN s) ,REPEAT(s,n) ,REPLACE(s,s1,s2) ,REVERSE(s),RIGHT(s,n),RPAD(s1,len,s2) ,RTRIM(s) ,SPACE(n) ,STRCMP(s1,s2),SUBSTR(s, start, length) ,UCASE(s), - 日期函数
ADDDATE(d,n),ADDTIME(t,n),DATE_ADD(d,INTERVAL expr type),DATE_FORMAT(d,f),DATE_SUB(date,INTERVAL expr type) ,IF(expr,v1,v2) , - 防止sql注入
mysqli_real_escape_string(),addcslashes() - 临时表
CREATE TEMPORARY TABLE SalesSummary (
-> product_name VARCHAR(50) NOT NULL
-> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
-> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
-> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
- 定时器
事件调度器有时也可以称为临时触发器(temporal triggers),因为事件调度器是基于特定时间周期触发来执行某些任务,而触发器(Triggers)是基于某个表所产生的事件触发的,区别也就在这里。
在使用这个功能之前必须确保event_scheduler已开启,可执行SET GLOBAL event_scheduler = 1;
CREATE EVENT [IFNOT EXISTS] event_name
ONSCHEDULE schedule
[ONCOMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement
schedule:
AT TIMESTAMP [+ INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
INTERVAL:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
索引注意事项
- like 模糊查询遵守前缀原则
- 查询的列不能使用函数或运算
- 对于唯一性很差的字段不适合建索引,如性别
- 需要排序的字段可以建立索引
mysql优化 - 开启慢日志查询记录,让系统运行一段时间,使用profile或explain分析sql语句
- 开启缓存。sql语句不能出现不确定信息,sql语句大小写必须一致
- 读写分离。使用mysql的bin日志完成数据的一致性问题
分页查找 - 由于主键id是可以快速查找,可以先查出满足条件id
本文详细解读了MySQL中的运算符、字符串和日期函数,提供防止SQL注入的方法,并讲解了索引使用技巧,包括LIKE查询原则、定时器与事件调度。同时,涵盖了如何优化SQL语句,提升数据库性能,以及创建临时表的最佳实践。
5万+

被折叠的 条评论
为什么被折叠?



