SQL必知必会第4版

1.虽然 SQL 是不区分大小写的,但是表名、 列名和值可能有所不同(这有赖于具体的 DBMS 及其如何配置)。

2.1使用通配符有一个大优点。由于不明确指定列名(因为星号检索每一 列),所以能检索出名字未知的列。(SELECT * FROM product)

2.2使用 DISTINCT 关键字,指示数据库只返回不同 的值。如果使用 DISTINCT 关 键字,它必须直接放在列名的前面。

2.3DISTINCT 关键字作用于所有的列,不仅仅是跟在其后的那一列。例 如,你指定 SELECT DISTINCT vend_id, prod_price,除非指定的 两列完全相同,否则所有的行都会被检索出来。

2.4SELECT * FROM product limit 1,2;第一个参数指定返回的第一条记录行的偏移量,第二个参数指定返回的最大记录行数。

2.5ORDER BY(在指定一条 ORDER BY 子句时,应该保证它是 SELECT 语句中最后一 条子句。如果它不是最后的子句,将会出现错误消息。)

3.1ORDER BY (通常,ORDER BY 子句中使用的列将是为显示而选择的列。但是,实 际上并不一定要这样,用非检索的列排序数据是完全合法的。)

3.2按多个列排序 SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price, prod_name;仅在多个行具有相同的 prod_price 值时 才对产品按 prod_name 进行排序。如果 prod_price 列中所有的值都是 唯一的,则不会按 prod_name 排序。

3.3按列位置排序,除了能用列名指出排序顺序外,ORDER BY 还支持按相对列位置进行排序。

SELECT prod_id, prod_price, prod_name FROM Products ORDER BY 2, 3;

这一技术的主要好处在于不用重新输入列名。但它也有缺点。首先,不明 确给出列名有可能造成错用列名排序。其次,在对 SELECT 清单进行更改 时容易错误地对数据进行排序(忘记对 ORDER BY 子句做相应的改动)。 最后,如果进行排序的列不在 SELECT 清单中,显然不能使用这项技术。

3.4指定排序方向

数据排序不限于升序排序(从 A 到 Z),这只是默认的排序顺序。还可以 使用 ORDER BY 子句进行降序(从 Z 到 A)排序。为了进行降序排序, 必须指定 DESC 关键字。

SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price DESC, prod_name;在上例中,只对prod_price 列指定 DESC,对 prod_name 列不指定。因此,prod_price 列以降序排 序,而 prod_name 列(在每个价格内)仍然按标准的升序排序。

4.1过滤数据 WHERE关键字

在同时使用 ORDER BY 和 WHERE 子句时,应该让 ORDER BY 位于 WHERE 之后,否则将会产生错误。

4.2WHERE 子句操作符

4.2.1

何时使用引号

如果仔细观察上述 WHERE 子句中的条件,会看到有的值括在单引号内, 而有的值未括起来。单引号用来限定字符串。如果将值与字符串类型的 列进行比较,就需要限定引号。用来与数值列进行比较的值不用引号。

4.2.2范围值检查

BETWEEN AND

4.2.3空值检查

确定值是否为 NULL,不能简单地检查是否= NULL。SELECT 语句有一个 特殊的 WHERE 子句,可用来检查具有 NULL 值的列。这个 WHERE 子句就 是 IS NULL 子句。

通过过滤选择不包含指定值的所有行时,你可能希望返回含 NULL 值 的行。但是这做不到。因为未知(unknown)有特殊的含义,数据库 不知道它们是否匹配,所以在进行匹配过滤或非匹配过滤时,不会返 回这些结果。 过滤数据时,一定要验证被过滤列中含 NULL 的行确实出现在返回的 数据中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梓宇^-^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值