MySQL基础操作(2)
目录
1. CONCAT()
2. =
3. != 或 <>
4. IS NULL
5. IS NOT NULL
6. BETWEEN ... AND ...
7. LIKE
8. ORDER BY
9. LIMIT
10. LENGTH()
11. SUBSTR()
12. UPPER()
13. LOWER()
14. CONCAT_WS()
15. REPLACE()
16. INSTR()
17. TRIM()
18. IFNULL()
19. SYSDATE()
20. FLOOR()
21. CEIL()
22. ROUND()
23. ABS()
24. LOG()
25. JOIN
26. HAVING
1. CONCAT()
-
作用:将多个字符串连接成一个字符串。
-
语法:
CONCAT(str1, str2, ...)
-
示例:
SELECT CONCAT('Hello', ' ', 'World') AS result; -- 输出:Hello World
-
拓展:
-
CONCAT()
可以连接多个字段,常用于生成组合字段。 -
如果其中一个参数为
NULL
,结果将为NULL
。 -
示例:
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users;
-
2. =
-
作用:用于比较两个值是否相等。
-
语法:
column = value
-
示例:
SELECT * FROM users WHERE age = 25;
-
拓展:
-
=
也可以用于比较字符串、日期等类型。 -
示例:
SELECT * FROM users WHERE created_at = '2023-10-01';
-
3. !=
或 <>
-
作用:用于比较两个值是否不相等。
-
语法:
column != value
或column <> value
-
示例:
SELECT * FROM users WHERE age != 25;
-
拓展:
-
!=
和<>
是等价的,选择其中一个即可。 -
示例:
SELECT * FROM users WHERE email <> 'admin@example.com';
-
4. IS NULL
-
作用:检查某个字段是否为
NULL
。 -
语法:
column IS NULL
-
示例:
SELECT * FROM users WHERE email IS NULL;
-
拓展:
-
IS NULL
不能用=
代替,因为NULL
不等于任何值。 -
示例:
SELECT * FROM users WHERE phone IS NULL;
-
5. IS NOT NULL
-
作用:检查某个字段是否不为
NULL
。 -
语法:
column IS NOT NULL
-
示例:
SELECT * FROM users WHERE email IS NOT NULL;
-
拓展:
-
常用于过滤非空数据。
-
示例:
SELECT * FROM users WHERE phone IS NOT NULL;
-
6. BETWEEN ... AND ...
-
作用:检查某个值是否在指定的范围内。
-
语法:
column BETWEEN value1 AND value2
-
示例:
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
-
拓展:
-
BETWEEN
包含边界值。 -
示例:
SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31';
-
7. LIKE
-
作用:用于模糊匹配字符串。
-
语法:
column LIKE pattern
-
示例:
SELECT * FROM users WHERE name LIKE 'J%';
-
拓展:
-
%
表示任意字符序列,_
表示单个字符。 -
示例:
SELECT * FROM users WHERE name LIKE 'J_n';
-
8. ORDER BY
-
作用:对查询结果进行排序。
-
语法:
ORDER BY column ASC|DESC
-
示例:
SELECT * FROM users ORDER BY age DESC;
-
拓展:
-
可以按多个字段排序。
-
示例:
SELECT * FROM users ORDER BY age DESC, name ASC;
-
9. LIMIT
-
作用:限制查询结果的行数。
-
语法:
LIMIT n
或LIMIT offset, n
-
示例:
SELECT * FROM users LIMIT 10;
-
拓展:
-
LIMIT
常用于分页查询。 -
示例:
SELECT * FROM users LIMIT 10 OFFSET 20;
-
10. LENGTH()
-
作用:返回字符串的长度。
-
语法:
LENGTH(str)
-
示例:
SELECT LENGTH('Hello World') AS length; -- 输出:11
-
拓展:
-
常用于统计字符串长度。
-
示例:
SELECT name, LENGTH(name) AS name_length FROM users;
-
11. SUBSTR()
-
作用:截取字符串的一部分。
-
语法:
SUBSTR(str, start, length)
-
示例:
SELECT SUBSTR('Hello World', 7, 5) AS result; -- 输出:World
-
拓展:
-
start
从 1 开始计数。 -
示例:
SELECT SUBSTR(email, 1, INSTR(email, '@') - 1) AS username FROM users;
-
12. UPPER()
-
作用:将字符串转换为大写。
-
语法:
UPPER(str)
-
示例:
SELECT UPPER('hello') AS result; -- 输出:HELLO
-
拓展:
-
常用于数据标准化。
-
示例:
SELECT UPPER(name) AS upper_name FROM users;
-
13. LOWER()
-
作用:将字符串转换为小写。
-
语法:
LOWER(str)
-
示例:
SELECT LOWER('HELLO') AS result; -- 输出:hello
-
拓展:
-
常用于数据标准化。
-
示例:
SELECT LOWER(name) AS lower_name FROM users;
-
14. CONCAT_WS()
-
作用:使用指定的分隔符连接多个字符串。
-
语法:
CONCAT_WS(separator, str1, str2, ...)
-
示例:
SELECT CONCAT_WS('-', '2023', '10', '01') AS result; -- 输出:2023-10-01
-
拓展:
-
如果分隔符为
NULL
,结果将为NULL
。 -
示例:
SELECT CONCAT_WS(',', 'Apple', 'Banana', 'Cherry') AS result;
-
15. REPLACE()
-
作用:替换字符串中的指定内容。
-
语法:
REPLACE(str, old_str, new_str)
-
示例:
SELECT REPLACE('Hello World', 'World', 'MySQL') AS result; -- 输出:Hello MySQL
-
拓展:
-
常用于数据清洗。
-
示例:
SELECT REPLACE(email, '@example.com', '@newdomain.com') AS new_email FROM users;
-
16. INSTR()
-
作用:返回子字符串在字符串中的位置。
-
语法:
INSTR(str, substr)
-
示例:
SELECT INSTR('Hello World', 'World') AS position; -- 输出:7
-
拓展:
-
如果子字符串不存在,返回 0。
-
示例:
SELECT INSTR(email, '@') AS at_position FROM users;
-
17. TRIM()
-
作用:去除字符串两端的空格。
-
语法:
TRIM(str)
-
示例:
SELECT TRIM(' Hello World ') AS result; -- 输出:Hello World
-
拓展:
-
可以去除指定字符。
-
示例:
SELECT TRIM('x' FROM 'xxxHello Worldxxx') AS result;
-
18. IFNULL()
-
作用:如果第一个参数为
NULL
,则返回第二个参数。 -
语法:
IFNULL(expr1, expr2)
-
示例:
SELECT IFNULL(NULL, 'Default') AS result; -- 输出:Default
-
拓展:
-
常用于处理空值。
-
示例:
SELECT IFNULL(phone, 'No Phone') AS contact FROM users;
-
19. SYSDATE()
-
作用:返回当前日期和时间。
-
语法:
SYSDATE()
-
示例:
SELECT SYSDATE() AS current_time; -- 输出:2023-10-01 12:34:56
-
拓展:
-
常用于记录时间戳。
-
示例:
INSERT INTO logs (message, created_at) VALUES ('New Log', SYSDATE());
-
20. FLOOR()
-
作用:返回小于或等于指定值的最大整数。
-
语法:
FLOOR(number)
-
示例:
SELECT FLOOR(3.7) AS result; -- 输出:3
-
拓展:
-
常用于向下取整。
-
示例:
SELECT FLOOR(price) AS floor_price FROM products;
-
21. CEIL()
-
作用:返回大于或等于指定值的最小整数。
-
语法:
CEIL(number)
-
示例:
SELECT CEIL(3.2) AS result; -- 输出:4
-
拓展:
-
常用于向上取整。
-
示例:
SELECT CEIL(price) AS ceil_price FROM products;
-
22. ROUND()
-
作用:对数字进行四舍五入。
-
语法:
ROUND(number, decimals)
-
示例:
SELECT ROUND(3.65, 1) AS result; -- 输出:3.7
-
拓展:
-
常用于格式化数字。
-
示例:
SELECT ROUND(price, 2) AS rounded_price FROM products;
-
23. ABS()
-
作用:返回数字的绝对值。
-
语法:
ABS(number)
-
示例:
SELECT ABS(-10) AS result; -- 输出:10
-
拓展:
-
常用于计算距离。
-
示例:
SELECT ABS(current_value - target_value) AS difference FROM metrics;
-
24. LOG()
-
作用:返回数字的自然对数。
-
语法:
LOG(number)
-
示例:
SELECT LOG(10) AS result; -- 输出:2.302585
-
拓展:
-
常用于数学计算。
-
示例:
SELECT LOG(price) AS log_price FROM products;
-
25. JOIN
-
作用:用于连接两个或多个表。
-
语法:
JOIN table ON condition
-
示例:
SELECT users.name, orders.order_id FROM users JOIN orders ON users.id = orders.user_id;
-
拓展:
-
支持
INNER JOIN
、LEFT JOIN
、RIGHT JOIN
和FULL JOIN
。 -
示例:
SELECT users.name, orders.order_id FROM users LEFT JOIN orders ON users.id = orders.user_id;
-
26. HAVING
-
作用:用于对分组后的数据进行过滤。
-
语法:
HAVING condition
-
示例:
SELECT user_id, COUNT(*) AS order_count FROM orders GROUP BY user_id HAVING order_count > 5;
-
拓展:
-
HAVING
常用于聚合函数后的过滤。 -
示例:
SELECT category, AVG(price) AS avg_price FROM products GROUP BY category HAVING avg_price > 50;
-