DQL(Data Query Language) 数据查询语言是用于从数据库中检索数据的语言。查询返回的结果集是一张虚拟表。
1.基础查询
这是最基本的查询语句,用于从数据库中选择指定表中的列。
SELECT column1, column2, ...
FROM table_name;
2.条件查询
条件查询允许你在检索数据时使用条件来过滤结果。条件可以是比较运算符,逻辑运算符等
=、!=、<>、<、<=、>、>=;
BETWEEN…AND;
IN(set);
IS NULL;
AND;
OR;
NOT
SELECT column1, column2, ...
FROM table_name
WHERE condition;
3.模糊查询
模糊查询允许你使用通配符通过指定模式来匹配文本字段
通配符:
_ 任意一个字母
%:任意0~n个
SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern
4.字段控制查询
使用DISTINCT关键字来返回唯一不同的值。
SELECT DISTINCT column1, column2, ...
FROM table_name;
5.排序
使用ORDER BY关键字来对检索出的结果进行排序,可以指定升序(ASC)或降序(DESC)。
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 ASC/DESC, column2 ASC/DESC, ...;
6.聚合函数
聚合函数允许你对数据进行统计计算,如计数、求和、平均值、最大值和最小值。
SELECT COUNT(column_name), SUM(column_name), AVG(column_name), MAX(column_name), MIN(column_name)
FROM table_name;
COUNT():统计指定列不为NULL的记录行数;
MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
7.分组查询
SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;
GROUP BY关键字用于将结果分组,然后对每个组应用聚合函数。凡和聚合函数同时出现的列名,则一定要写在group by 之后
having与where的区别:
1.having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
2.having后面可以使用分组函数(统计函数)
where后面不可以使用分组函数。
WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。
8.LIMIT
LIMIT用来限定查询结果的起始行,以及总行数
查询5行记录,起始行从0开始
SELECT * FROM table_name LIMIT 0, 5
9.多表查询
多表查询是指在关系型数据库中同时查询多个表以获取所需的数据。这种查询通常涉及到表与表之间的关联关系,可以通过 JOIN 操作将这些表连接起来,以便联合查询它们的数据。
内连接(INNER JOIN):
内连接用于返回两个表中匹配行的交集。
示例:
SELECT *
FROM table1
INNER JOIN table2 ON table1.column = table2.column;
左连接(LEFT JOIN 或 LEFT OUTER JOIN):
左连接用于返回左表中的所有行,以及右表中与左表中匹配行的行。如果右表中没有匹配的行,则为 NULL。
示例:
SELECT *
FROM table1
LEFT JOIN table2 ON table1.column = table2.column;
右连接(RIGHT JOIN 或 RIGHT OUTER JOIN):
右连接与左连接类似,只是返回右表中的所有行,以及左表中与右表中匹配行的行。如果左表中没有匹配的行,则为 NULL。
示例:
SELECT *
FROM table1
RIGHT JOIN table2 ON table1.column = table2.column;
全连接(FULL JOIN 或 FULL OUTER JOIN):
全连接返回两个表中的所有行,如果其中一个表中没有与另一个表中的行匹配的行,则为 NULL。
示例:
SELECT *
FROM table1
FULL JOIN table2 ON table1.column = table2.column;
交叉连接(CROSS JOIN):
交叉连接返回两个表中所有可能的组合,它不需要任何关联条件。
示例:
SELECT *
FROM table1
CROSS JOIN table2;