SQL必知必会 ——– order澳门永利娱乐总站 by、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子句可能做不到。你必须请求数据库管理员的扶助。

SQL必知必会,SQL必知

二、过滤数据

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.排序数据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

澳门永利娱乐总站 5

最紧要的是理解在按七个列排序时,排序的逐一完全按规定举行。换句话说,对于上述例子中的输出,仅在三个行兼备相同的prod_price值时才对成品按prod_name进行排序。要是prod_price列中有所的值都是绝无仅有的,则不会按prod_name排序。

3.按列地方排序SELECT
prod_id,prod_price,prod_name FROM Products ORDER BY
2,3 那几个和按多个列排序结果是平等的,无非就是理所当然的列名称改成了职分序号。

澳门永利娱乐总站 6

可以看看,那里的输出与地方的查询同一,不相同之处在于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

澳门永利娱乐总站 7

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.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匹配任一条件而不是同时匹配多少个规范。 

澳门永利娱乐总站 8

3.求值各样(AND
OR)

输入:

SELECT
prod_name, prod_price FROM Products 

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

输出:

澳门永利娱乐总站 9

题目:请看上边的结果。重返的行中有**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

输出:

澳门永利娱乐总站 10

怎么要选取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
正文版权归小编和今日头条共有,欢迎转发,但未经小编同意必须保留此段声明,且在篇章页面显著地方给出原文连接。

以为好就点个推荐把!

二、过滤数据

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

澳门永利娱乐总站 11

 

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匹配任一条件而不是还要同盟四个规范。 

澳门永利娱乐总站 12

3.求值一一(AND
OR)

输入:

SELECT prod_name, prod_price FROM Products 

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

输出:

澳门永利娱乐总站 13

问题:请看上边的结果。再次来到的行中有**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

输出:

澳门永利娱乐总站 14

怎么要动用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.bkjia.com/Mysql/1209852.htmlwww.bkjia.comtruehttp://www.bkjia.com/Mysql/1209852.htmlTechArticleSQL必知必会,SQL必知 一、排序检索数据 1.排序数据
: SELECT prod_name FROM Products ORDER BY prod_name
(对prod_name列以字母逐一排序数据) ORDER BY子…

相关文章