SQL语法学习20170803

本文介绍了SQL的基础用法,包括SELECT语句、ORDER BY子句、INSERT INTO语句、GROUP BY语句及HAVING子句等。通过实例展示了如何从数据库表中选择数据、排序结果、插入新行、对数据进行分组并过滤分组后的结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

一直我都觉得自己的SQL语言学习的不错,但是很多年不再使用以后,突然发现,其实还是有很多的知识点不知道怎么使用的,一直以来都不是以应用进行学习和促进,大多数时候都是觉得自己会了,其实当事情发展为以问题为核心的查找过程,学习其实是一件非常快速的事情!

1. SQL SELECT 语句

SELECT 语句用于从表中选取数据。

SELECT * FROM 表名称
2.SQL ORDER BY 子句

ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序,或者ASC。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

以逆字母顺序显示公司名称,并以数字顺序显示顺序号:

3.INSERT INTO 语句

INSERT INTO 语句用于向表格中插入新的行。

INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
4.SQL GROUP BY 语句

GROUP BY 语句用于结合聚合函数(SUM,AVG),根据一个或多个列对结果集进行分组。

我们拥有下面这个 “Orders” 表:

O_Id    OrderDate   OrderPrice  Customer
1   2008/12/29  1000    Bush
2   2008/11/23  1600    Carter
3   2008/10/05  700 Bush
4   2008/09/28  300 Bush
5   2008/08/06  2000    Adams
6   2008/07/21  100 Carter

现在,我们希望查找每个客户的总金额(总订单)。
我们想要使用 GROUP BY 语句对客户进行组合。
我们使用下列 SQL 语句:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer

结果集类似这样:

Customer    SUM(OrderPrice)
Bush    2000
Carter  1700
Adams   2000

很棒吧,对不对?
让我们看一下如果省略 GROUP BY 会出现什么情况:

SELECT Customer,SUM(OrderPrice) FROM Orders

结果集类似这样:

Customer    SUM(OrderPrice)
Bush    5700
Carter  5700
Bush    5700
Bush    5700
Adams   5700
Carter  5700

上面的结果集不是我们需要的。
那么为什么不能使用上面这条 SELECT 语句呢?解释如下:上面的 SELECT 语句指定了两列(Customer 和 SUM(OrderPrice))。”SUM(OrderPrice)” 返回一个单独的值(”OrderPrice” 列的总计),而 “Customer” 返回 6 个值(每个值对应 “Orders” 表中的每一行)。因此,我们得不到正确的结果。不过,您已经看到了,GROUP BY 语句解决了这个问题。
GROUP BY 一个以上的列
我们也可以对一个以上的列应用 GROUP BY 语句,就像这样:

SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate
5.SQL HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

SQL HAVING 实例
我们拥有下面这个 “Orders” 表:

O_Id    OrderDate   OrderPrice  Customer
1   2008/12/29  1000    Bush
2   2008/11/23  1600    Carter
3   2008/10/05  700 Bush
4   2008/09/28  300 Bush
5   2008/08/06  2000    Adams
6   2008/07/21  100 Carter

现在,我们希望查找订单总金额少于 2000 的客户。
我们使用如下 SQL 语句:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

结果集类似:

Customer    SUM(OrderPrice)
Carter  1700

现在我们希望查找客户 “Bush” 或 “Adams” 拥有超过 1500 的订单总金额。
我们在 SQL 语句中增加了一个普通的 WHERE 子句:

SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500

结果集:

Customer    SUM(OrderPrice)
Bush    2000
Adams   2000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值