MySQL 查询语句大全
在数据库管理系统中,SELECT
语句无疑是进行数据检索和处理的核心,MySQL 提供了丰富的 SELECT
语句,使得开发者能够灵活地从数据库中获取所需的数据,以下是一些常见的 SELECT
语句及其用法示例,涵盖了基本的查询、聚合、连接等高级功能。
基本 SELECT 语句
语法:
SELECT column1, column2, ... FROM table_name;
column1
,column2
, ... 是要选择的列名。table_name
是你要查询的表名。
示例:
SELECT id, name FROM users;
这个查询将返回所有用户的 ID 和名字。
使用 WHERE 子句
语法:
SELECT column1, column2, ... FROM table_name WHERE condition;
condition
是用于过滤结果的条件表达式。
示例:
SELECT id, name FROM users WHERE age > 30;
这个查询将返回年龄大于 30 的用户信息。
使用 JOIN 子句
语法:
SELECT column1, column2, ... FROM table1 JOIN table2 ON table1.common_column = table2.common_column;
common_column
是两个表之间的共同列。- 表名(如
table1
)可以使用别名来简化 SQL 语句。
示例:
SELECT u.id, u.name, c.title FROM users AS u JOIN categories AS c ON u.category_id = c.id;
这个查询将返回用户的 ID、姓名以及他们的分类名称。
使用 GROUP BY 子句
语法:
SELECT column1, column2, ... FROM table_name GROUP BY column1, column2;
column1
,column2
是需要分组的列。- 结果会基于这些列生成汇总行。
示例:
SELECT category_id, COUNT(*) as count FROM products GROUP BY category_id;
这个查询将返回每个类别的产品数量。
使用 HAVING 子句
语法:
SELECT column1, column2, ... FROM table_name GROUP BY column1, column2 HAVING condition;
condition
是一个子查询或条件表达式,用来进一步筛选分组后的结果。
示例:
SELECT product_id, SUM(price) as total_price FROM orders GROUP BY product_id HAVING total_price > 500;
这个查询将返回总价超过 500 元的商品列表。
使用 LIMIT 子句
语法:
SELECT column1, column2, ... FROM table_name LIMIT number_of_rows OFFSET starting_row_number;
number_of_rows
是你想要显示的记录数。starting_row_number
是从哪一行开始展示。
示例:
SELECT * FROM customers ORDER BY last_name LIMIT 10 OFFSET 5;
这个查询将按照姓氏排序,并限制前 10 条记录,跳过第 6 条记录。
使用 DISTINCT 子句
语法:
SELECT DISTINCT column1, column2, ... FROM table_name;
DISTINCT
关键字确保返回的结果集不包含重复值。
示例:
SELECT DISTINCT user_id, email FROM emails;
这个查询将返回唯一的电子邮件地址。
使用 UNION 子句
语法:
SELECT column1, column2, ... FROM table1 UNION SELECT column1, column2, ... FROM table2;
- 这种方式允许你在不同的表格之间合并查询。
示例:
SELECT first_name, last_name FROM employees; UNION SELECT first_name, last_name FROM departments;
这个查询将返回两个表格中的所有员工名字。
使用 SUBSTRING_INDEX 函数
语法:
SUBSTRING_INDEX(str, delimiter, occurrence)
str
是原始字符串。delimiter
是分割符。occurrence
是要提取的子串的索引位置。
示例:
SELECT SUBSTRING_INDEX('Hello, world!', ',', 2);
这个查询将返回 "Hello"。
使用 LIKE 操作符
语法:
SELECT column1, column2, ... FROM table_name WHERE column LIKE pattern;
pattern
包含通配符,如 表示任意字符序列。
示例:
SELECT * FROM books WHERE title LIKE '%Python%';
这个查询将返回所有标题中包含“Python”的书籍。
使用 IN 操作符
语法:
SELECT column1, column2, ... FROM table_name WHERE column IN (value1, value2, ..., valueN);
value1
,value2
, ... 是要匹配的值。
示例:
SELECT * FROM fruits WHERE color IN ('red', 'green', 'yellow');
这个查询将返回红色、绿色和黄色水果。
使用 NOT IN 操作符
语法:
SELECT column1, column2, ... FROM table_name WHERE column NOT IN (value1, value2, ..., valueN);
- 同样,
value1
,value2
, ... 是要排除的值。
示例:
SELECT * FROM fruits WHERE color NOT IN ('red', 'green', 'yellow');
这个查询将返回除了红色、绿色和黄色之外的所有水果。
通过以上各种 SELECT
语句的组合,你可以实现复杂而强大的数据库查询,熟练掌握这些工具可以帮助你更有效地管理和分析数据库中的数据。