让我们详细探讨MySQL中的基本查询操作,包括各种子句和查询技巧。
SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column1, column2, ...
LIMIT offset, count;
SELECT
用于指定要查询的列。FROM
指定查询的表名。WHERE
用于设置查询条件。ORDER BY
用于对查询结果进行排序。LIMIT
用于限制查询结果的数量。DISTINCT
关键字用于返回唯一不同的值。
SELECT DISTINCT column1, column2, ...
FROM table_name
WHERE condition;
指定列时,可以列出需要查询的列名,去除重复列通常使用 DISTINCT
。
SELECT DISTINCT column1, column2
FROM table_name;
使用 AS
关键字给列设置别名。
SELECT column1 AS alias1, column2 AS alias2
FROM table_name;
SELECT *
FROM table_name
WHERE column1 = 'value';
显示效果:返回 table_name
表中 column1
列值为 ‘value’ 的所有行。
SELECT *
FROM table_name
WHERE column1 BETWEEN value1 AND value2;
显示效果:返回 table_name
表中 column1
列值在 value1
和 value2
范围内的所有行。
SELECT *
FROM table_name
WHERE column1 LIKE '%value%';
显示效果:返回 table_name
表中 column1
列值包含 ‘value’ 字符串的所有行。
SELECT *
FROM table_name
WHERE column1 REGEXP '^[a-zA-Z]+$';
显示效果:返回 table_name
表中 column1
列值符合正则表达式(只包含字母)的所有行。
SELECT *
FROM table_name
WHERE column1 IS NULL;
显示效果:返回 table_name
表中 column1
列为 NULL 的所有行。
SELECT *
FROM table_name
ORDER BY column1 ASC, column2 DESC;
显示效果:返回 table_name
表中所有行,按 column1
升序和 column2
降序排序。
SELECT *
FROM table_name
LIMIT 10;
显示效果:返回 table_name
表中的前10行数据。
SELECT COUNT(*), AVG(column1), MAX(column2)
FROM table_name;
显示效果:返回 table_name
表的记录数、column1
列的平均值和 column2
列的最大值。
SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1;
显示效果:返回 table_name
表中 column1
列的每个不同值及其对应的行数。
SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1
HAVING COUNT(*) > 1;
显示效果:返回 table_name
表中 column1
列的每个值,且该值对应的行数大于1。
SELECT a.*, b.*
FROM table_a a
JOIN table_b b ON a.id = b.a_id;
显示效果:返回 table_a
和 table_b
表中 id
相等的行的合并结果。
SELECT a.*, b.*
FROM table_name a
JOIN table_name b ON a.id = b.parent_id;
显示效果:返回 table_name
表中 id
和 parent_id
相等的行的合并结果。
SELECT a.*, b.*
FROM table_a a
LEFT JOIN table_b b ON a.id <> b.a_id;
显示效果:返回 table_a
表中的所有行,以及 table_b
表中 id
不等于 a_id
的行。
SELECT a.*, b.*
FROM table_a a
LEFT JOIN table_b b ON a.id = b.a_id;
显示效果:返回 table_a
表中的所有行,以及 table_b
表中 id
等于 a_id
的行。
SELECT a.*, b.*
FROM table_a a
RIGHT JOIN table_b b ON a.id = b.a_id;
显示效果:返回 table_b
表中的所有行,以及 table_a
表中 id
等于 a_id
的行。
SELECT *
FROM table_name
WHERE column1 = (SELECT MAX(column1) FROM table_name);
显示效果:返回 table_name
表中 column1
列值等于该列最大值的所有行。
SELECT *
FROM table_name
WHERE column1 IN (SELECT column1 FROM another_table);
显示效果:返回 table_name
表中 column1
列值在 another_table
表的 column1
列中的所有行。
SELECT column1 FROM table1
UNION
SELECT column1 FROM table2;
显示效果:返回 table1
和 table2
表中 column1
列的所有不同值。
SELECT column1 FROM table1
UNION ALL
SELECT column1 FROM table2;
显示效果:返回 table1
和 table2
表中 column1
列的所有值,包括重复值。
WHERE
子句时,确保条件表达式正确。ORDER BY
时,可以指定多个列进行排序。LIMIT
时,可以指定偏移量和数量。GROUP BY
和 HAVING
时,确保聚合函数和条件正确。