where等

相同、排序检索数据

1.排序数据SELECT prod_name
FROM Products ORDER BY prod_name(对prod_name列以字母顺序排序数据)

ORDER
BY子句的职位

当指定同长长的ORDER
BY子句时,应该保证她是SELECT语句被最终一长子句。固然它们不是终极的子句,将会见现出谬误信息。
由此非采用列举行排序
便,ORDER
BY子句被使的列将是也展示假如选拔的排列。然而,实际上并不一定要如此,用非检索的排排序数据是截然合法的。

2.听从多单列排序SELECT
prod_id,prod_price,prod_name FROM Products ORDER BY
prod_price,prod_name

科学技术 1

重中之重的凡领会在依据五只列排序时,排序的次第完全遵照规定举办。换句话说,对于上述例子中的输出,仅以差不五只执行兼备相同的prod_price值时才对成品以prod_name举办排序。如若prod_price列中保有的值都是绝无仅有的,则免相会随prod_name排序。

3.以列地方排序SELECT
prod_id,prod_price,prod_name FROM Products ORDER BY
2,3 这么些和按多独列排序结果是同一的,无非就是是本来的列名称反化了职序号。

科学技术 2

得看来,这里的出口和地点的查询同一,不同之处在于ORDER
BY子句。SELECT清单中指定的是择列的周旋地点而无是列名。ORDER BY
2表示以SELECT清单中之老二个列prod_name进行排序。ORDER BY
2,3表示先照prod_price,再按prod_name举办排序。
即时同一技艺的严重性利益在不要再输入列名。但其也发弱点。首先,不引人注目被闹列名有或导致错用列名排序。其次,在对SELECT清单举行反时轻错地对数据开展排序(忘记对ORDER
BY子句做相应的转移)。最终,假诺展开排序的排列不在SELECT清单中,分明不克以那项技能。

4.指定排序方向SELECT
prod_id,prod_price,prod_name FROM Products ORDER BY
prod_price DESC

SELECT prod_id,prod_price,prod_name FROM
Products ORDER BY prod_price DESC,prod_name

科学技术 3

DESC关键字就使用到直接在该面前的列名。在上例中,只针对prod_price列指定DESC,对prod_name列不点名。由此,prod_price列以降序排序,而prod_name列(在每个价位外)依然服从正式的升序排序。

提个醒:在多独列上降序排序
如果想当差不两只列上开展降序排序,必须对各国一样排列指定DESC关键字。
告小心,DESC是DESCENDING的缩写,这简单只基本点字都得下。与DESC相对的凡ASC(或ASCENDING),在升序排序时方可指定它。但实际上,ASC没有多很用处,因为升序是默认的(假使既未指定ASC也未点名DESC,则使为ASC)。
提拔:区分轻重缓急写及排序依次
当针对文本性数据举办排序时,A与a相同呢?a位于B往日,依旧Z之后?这一个题目非是论战问题,其答案在数据库的装置方法。
在字典(dictionary)排序依次中,A被视为与a相同,这是大部分数据库管理网的默认行为。不过,许多DBMS允许数据库管理员在需要常转这种行为(如若你的数据库含大量外语字符,可能得这样做)。
此的关键问题是,如若实在需要转移这种排序依次,用简短的ORDER
BY子句可能做不交。你不可以不要数据库管理员的帮忙。

老二、过滤数据

1.where语句SELECT
prod_name,prod_price FROM Products WHERE
prod_price=3.49

提个醒:WHERE子句的岗位
在以使ORDER BY和WHERE子句时,应该吃ORDER
BY位于WHERE然后,否则用会师暴发错误。例如:SELECT prod_name,prod_price FROM
Products WHERE prod_price=3.49 ORDER BY prod_name
ASC

科学技术 4

 

2.反省单个值:SELECT
prod_name,prod_price FROM Products WHERE prod_price < 0

3.不般配检查:SELECT
vend_id,prod_name FROM Products WHERE vend_id <>’DLL01′

4.范围值检查:SELECT
prod_name,prod_price FROM Products WHERE prod_price BETWEEN 5 AND
10

5.空值检查: SELECT cust_name
FROM customers WHERE cust_科学技术,email IS NULL

