数据库基本语法四 数据库查询(DQL)

发布时间 2023-08-27 09:38:08作者: 乐虫乐瓜

数据查询语言(DQL)是SQL语言中的一部分,主要用于查询数据库中的数据。DQL允许用户根据特定的条件来检索表中的数据,并且可以包含一些基本的操作和条件。

语法结构:

SELECT 列名称1 , 列名称2 FROM 表名称;

其中,SELECT指定要检索的列,FROM指定要查询的表,WHERE指定筛选条件。

以下是一些常用的DQL查询语句的示例:

  1. 查询所有数据

如果要查询表中所有的数据,可以使用以下语句:

SELECT * FROM table_name;

这将返回表中的所有行和所有列。

  1. 查询指定列的数据

如果要查询表中某个或某些列的数据,可以使用以下语句:

SELECT column1, column2 FROM table_name;

这将返回表中指定列的所有行。

条件筛选查询

可以使用WHERE子句对查询结果进行条件筛选。WHERE子句允许你指定一个条件,用于从数据库表中过滤出符合条件的记录。同时,还可以与其他DQL语句(如JOIN、GROUP BY等)结合使用,以满足特定的数据查询需求。

条件运算符

  1. 等于(=)

使用"="运算符来比较两个值是否相等。例如,如果要查询名为"John"的用户信息,可以使用以下查询:

SELECT * FROM users WHERE name = 'John';
  1. 不等于(<>或!=)

使用"<>"或"!="运算符来比较两个值是否不相等。例如,如果要查询不是名为"John"的用户信息,可以使用以下查询:

SELECT * FROM users WHERE name <> 'John';
  1. 大于(>)

使用">"运算符来比较一个值是否大于另一个值。例如,如果要查询年龄大于25岁的用户信息,可以使用以下查询:

SELECT * FROM users WHERE age > 25;
  1. 小于(<)

使用"<"运算符来比较一个值是否小于另一个值。例如,如果要查询年龄小于30岁的用户信息,可以使用以下查询:

SELECT * FROM users WHERE age < 30;
  1. 大于等于(>=)

使用">="运算符来比较一个值是否大于或等于另一个值。例如,如果要查询年龄大于或等于25岁的用户信息,可以使用以下查询:

SELECT * FROM users WHERE age >= 25;
  1. 小于等于(<=)

使用"<="运算符来比较一个值是否小于或等于另一个值。例如,如果要查询年龄小于或等于30岁的用户信息,可以使用以下查询:

SELECT * FROM users WHERE age <= 30;
  1. 模糊匹配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 '%三%';
  1. IN

使用IN运算符来检查一个值是否在给定的列表中。例如,如果要查询ID为1、3或5的用户信息,可以使用以下查询:

SELECT * FROM users WHERE id IN (1, 3, 5);
  1. BETWEEN

使用BETWEEN运算符来指定一个值是否在指定的范围之间。它包括范围的最小值和最大值。例如,如果要查询年龄在20到30岁之间的用户信息,可以使用以下查询:

SELECT * FROM users WHERE age BETWEEN 20 AND 30;

 列与表取别名

在DQL中,可以为表和列取别名,以便在查询中引用它们。使用别名可以使SQL语句更易读、易写,也可以在查询中消除歧义。

  1. 为表取别名

可以为表取一个别名,以便在查询中引用该表。例如:

SELECT t.name FROM table1 AS t;

在上述查询中,表table1被赋予了别名"t",然后可以通过"t"来引用该表。

  1. 为列取别名

同样,也可以为列取别名。例如:

SELECT name AS player_name FROM table_name;

在上述查询中,列"name"被赋予了别名"player_name"。在结果集中,"player_name"将代表"table_name"表中的"name"列。

  1. 同时为表和列取别名

还可以同时为表和列取别名。例如:

SELECT t.name AS player_name FROM table1 AS t;

排序

在DQL中,可以通过ORDER BY子句对查询结果进行排序。排序可以按照升序(ASC)或降序(DESC)进行。

语法结构:

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式, 字段2 排序方式2;

其中,排序方式可以是ASC(升序,默认值)或DESC(降序)。

以下是一些排序查询的示例:

  1. 单列排序:

    SELECT * FROM employees ORDER BY last_name ASC; -- 按姓氏升序排序
    SELECT FROM employees ORDER BY last_name DESC; -- 按姓氏降序排序
  1. 多列排序:

    SELECT * FROM employees ORDER BY last_name ASC, first_name ASC; -- 先按姓氏升序排序,再按名字升序排序
    SELECT FROM employees ORDER BY last_name DESC, first_name DESC; -- 先按姓氏降序排序,再按名字降序排序
  1. 对聚合结果进行排序:

SELECT COUNT(*) FROM employees GROUP BY department_id ORDER BY COUNT(*) DESC; -- 按部门人数降序排序

聚合函数

运算函数

DQL中的聚合函数是一组用于对查询结果进行统计的函数。常见的聚合函数包括:

  1. COUNT函数:用于计算查询结果中的行数。

    SELECT COUNT(*) FROM table_name; -- 计算表中的行数
    SELECT COUNT(column_name) FROM table_name; -- 计算符合条件的行数
  1. SUM函数:用于计算某个列的总和。

    SELECT SUM(column_name) FROM table_name; -- 计算列的总和
  1. AVG函数:用于计算某个列的平均值。

    SELECT AVG(column_name) FROM table_name; -- 计算列的平均值
  1. MAX函数:用于找出某个列的最大值。

    SELECT MAX(column_name) FROM table_name; -- 找出列的最大值
  1. MIN函数:用于找出某个列的最小值。

    SELECT MIN(column_name) FROM table_name; -- 找出列的最小值