_--- title: mysql
知识点
- mysql 中
+的作用:只有一个作用,就是用作运算符- 两个操作数都为数值型,则进行加法运算
- 一方为字符型,则试图将字符型转换成数值型,如果转换成功,则进行加法运算;如果转换失败,则将字符型转换成数值 0 ,继续进行加法运算
- 只要其中一方为 null, 则结果肯定为 null
- MySQL doesn’t have a built-in Boolean type. Instead, it uses the number zero as FALSE and non-zero values as TRUE.
- To check if a value is between a date range, you should explicitly
castthe value to the DATE type.
SELECT * FROM ordersWHERE requireddate BETWEEN CAST('2003-01-01' AS DATE) AND CAST('2003-01-31' AS DATE);
mysql 索引失效
mysql 重置自增id
select MAX(id) from tableName;
ALTER TABLE tableName AUTO_INCREMENT = max_id_value + 1;
mysql 内置函数
CAST: Cast a value as a certain typeCAST(123456 as CHAR)CONVERT: Cast a value as a certain typeCONVERT(123456, CHAR)JSON_CONTAINS(target, candidate[, path]): Whether JSON document contains specific object at pathHEX(): Hexadecimal representation of decimal or string valueAES_ENCRYPT(str,key_str): Encrypt using AESAES_DECRYPT(crypt_str,key_str): Decrypt using AESGROUP_CONCAT(): Return a concatenated string,GROUP_CONCAT(t2.name ORDER BY t2.project_step SEPARATOR '@@@')
-- 以下 GROUP_CONCAT 查询会得到: A;B;C
USE testdb;
CREATE TABLE t (
v CHAR
);
INSERT INTO t(v) VALUES('A'),('B'),('C'),('B');
SELECT
GROUP_CONCAT(DISTINCT v ORDER BY v ASC SEPARATOR ';')
FROM
t;
SET @j = '{"a": 1, "b": 2, "c": {"d": 4}}';
SET @j2 = '1';
SELECT JSON_CONTAINS(@j, @j2, '$.a');
- 在 MySQL 中,
WITH关键字用于定义CTE(Common Table Expressions,公共表表达式)。CTE 是一个临时的结果集,可以在一个查询中多次引用,通常用于简化复杂查询。CTE 是一个临时的、命名的结果集,只在当前查询中有效。CTE 可以提高查询的可读性,但在性能上可能不如临时表或子查询。 CTE 可以是普通的(非递归)或递归的。 递归 CTE 特别适合处理层次结构数据(如树形结构)
WITH cte_name AS (
-- 子查询
SELECT ...
)
SELECT ...
FROM cte_name;
- 在 MySQL 中,
USING关键字通常用于 JOIN 操作中,用来简化连接条件。它主要用于在两个表之间基于相同列名进行连接时,替代 ON 子句.当两个表连接的列名相同时,可以使用USING来指定连接条件。USING会自动匹配两个表中列名相同的列,并将其作为连接条件
case when 结构
you can use the CASE expression anywhere that allows a valid expression e.g., SELECT, WHERE and ORDER BY clauses.The CASE expression has two forms: simple CASE and searched CASE.
Simple CASE expression:The CASE compares the value with values in the WHEN clauses for equality, you cannot use it with NULL because NULL = NULL returns false.
CASE value
WHEN value1 THEN result1
WHEN value2 THEN result2
…
[ELSE else_result]
END
Searched CASE expression:the CASE evaluates expressions specified in the WHEN clauses. If an expression evaluates to true. CASE returns the corresponding result in the THEN clause. Otherwise, it returns the result specified in the ELSE clause.
CASE
WHEN expression1 THEN result1
WHEN expression2 THEN result2
…
[ELSE else_result]
END
