经典sql查询语句50条
作为一门基础性的计算机语言,SQL可以用来访问和处理关系型数据库中的数据。在日常生活、工作中,我们都会经常遇到需要查询数据库的场景,那么如何写出高效且准确的SQL查询语句呢?
以下是50条经典的SQL查询语句,从多个角度分别分析这些查询语句的特点和用途,帮助您更好地掌握SQL查询语句的使用。
一、基本查询语句
1.SELECT * FROM table_name;
这是最基本的查询语句,会返回指定表中的所有数据。
2.SELECT column1, column2, ... FROM table_name;
这条查询语句可以指定需要查询的列。
3.SELECT DISTINCT column1, column2, ... FROM table_name;
该查询语句的作用是去除重复数据并返回查询结果。
4.SELECT column1, column2, ... FROM table_name WHERE condition;
该语句通过WHERE条件筛选出符合要求的数据。
5.SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2;
与6.SELECT column1, column2, ... FROM table_name WHERE condition1 OR condition2;
这两个查询语句则是可以筛选出符合多个条件或多人条件的数据。
7.SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC;
ORDER BY可以将结果按照指定列升序或降序排列。
二、 聚合查询
8.SELECT COUNT(column_name) FROM table_name;
该查询语句可以统计指定列中的记录数。
9.SELECT SUM(column_name) FROM table_name;
该查询语句可以对指定列求和。
10.SELECT AVG(column_name) FROM table_name;
该查询语句可以对指定列求平均值。
11.SELECT MAX(column_name) FROM table_name;
该查询语句可以返回指定列中的最大值。
12.SELECT MIN(column_name) FROM table_name;
该查询语句可以返回指定列中的最小值。
三、 分组查询
13.SELECT column_name1, COUNT(column_name2) FROM table_name GROUP BY column_name1;
该查询语句可以根据一个或多个列对结果进行分组,并统计每组中指定列的记录数。
14.SELECT column_name1, SUM(column_name2) FROM table_name GROUP BY column_name1;
该查询语句可以按照指定列对结果进行分组,并计算每组中指定列的总和。
15.SELECT column_name1, AVG(column_name2) FROM table_name GROUP BY column_name1;
该查询语句可以按照指定列对结果进行分组,并计算每组中指定列的平均值。
16.SELECT column_name1, MAX(column_name2) FROM table_name GROUP BY column_name1;
该查询语句可以按照指定列对结果进行分组,并返回每组中指定列的最大值。
17.SELECT column_name1, MIN(column_name2) FROM table_name GROUP BY column_name1;
该查询语句可以按照指定列对结果进行分组,并返回每组中指定列的最小值。
四、 连接查询
18.SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
INNER JOIN是最常用的连接查询语句,它将两个或多个表连接在一起,根据指定列的值进行匹配。
19.SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;
LEFT JOIN会返回表1中所有的数据和与表1关联的表2中匹配的数据。
20.SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;
RIGHT JOIN会返回表2中所有的数据和与表2关联的表1中匹配的数据。
21.SELECT column_name(s) FROM table1 FULL JOIN table2 ON table1.column_name = table2.column_name;
FULL JOIN会返回表1、表2中所有的数据,并将它们根据指定列值进行匹配。
五、 子查询
22.SELECT column_name(s) FROM table_name WHERE column_name IN (SELECT column_name FROM table_name WHERE condition);
该查询语句会返回在子查询中满足条件的指定列中的记录。
23.SELECT column_name(s) FROM table_name WHERE column_name NOT IN (SELECT column_name FROM table_name WHERE condition);
该查询语句会返回在子查询中不满足条件的指定列中的记录。
24.SELECT column_name(s) FROM table_name WHERE EXISTS (SELECT column_name FROM table_name WHERE condition);
该查询语句会返回满足子查询中条件的任何记录。
25.SELECT column_name(s) FROM table_name WHERE NOT EXISTS (SELECT column_name FROM table_name WHERE condition);
该查询语句会返回不满足子查询中条件的任何记录。
六、 模糊查询
26.SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;
该查询语句中的LIKE操作符允许在查询中使用通配符,比如%代表0个或多个字符,_代表一个字符。
27.SELECT column_name(s) FROM table_name WHERE column_name NOT LIKE pattern;
该查询语句中的NOT LIKE操作符将返回不匹配查询中指定模式的任何记录。
七、 修改查询
28.UPDATE table_name SET column_name = new_value WHERE column_name = some_value;
该查询语句可以用来更新表中的数据。
29.DELETE FROM table_name WHERE column_name = some_value;
该查询语句会删除满足条件的行。
30.INSERT INTO table_name ( column1, column2,...) VALUES (value1, value2,...);
该查询语句会将指定的值插入到表中。
八、 高级查询
31.SELECT column_name(s) FROM table_name LIMIT number;
该查询语句可以限制结果集中的行数。
32.SELECT column_name(s) FROM table_name LIMIT number OFFSET offset;
该查询语句可以限制结果集中的行数并设定偏移量,也就是让查询从某一行开始返回数据。
33.SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;
该查询语句会返回在指定范围内的值。
34.SELECT column_name(s) FROM table_name WHERE column_name NOT BETWEEN value1 AND value2;
该查询语句会返回不在指定范围内的值。
35.SELECT column_name(s) FROM table_name WHERE column_name IS NULL;
该查询语句会返回指定列中的空值。
36.SELECT column_name(s) FROM table_name WHERE column_name IS NOT NULL;
该查询语句会返回指定列中不为空的值。
37.SELECT column_name(s) FROM table_name WHERE column_name REGEXP 'expression';
该查询语句中的REGEXP操作符可以匹配指定表中的数据。
38.SELECT column_name(s) FROM table_name WHERE column_name SOUNDS LIKE 'expression';
该查询语句中的SOUNDS LIKE操作符可以在搜索中做语音匹配。
39.SELECT column_name(s) FROM table_name WHERE column_name = ANY (SELECT column_name FROM table_name WHERE condition);
该查询语句中的ANY操作符与IN类似,但可以将子查询中的多个值进行比较。
40.SELECT column_name(s) FROM table_name WHERE column_name = ALL (SELECT column_name FROM table_name WHERE condition);
该查询语句中的ALL操作符可以将子查询中的多个值都与指定列进行比较。
41.SELECT column_name(s) FROM table_name WHERE column_name = some_value;
该查询语句中的some_value可以是具体的值,也可以是另一条SELECT语句。
42.SELECT column_name(s) FROM table_name WHERE column_name <> some_value;
该查询语句会返回不等于指定值的数据。
43.SELECT IFNULL(column_name1,column_name2) FROM table_name;
IFNULL可以将指定列的空值替换为另一个指定的值。
44.SELECT column_name(s) FROM table_name GROUP BY column_name HAVING COUNT(column_name) > value;
HAVING语句可以根据分组后的记录筛选数据。
45.SELECT column_name(s) FROM table_name GROUP BY column_name HAVING SUM(column_name) > value;
group_by语句还支持更多的聚合函数,比如SUM()。
46.SELECT column_name(s) FROM table_name INNER JOIN table_name ON column_name = column_name WHERE condition GROUP BY column_name HAVING COUNT(column_name) > value;
或其他一些复杂的查询语句可以通过组合以上语句来实现。
47.SELECT column_name(s) FROM table_name WHERE column_name IN (SELECT column_name FROM table_name WHERE condition) AND column_name IN (SELECT column_name FROM table_name WHERE condition);
有一些其他类型的查询语句,如复合OR,复合AND,复合NOT等。
48.SELECT column_name(s) FROM table_name WHERE TIMESTAMPDIFF(MINUTE, column_name1, column_name2) >= some_value;
TIMESTAMPDIFF可以计算时间段内的差异。
49.SELECT column_name(s) FROM table_name WHERE MONTH(column_name) = some_value;
MONTH可以返回指定列中的月份。
50.SELECT column_name(s) FROM table_name WHERE DAY(column_name) = some_value;
DAY可以返回指定列中的日期。