数据查询语言(DQL)是SQL语言中的一部分,主要用于查询数据库中的数据。DQL允许用户根据特定的条件来检索表中的数据,并且可以包含一些基本的操作和条件。
语法结构:
SELECT 列名称1 , 列名称2 FROM 表名称;
其中,SELECT指定要检索的列,FROM指定要查询的表,WHERE指定筛选条件。
以下是一些常用的DQL查询语句的示例:
- 查询所有数据
如果要查询表中所有的数据,可以使用以下语句:
SELECT * FROM table_name;
这将返回表中的所有行和所有列。
- 查询指定列的数据
如果要查询表中某个或某些列的数据,可以使用以下语句:
SELECT column1, column2 FROM table_name;
这将返回表中指定列的所有行。
条件筛选查询
可以使用WHERE子句对查询结果进行条件筛选。WHERE子句允许你指定一个条件,用于从数据库表中过滤出符合条件的记录。同时,还可以与其他DQL语句(如JOIN、GROUP BY等)结合使用,以满足特定的数据查询需求。
条件运算符
-
等于(=)
使用"="运算符来比较两个值是否相等。例如,如果要查询名为"John"的用户信息,可以使用以下查询:
SELECT * FROM users WHERE name = 'John';
-
不等于(<>或!=)
使用"<>"或"!="运算符来比较两个值是否不相等。例如,如果要查询不是名为"John"的用户信息,可以使用以下查询:
SELECT * FROM users WHERE name <> 'John';
-
大于(>)
使用">"运算符来比较一个值是否大于另一个值。例如,如果要查询年龄大于25岁的用户信息,可以使用以下查询:
SELECT * FROM users WHERE age > 25;
-
小于(<)
使用"<"运算符来比较一个值是否小于另一个值。例如,如果要查询年龄小于30岁的用户信息,可以使用以下查询:
SELECT * FROM users WHERE age < 30;
-
大于等于(>=)
使用">="运算符来比较一个值是否大于或等于另一个值。例如,如果要查询年龄大于或等于25岁的用户信息,可以使用以下查询:
SELECT * FROM users WHERE age >= 25;
-
小于等于(<=)
使用"<="运算符来比较一个值是否小于或等于另一个值。例如,如果要查询年龄小于或等于30岁的用户信息,可以使用以下查询:
SELECT * FROM users WHERE age <= 30;
-
模糊匹配LIKE
使用LIKE运算符进行模糊匹配。它允许在模式中使用通配符 "%"(匹配任意字符序列)和 "_"(匹配任意单个字符)。例如,如果要查询名字中包含"J"的用户信息,可以使用以下查询:
SELECT * FROM users WHERE name LIKE '%J%';
-- 查询姓名由5个字母构成的学生记录
SELECT * FROM student WHERE stu_name LIKE '_____';
-- 查询姓名由5个字母构成,并且第5个字母为“i”的学生记录
SELECT * FROM student WHERE stu_name LIKE '____i';
--查询姓名以“z”开头的学生记录
SELECT * FROM student WHERE stu_name LIKE 'z%';
-- 查询姓名中第2个字母为“i”的学生记录
SELECT * FROM student WHERE stu_name LIKE'_i%';
-- 查询姓名包含“三”的学生记录
SELECT * FROM student WHERE stu_name LIKE '%三%';
-
IN
使用IN运算符来检查一个值是否在给定的列表中。例如,如果要查询ID为1、3或5的用户信息,可以使用以下查询:
SELECT * FROM users WHERE id IN (1, 3, 5);
-
BETWEEN
使用BETWEEN运算符来指定一个值是否在指定的范围之间。它包括范围的最小值和最大值。例如,如果要查询年龄在20到30岁之间的用户信息,可以使用以下查询:
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
列与表取别名
在DQL中,可以为表和列取别名,以便在查询中引用它们。使用别名可以使SQL语句更易读、易写,也可以在查询中消除歧义。
-
为表取别名
可以为表取一个别名,以便在查询中引用该表。例如:
SELECT t.name FROM table1 AS t;
在上述查询中,表table1被赋予了别名"t",然后可以通过"t"来引用该表。
-
为列取别名
同样,也可以为列取别名。例如:
SELECT name AS player_name FROM table_name;
在上述查询中,列"name"被赋予了别名"player_name"。在结果集中,"player_name"将代表"table_name"表中的"name"列。
-
同时为表和列取别名
还可以同时为表和列取别名。例如:
SELECT t.name AS player_name FROM table1 AS t;
排序
在DQL中,可以通过ORDER BY子句对查询结果进行排序。排序可以按照升序(ASC)或降序(DESC)进行。
语法结构:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式, 字段2 排序方式2;
其中,排序方式可以是ASC(升序,默认值)或DESC(降序)。
以下是一些排序查询的示例:
-
单列排序:
SELECT * FROM employees ORDER BY last_name ASC; -- 按姓氏升序排序
SELECT * FROM employees ORDER BY last_name DESC; -- 按姓氏降序排序
-
多列排序:
SELECT * FROM employees ORDER BY last_name ASC, first_name ASC; -- 先按姓氏升序排序,再按名字升序排序
SELECT * FROM employees ORDER BY last_name DESC, first_name DESC; -- 先按姓氏降序排序,再按名字降序排序
-
对聚合结果进行排序:
SELECT COUNT(*) FROM employees GROUP BY department_id ORDER BY COUNT(*) DESC; -- 按部门人数降序排序
聚合函数
运算函数
DQL中的聚合函数是一组用于对查询结果进行统计的函数。常见的聚合函数包括:
-
COUNT函数:用于计算查询结果中的行数。
SELECT COUNT(*) FROM table_name; -- 计算表中的行数
SELECT COUNT(column_name) FROM table_name; -- 计算符合条件的行数
-
SUM函数:用于计算某个列的总和。
SELECT SUM(column_name) FROM table_name; -- 计算列的总和
-
AVG函数:用于计算某个列的平均值。
SELECT AVG(column_name) FROM table_name; -- 计算列的平均值
-
MAX函数:用于找出某个列的最大值。
SELECT MAX(column_name) FROM table_name; -- 找出列的最大值
-
MIN函数:用于找出某个列的最小值。
SELECT MIN(column_name) FROM table_name; -- 找出列的最小值