MySql常用查询语句
MySql是一种开源的关系型数据库管理系统,广泛应用于各种web开发项目和服务器端应用程序。在实际的开发中,我们经常需要使用各种查询语句来查询数据、更新数据、删除数据等等。本文将整理出常用的23种MySql查询语句,并给出详细的解释和示例。以下是23种常用MySql查询语句:
1. SELECT 语句
SELECT语句是MySql查询语句中最基础也是最常用的一种语句,它可以用来查询表中的数据。SELECT语句通常有以下形式:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
其中column1, column2,...表示要查询的列名,table_name表示要查询的表名,WHERE condition表示查询条件。例如,我们要查询students表中所有学生的姓名和年龄,可以使用以下查询语句:
SELECT name, age
FROM students;
SELECT语句常用的一些限定符:
DISTINCT:用来去除重复的记录。
ORDER BY:用来按指定的列对结果集进行排序。
GROUP BY:用来对结果集按照指定的列进行分组。
HAVING:用来筛选分组后的结果。
LIMIT:用来限制查询结果集的数量。
下面给出一些示例:
-- 去除重复的记录
SELECT DISTINCT name
FROM students;
-- 按年龄升序排序
SELECT name, age
FROM students
ORDER BY age ASC;
-- 按性别分组并计算每组的平均年龄
SELECT gender, AVG(age)
FROM students
GROUP BY gender;
-- 按性别分组并筛选平均年龄大于20的组
SELECT gender, AVG(age)
FROM students
GROUP BY gender
HAVING AVG(age) > 20;
-- 从第0条记录开始查询3条记录
SELECT *
FROM students
LIMIT 0, 3;
2. UPDATE 语句
UPDATE语句用于更新表中的数据,通常的形式为:
UPDATE table_name
SET column1=value1, column2=value2, ...
WHERE condition;
其中table_name表示要更新的表名,column1=value1, column2=value2表示要更新的列和对应的值,WHERE condition表示要更新的记录的条件。例如,我们要将students表中id为1的学生的年龄修改为22岁,可以使用以下查询语句:
UPDATE students
SET age=22
WHERE id=1;
3. DELETE 语句
DELETE语句用于删除表中的数据,通常的形式为:
DELETE FROM table_name
WHERE condition;
其中table_name表示要删除的表名,WHERE condition表示要删除的记录的条件。例如,我们要删除students表中id为1的记录,可以使用以下查询语句:
DELETE FROM students
WHERE id=1;
4. INSERT INTO 语句
INSERT INTO语句用于向表中插入数据,通常的形式为:
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
其中table_name表示要插入数据的表名,column1, column2,...表示要插入的列,value1, value2,...表示要插入的值。例如,我们要向students表中插入一条新的记录,可以使用以下查询语句:
INSERT INTO students (name, gender, age)
VALUES ('张三', '男', 20);
5. LIKE 语句
LIKE语句用于在WHERE条件中进行模糊查询,它支持的通配符有:
%:匹配任意多个字符。
_:匹配一个单一的字符。
例如,我们要查询students表中所有名字里包含“李”的学生,可以使用以下查询语句:
SELECT *
FROM students
WHERE name LIKE '%李%';
6. IN 语句
IN语句用于在WHERE条件中指定一组值,通常的形式为:
SELECT *
FROM students
WHERE id IN (1, 3, 5);
以上语句查询students表中id为1,3或5的学生。
7. BETWEEN 语句
BETWEEN语句用于在WHERE条件中指定一个范围,通常的形式为:
SELECT *
FROM students
WHERE age BETWEEN 18 AND 20;
以上语句查询students表中年龄在18到20岁之间的学生。
8. EXISTS 语句
EXISTS语句用于在WHERE条件中检查一个子查询是否返回了结果,通常的形式为:
SELECT *
FROM students s
WHERE EXISTS (
SELECT 1
FROM scores sc
WHERE sc.student_id = s.id AND sc.score >= 60
);
以上语句查询students表中成绩大于等于60分的学生。
9. JOIN 语句
JOIN语句用于连接两个或多个表,常见的类型有:
INNER JOIN:只返回两个表中共有的记录。
LEFT JOIN:返回左表中的所有记录和右表中与之匹配的记录,如果右表中没有匹配的记录,则返回NULL。
RIGHT JOIN:返回右表中的所有记录和左表中与之匹配的记录,如果左表中没有匹配的记录,则返回NULL。
FULL OUTER JOIN:返回两个表中所有的记录,如果没有匹配的则返回NULL。
以下是一个INNER JOIN的示例:
SELECT s.name, sc.score
FROM students s
INNER JOIN scores sc ON s.id = sc.student_id;
以上语句返回两个表中都有的记录,其中包含学生的姓名和成绩。
10. UNION 语句
UNION语句用于合并两个或多个SELECT语句的结果集,要求每个SELECT语句中的列数和数据类型必须相同。通常的形式为:
SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;
以下是一个UNION的示例:
SELECT name, gender
FROM students
WHERE age >= 20
UNION
SELECT name, gender
FROM teachers
WHERE age >= 30;
以上语句返回students和teachers表中年龄大于等于20或30岁的学生和教师的姓名和性别。
11. COUNT() 函数
COUNT()函数用于计算一个查询结果集中的行数,它的常见形式为:
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
其中column_name表示要计算的列,table_name表示要查询的表,WHERE condition表示查询条件。如果column_name参数指定为*,则表示计算所有的行数。例如,我们要计算students表中年龄大于等于20的学生的人数,可以使用以下查询语句:
SELECT COUNT(*)
FROM students
WHERE age >= 20;
12. SUM() 函数
SUM()函数用于计算一个查询结果集中指定列的总和,它的常见形式为:
SELECT SUM(column_name)
FROM table_name
WHERE condition;
其中column_name表示要计算总和的列,table_name表示要查询的表,WHERE condition表示查询条件。例如,我们要计算students表中年龄大于等于20的学生的年龄总和,可以使用以下查询语句:
SELECT SUM(age)
FROM students
WHERE age >= 20;
13. AVG() 函数
AVG()函数用于计算一个查询结果集中指定列的平均值,它的常见形式为:
SELECT AVG(column_name)
FROM table_name
WHERE condition;
其中column_name表示要计算平均值的列,table_name表示要查询的表,WHERE condition表示查询条件。例如,我们要计算students表中年龄大于等于20的学生的平均年龄,可以使用以下查询语句:
SELECT AVG(age)
FROM students
WHERE age >= 20;
14. MAX() 函数
MAX()函数用于计算一个查询结果集中指定列的最大值,它的常见形式为:
SELECT MAX(column_name)
FROM table_name
WHERE condition;
其中column_name表示要计算最大值的列,table_name表示要查询的表,WHERE condition表示查询条件。例如,我们要计算students表中年龄最大的学生的年龄,可以使用以下查询语句:
SELECT MAX(age)
FROM students;
15. MIN() 函数
MIN()函数用于计算一个查询结果集中指定列的最小值,它的常见形式为:
SELECT MIN(column_name)
FROM table_name
WHERE condition;
其中column_name表示要计算最小值的列,table_name表示要查询的表,WHERE condition表示查询条件。例如,我们要计算students表中年龄最小的学生的年龄,可以使用以下查询语句:
SELECT MIN(age)
FROM students;
16. ROUND() 函数
ROUND()函数用于将一个数值保留指定的小数位数,它的常见形式为:
SELECT ROUND(column_name, digit)
FROM table_name
WHERE condition;
其中column_name表示要保留小数位数的列,digit表示要保留的小数位数,table_name表示要查询的表,WHERE condition表示查询条件。例如,我们要将students表中年龄的平均值保留两位小数,可以使用以下查询语句:
SELECT ROUND(AVG(age), 2)
FROM students;
17. CONCAT() 函数
CONCAT()函数用于将多个字符串连接起来,它的常见形式为:
SELECT CONCAT(string1, string2, ...)
FROM table_name
WHERE condition;
其中string1, string2,...表示要连接的字符串,table_name表示要查询的表,WHERE condition表示查询条件。例如,我们要在students表中查询学生姓名和出生地,并将它们连接成为一个字符串,可以使用以下查询语句:
SELECT CONCAT(name, '来自', birth_place)
FROM students;
18. SUBSTRING() 函数
SUBSTRING()函数用于将一个字符串截取出其中的一部分,它的常见形式为:
SELECT SUBSTRING(string, start_position, length)
FROM table_name
WHERE condition;
其中string表示要截取的字符串,start_position表示截取的开始位置(从1开始),length表示要截取的长度,table_name表示要查询的表,WHERE condition表示查询条件。例如,我们要在students表中查询学生姓名的前两个字符,可以使用以下查询语句:
SELECT SUBSTRING(name, 1, 2)
FROM students;
19. IFNULL() 函数
IFNULL()函数用于判断一个字段是否为NULL,如果是NULL,则返回指定的值,否则返回该字段的值。它的常见形式为:
SELECT IFNULL(column_name, default_value)
FROM table_name
WHERE condition;
其中column_name表示要判断是否为NULL的字段,default_value表示如果该字段的值为NULL,则返回的默认值,table_name表示要查询的表,WHERE condition表示查询条件。例如,我们要查询students表中学生的出生地,如果出生地为NULL,则显示“未知”,可以使用以下查询语句:
SELECT IFNULL(birth_place, '未知')
FROM students;
20. DATE_FORMAT() 函数
DATE_FORMAT()函数用于将日期型字段格式化为指定的格式,它的常见形式为:
SELECT DATE_FORMAT(date, format)
FROM table_name
WHERE condition;
其中date表示要格式化的日期型字段,format表示指定的格式,具体格式化方式可参考MySQL官方文档,table_name表示要查询的表,WHERE condition表示查询条件。例如,我们要查询students表中学生的生日,并将其格式化为“月-日”的形式,可以使用以下查询语句:
SELECT DATE_FORMAT(birthday, '%m-%d')
FROM students;
21. GROUP_CONCAT() 函数
GROUP_CONCAT()函数用于将一个组内的多个值连接成一个字符串,它的常见形式为:
SELECT column1, GROUP_CONCAT(column2)
FROM table_name
GROUP BY column1;
其中column1表示组的依据列,column2表示要连接成字符串的列,table_name表示要查询的表。例如,我们要统计每个城市的学生姓名,并将姓名连接成一个字符串,可以使用以下查询语