整理MySql常用查询语句(23种)

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;

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签