第3章 SQL数据操纵语言
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
的定单信息。
使用[NOT] BETWEEN … AND …
BETWEEN … AND …是一个闭区间。
例6 查询单价在15到20之间的所有产品的信息。
使用[NOT] IN
例7 查询所在州为‘TN’,‘OR’,‘MI’之一
的供应商的信息。
计算机与信息学院
第3章 SQL数据操纵语言
4
第3章 数据操纵语言
计算机与信息学院
第3章 SQL数据操纵语言
2
第3章 数据操纵语言
3.1.2 简单查询
最简单的查询只由SELECT、FROM两个子 句构成。
❖ 1 即指定字段列表表达式,每个之间用逗号 分开,可以使用星号(*)检索所有列。
❖ 例1 查询所有产品的基本信息。 例2 查询所有供应商的名称、所在城市和州。
❖MAX([DISTINCT | ALL] <列名>)求一列值中 的最大值
❖MIN([DISTINCT | ALL] <列名>)求一列值中 的最小值
❖ 如果指定了DISTINCT,则表示在计算时要取
消指定列中的重复值。
第3章 SQL数据操纵语言
8
计算机与信息学院
第3章 数据操纵语言
例13 查询所有定单的总交易额。
使用[NOT] LIKE 通配符%,代表任意数量的任意字符,?代
表一个任意字符。
例8 查询产品名中含有“Tofu”的所有产品信 息。
❖ 判断空值的查询条件 IS [NOT] NULL ISNULL()函数 例9 查询传真号为空值的所有供应商的信息。
计算机与信息学院
第3章 SQL数据操纵语言
5
第3章 数据操纵语言
第三章 SQL数据操纵语言
❖3.1 数据查询 ❖3.2 数据更新
❖ 如没有特别说明本节的所有查询都在 Northwind数据库中进行。
计算机与信息学院
第3章 SQL数据操纵语言
1
第3章 数据操纵语言
3.1 数据查询
❖3.1.1 SELECT语句结构
SELECT <字段列表表达式> [INTO 表名]
计算机与信息学院
第3章 SQL数据操纵语言
13
FROM <表名或视图名列表>
[WHERE <条件表达式>]
[GROUP BY <分组列表> [HAVING <筛选条件 >]]
[ORDER BY <关键字表达式>[ASC|DESC][, < 关键字表达式>[ASC|DESC] …]]
[TOP <数值表达式>[PERCENT]]
[UNION [ALL]<SELECT 命令>]
❖1 使用WHERE条件联接
例19 查询1998年每个月每个员工接收订单的 总额。
例20 查询销往每个国家的总金额。 例21 查询每份订单的公司名称、产品名称。
❖2 使用JOIN联接
FROM <数据源表或视图> [[INNER | LEFT OUTER | RIGHT OUTER | FULL OUTER| CROSS ] JOIN <表名> ON <联接条件>…]
❖ 2 使用DISTINCT|ALL消除重复行 例3 查询哪些州有供应商。
计算机与信息学院
第3章 SQL数据操纵语言
3
第3章 数据操纵语言
3.1.3 使用WHERE子句指定行
使用比较运算符>、<、=、>=、<=、!=、<>
例4 查询定购数量大于10的定单信息。
逻辑运算符AND、OR、NOT
例5 查询要求到货日期在98-5-6或者是98-5-10号
例14 查询产品号为’11’的产品交易发生 的次数和总交易额,平均、最高、最低 交易额。
计算机与信息学院
第3章 SQL数据操纵语言
9
第3章 数据操纵语言
3.1.6 对查询结果分组和筛选
❖1 分组查询结果
GROUP BY子句将查询结果进行分组,分组原 则是按分组列名表的值相等的分为一组。分组 的目的是为了细化集函数的作用对象。如果未 对查询结果分组,则集函数将作用于整个查询
结果,即整个查询结果只有一个函数值 。
例15 查询每个定单的交Βιβλιοθήκη Baidu额。
例16 查询每种产品的交易发生的次数和交易 额,交易量。
计算机与信息学院
第3章 SQL数据操纵语言
10
第3章 数据操纵语言
❖2 对分组结果筛选
使用HAVING短语,使返回的结果只包含满足 条件的组。HAVING短语只能放在GROUP BY分组子句中,和分组一起使用。
计算机与信息学院
第3章 SQL数据操纵语言
12
第3章 数据操纵语言
1.内连接(Inner join)
内连接也叫自然连接,它是组合两个表的常用 方法。自然连接将两个表中的列进行比较,将 两个表中满足连接条件的行组合起来,作为结 果。语法: SELECT 列 FROM 表1 [inner] JION 表2 ON 表1.列=表2.列 试将上面几例改为内联接查询。
3.1.5 使用集函数
❖COUNT(* | [DISTINCT | ALL]<列名>)统计元 组(*)或统计一列中值(列名)的个数
❖SUM([DISTINCT | ALL] <列名>)计算一列值 的总和(该列必须为数值型)
❖AVG([DISTINCT | ALL] <列名>)计算一列值 的平均值(该列必须为数值型)
3.1.4 格式化结果集
❖1 使用AS更改列名
例10 查询所有订单的订单号、产品号和订购该 产品的金额。
❖2使用ORDER BY排序数据
语法:ORDER BY 排序表达式1 [ASCENDING | DESCENDING][,排序表达 式2 [ASCENDING | DESCENDING]…]
例11 对上例查询的结果按订单号排序,同一订 单号的按金额降序排序。
例17 查询交易额超过1000元的定单。
例18 查询单次交易量超过10且交易次数超过 20次的产品。
什么时候该用HAVING筛选条件?其实很简单: 要使用集函数的统计值的就应该用HAVING筛 选,在WHERE子句不能使用集函数。
计算机与信息学院
第3章 SQL数据操纵语言
11
第3章 数据操纵语言
3.1.7 联接查询
计算机与信息学院
第3章 SQL数据操纵语言
6
第3章 数据操纵语言
❖3 使用TOP返回指定行数
使用TOP N(N为整数)返回指定的行,或使用 TOP N PERCENT返回满足查询条件的总记录 的百分比。
例12 查询单价最高的5种商品。
计算机与信息学院
第3章 SQL数据操纵语言
7
第3章 数据操纵语言