其三、高级数据过滤

1.AND操作符SELECT
prod_id,prod_price,prod_name FROM Products WHERE
vend_id=’DLL01′ AND prod_price <=4

此SQL语句检索由供应商DLL01创制且价格低于等于4加元的具备成品之称呼和价格。这长达SELECT语句被之WHERE子句包含两独标准化,用AND关键字联结在同步。AND指示DBMS只回去满足所有给定条件的执行。如若有产品由于供应商DLL01创设,但价格超越4美元,则无摸它。

AND
为此当WHERE子句被的要字,用来指示检索满足所有给定条件的施行。
夫例子只是包含一个AND子句,由此最好多来个别单过滤条件。能够追加多独过滤条件,每个条件里都使以AND关键字。
说明:没有ORDER BY子句
为节省空间,也以削减而的输入,我当很多例子里大概了ORDER
BY子句。由此,你的输出了有或同书及的输出不平等。尽管回到回行的数据连续针对的,但它的次第可能两样。当然,假若你愿意呢堪添加一个ORDER
BY子句,它应放在WHERE子句后。
2.OR操作符SELECT
vend_id,prod_price,prod_name FROM Products WHERE
vend_id=’DLL01′ OR
vend_id=’BRS01′

此SQL语句检索由任一个点名供应商做的有着成品之产品名和价格。OR操作符告诉DBMS匹配任一条件而不是还要配合两单原则。 

科学技术 5

3.求值逐项(AND
OR)

输入:

SELECT
prod_name, prod_price FROM Products 

WHERE
vend_id = ‘DLL01’ OR vend_id = ‘BRS01’ AND prod_price >=
10

输出:

科学技术 6

题材:请圈下边的结果。重返的履行被有**4施行价低于10**法郎,分明,重回的行未按预期的开展过滤。为啥会这样啊?由在于求值的逐条。SQL(像多数言语同样)在拍卖OR操作符前,优先处理AND操作符。当SQL看到上述WHERE子句时,它领会为:由供应商BRS01创建的价位为10卢比以上的有着成品,以及由供应商DLL01创造的装有产品,而未任那价如何。换句话说,由于AND在求值过程被先行级更胜,操作符被误地构成了。

解决情势:

SELECT prod_name, prod_price FROM Products 

WHERE (vend_id =
‘DLL01’ OR vend_id = ‘BRS01’) AND
prod_price >= 10

骨子里假如用括号括起来就是吓了

唤醒:在WHERE子句被采纳圆括号
别时候利用有AND和OR操作符的WHERE子句,都应当下圆括号明确地分组操作符。不要过分倚重默认求值顺序,即使它实在如您期望之那么。使用圆括号没有什么坏处,它会解除歧义。

4.IN操作符

输入:

SELECT
vend_id,prod_name,prod_price FROM Products
WHERE
vend_id IN (‘DLL01′,’BRS01’)
ORDER
BY prod_name

输出:

科学技术 7

怎而动IN操作符?其独到之处也:

  • 以出过多合法选项时,IN操作符的语法更亮,更直观。
  • 于和其他AND和OR操作符组合以IN时,求值顺序更易管理。
  • IN操作符一般比同一组OR操作符执行得重新快(在面那合法选项很少之例证中,你看不暴发性能差别)。
  • IN的最深长是可涵盖其他SELECT语句,可以再动态地建立WHERE子句。第11课会对斯开展详尽介绍。

IN
WHERE子句中用来指定要配合配值的清单的要害字,效能跟OR非凡。

5.NOT操作符

SELECT
prod_name FROM Products
WHERE NOT
vend_id = ‘DLL01’
ORDER
BY prod_name;

何以拔取NOT?对于此的这种简易的WHERE子句,使用NOT确实无呀优势。但以重新复杂的子句中,NOT是坏有效的。例如,在和IN操作符联合使用时,NOT能够卓殊简单地摸有同规则列表不兼容的施行。

作者:今孝
出处:http://www.cnblogs.com/jinxiao-pu/p/6814043.html
正文版权归作者和天涯论坛共有,欢迎转载,但未经作者同意要保留那些段子表明,且在随笔页面明显地方让闹原文连接。

道好就是点单推荐把!

Leave a Comment.