数据库教程

SQL基础教程之DQL详解

我的站长站 2024-08-25 人阅读

学习目标:

1.理解DQL(Data Query Language)的基本概念和作用。

2.掌握sql查询的基本语法结构,包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY等子句的使用。

3.理解并能够使用WHERE子句进行条件筛选,包括逻辑运算符(AND、OR、NOT)和比较运算符(=、<>、>、<、>=、<=)的使用。

4.掌握使用GROUP BY子句对查询结果进行分组,并能够使用聚合函数(如COUNT、SUM、AVG、MAX、MIN)进行数据的统计分析。

5.学会使用HAVING子句对分组后的结果进行条件筛选。

6.理解并能够使用ORDER BY子句对查询结果进行排序,包括单列排序和多列排序,以及使用ASC和DESC关键字指定排序方向。

7.掌握子查询的使用,包括在SELECT、FROM、WHERE子句中嵌套子查询。

8.理解并能够使用DISTINCT关键字去除查询结果中的重复记录。

9.学会使用LIMIT子句限制查询结果的数量。

学习内容:

DQL(Data Query Language)是SQL(Structured Query Language)的一个重要组成部分,专门用于从数据库中检索数据。它允许用户通过编写查询语句来请求数据库中的信息,而无需修改数据本身。DQL的核心是SELECT语句,它是数据库查询中最常用的命令之一。

SELECT

SELECT 子句用于指定要从数据库中检索的列。可以是单个列名、多个列名,或者使用星号(*)来选择所有列。

SELECT column1, column2, ...
FROM table_name;

FROM

FROM 子句用于指定要从哪个表或哪些表中检索数据。

SELECT column1, column2, ...
FROM table_name;

WHERE

WHERE 子句用于过滤结果集,只返回满足指定条件的记录。

SELECT column1, column2, ...
FROM table_name
WHERE condition;

GROUP BY

GROUP BY 子句用于将结果集中的数据分组,通常与聚合函数一起使用,如COUNT(), SUM(), AVG(), MAX(), MIN()等。

SELECT column1, COUNT(column2)
FROM table_name
GROUP BY column1;

HAVING

HAVING 子句用于对GROUP BY子句返回的结果集进行条件过滤,类似于WHERE子句,但HAVING可以使用聚合函数。

SELECT column1, COUNT(column2)
FROM table_name
GROUP BY column1
HAVING COUNT(column2) > 10;

ORDER BY

ORDER BY 子句用于对结果集进行排序,可以指定一个或多个列,并且可以指定排序的方向(升序ASC或降序DESC)。

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 ASC, column2 DESC;

运算符

在SQL中,WHERE子句用于指定从数据库表中检索数据的条件。通过使用逻辑运算符(AND、OR、NOT)和比较运算符(=、<>、>、<、>=、<=),可以构建复杂的查询条件来筛选数据。

以下是一些使用这些运算符的示例:

使用比较运算符:

= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

使用逻辑运算符:

AND 用于组合多个条件,只有当所有条件都为真时,记录才会被选中。

OR 用于组合多个条件,只要有一个条件为真,记录就会被选中。

NOT 用于反转条件的结果。

在使用这些运算符时,需要注意运算符的优先级。在SQL中,NOT 的优先级最高,其次是 AND,然后是 OR。如果不确定优先级,可以使用括号 () 来明确指定运算顺序。

ASC 和 DESC

在SQL查询中,ASC 和 DESC 关键字用于指定列的排序方向。ASC 表示升序(从低到高),而 DESC 表示降序(从高到低)。默认情况下,如果没有指定排序方向,SQL查询将使用升序排序。

升序排序:

SELECT * FROM employees
ORDER BY salary ASC;

这个查询将返回所有员工记录,并按照工资升序排序。

降序排序:

SELECT * FROM employees
ORDER BY salary DESC;

这个查询将返回所有员工记录,并按照工资降序排序。

结合GROUP BY和HAVING子句的排序:

SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000
ORDER BY avg_salary DESC;

这个查询将返回每个部门的平均工资,并且只包括那些平均工资超过50,000的部门。结果将按照平均工资降序排序。

相关推荐
  • sql教程
  • 帝国CMS批量替换栏目路径SQL

    将栏目路径清空SQL语句UPDATE phome_enewsclass SET classpath='';UPDATE phome_enewsclass SET classpath=concat(classpath,'html/',classid);

    帝国cms教程 229 5年前
  • SQL清空某字段的值

    网上找了好多文章才发现,主要是好多都是错了,试了很多。最开始找到是这段,网上都说等于null是对的update tablename set temp=null但测试等于null是不行的,直接报错。update px_dp_tagsadd set py="";网上都说不能等于空,但我测试发现等于等于空才是对的...

    经验分享 1269 5年前
  • SQL批量替换字段字符语句
    SQL批量替换字段字符语句

    SQL产品图最近优化网站结构遇到的问题,分享给大家。要求是需要把内容字段的H4标签用SQL语句批量替换成b标签,利于网站整体优化。在网上学习了这段代码,测试可以使用。SQL批量替换字段语句示例update...

    数据库教程 136 5年前
最新更新