澳门永利234555comSQL必知必会 ——– order by、where等

name,name

一、排序检索数据

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

OCRUISERDER
BY子句的职位

在指定一条O奇骏DER
BY子句时,应该保障它是SELECT语句中最后一条子句。如若它不是最后的子句,将会油不过生错误音讯。
通过非选用列举办排序
平凡,O凯雷德DER
BY子句中运用的列将是为显示而挑选的列。不过,实际上并不一定要那样,用非检索的列排序数据是完全合法的。

2.按八个列排序SELECT
prod_id,prod_price,prod_name FROM Products ORDER BY
prod_price,prod_name

澳门永利234555com 1

重大的是驾驭在按七个列排序时,排序的逐一完全按规定进行。换句话说,对于上述例子中的输出,仅在多个行兼备相同的prod_price值时才对成品按prod_name进行排序。即使prod_price列中保有的值都以绝无仅有的,则不会按prod_name排序。

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

澳门永利234555com 2

可以看来,那里的出口与地点的查询同1、分化之处在于OEnclaveDER
BY子句。SELECT清单中指定的是拔取列的周旋地点而不是列名。O君越DESportage BY
2表示按SELECT清单中的第2个列prod_name进行排序。O卡宴DE纳瓦拉 BY
2,3象征先按prod_price,再按prod_name举办排序。
这一技术的显要利益在于不要再行输入列名。但它也有欠缺。首先,不鲜明给出列名有只怕造成错用列名排序。其次,在对SELECT清单进行更改时不难错误地对数码举行排序(忘记对OEvoqueDER
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

澳门永利234555com 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允许数据库管理员在急需时改变那种表现(若是您的数据库包蕴大批量海外语字符,可能必须那样做)。
那边的关键难点是,假诺真的要求转移那种排序依次,用简单的ORAV4DER
BY子句大概做不到。你必须请求数据库管理员的帮助。

SQL必知必会,SQL必知

二、过滤数据

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

警示:WHERE子句的岗位
在同时利用O索罗德DE途乐 BY和WHERE子句时,应该让O科雷傲DER
BY位于WHERE事后,否则将会生出错误。例如:SELECT prod_name,prod_price FROM
Products WHERE prod_price=3.49 ORDER BY prod_name
ASC

澳门永利234555com 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列以字母顺序排序数据)

OPAJERODER
BY子句的职分

在指定一条O牧马人DER
BY子句时,应该保险它是SELECT语句中最后一条子句。如若它不是最终的子句,将会现出谬误信息。
因而非拔取列举行排序
平凡,OTiguanDER
BY子句中利用的列将是为体现而选取的列。不过,实际上并不一定要那样,用非检索的列排序数据是完全合法的。

2.按八个列排序SELECT
prod_id,prod_price,prod_name FROM Products ORDER BY
prod_price,prod_name

澳门永利234555com 5

主要的是明白在按三个列排序时,排序的相继完全按规定进行。换句话说,对于上述例子中的输出,仅在两个行有所相同的prod_price值时才对成品按prod_name举办排序。借使prod_price列中有着的值都是唯一的,则不会按prod_name排序。

3.按列地点排序SELECT
prod_id,prod_price,prod_name FROM Products ORDER BY
2,3 这一个和按多少个列排序结果是千篇一律的,无非就是本来的列名称改成了岗位序号。

澳门永利234555com 6

可以见见,那里的输出与地点的询问同一,差异之处在于OENVISIONDER
BY子句。SELECT清单中指定的是挑选列的绝对地方而不是列名。OPRADODE卡宴 BY
2代表按SELECT清单中的第三个列prod_name举行排序。OHavalDE昂科拉 BY
2,3象征先按prod_price,再按prod_name进行排序。
这一技艺的首要利益在于无须再行输入列名。但它也有通病。首先,不精通给出列名有可能导致错用列名排序。其次,在对SELECT清单进行转移时便于错误地对数据开展排序(忘记对O景逸SUVDER
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

澳门永利234555com 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允许数据库管理员在必要时改变那种表现(倘使您的数据库包括大量外国语字符,可能必须那样做)。
那边的关键难点是,借使的确必要转移那种排序依次,用不难的OPAJERODER
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成立,但价格高于二十七日币,则不检索它。

AND
用在WHERE子句中的关键字,用来指示检索满意全部给定条件的行。
以此事例只包蕴七个AND子句,因而最多有七个过滤条件。可以追加五个过滤条件,各个条件间都要动用AND关键字。
说明:没有ORDER BY子句
为了节约空间,也为了削减你的输入,小编在无数例证里大致了O奥迪Q5DER
BY子句。因而,你的输出完全有大概与书上的出口不雷同。固然重回行的数目接二连三对的,但它们的顺序只怕两样。当然,如若您愿意也可以加上2个OGL450DER
BY子句,它应当置身WHERE子句之后。
2.OR操作符SELECT
vend_id,prod_price,prod_name FROM Products WHERE
vend_id=’DLL01′ OR
vend_id=’BRS01′

此SQL语句检索由任一个点名供应商创立的装有产品的产品名和价格。OKuga操作符告诉DBMS匹配任一条件而不是同时匹配多个标准化。 

澳门永利234555com 8

3.求值依次(AND
O福睿斯)

输入:

SELECT
prod_name, prod_price FROM Products 

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

输出:

澳门永利234555com 9

难题:请看上面的结果。重回的行中有**4行价格小于10**法郎,鲜明,再次回到的行未按预想的展开过滤。为何会如此啊?原因在于求值的逐一。SQL(像多数言语一样)在处理O逍客操作符前,优先处理AND操作符。当SQL看到上述WHERE子句时,它知道为:由供应商B瑞虎S01创造的价格为12日币以上的有所成品,以及由供应商DLL01创制的有着成品,而不管其价格怎么着。换句话说,由于AND在求值进程中优先级更高,操作符被错误地构成了。

缓解方法:

SELECT prod_name, prod_price FROM Products 

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

实则只要用括号括起来就好了

指示:在WHERE子句中运用圆括号
其余时候利用具有AND和OLAND操作符的WHERE子句,都应该使用圆括号鲜明地分组操作符。不要过度珍爱暗中同意求值顺序,即便它的确如您愿意的那么。使用圆括号没有怎么坏处,它能祛除歧义。

4.IN操作符

输入:

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

输出:

澳门永利234555com 10

干什么要利用IN操作符?其独到之处为:

  • 在有不少法定选项时,IN操作符的语法更领会,更直观。
  • 在与其他AND和OOdyssey操作符组合使用IN时,求值顺序更易于管理。
  • IN操作符一般比一组O途乐操作符执行得更快(在上面那几个合法选项很少的例子中,你看不出质量差别)。
  • IN的最大亮点是足以涵盖其余SELECT语句,可以更动态地成立WHERE子句。第三1课会对此开展详尽介绍。

IN
WHERE子句中用来指定要匹配值的清单的主要字,功效与O锐界十一分。

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子句的岗位
在同时利用O帕杰罗DE途胜 BY和WHERE子句时,应该让O奥迪Q5DER
BY位于WHERE其后,否则将会生出错误。例如:SELECT
prod_name,prod_price FROM Products WHERE prod_price=3.49
ORDER BY prod_name ASC

澳门永利234555com 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子句
为了节省空间,也为了削减你的输入,小编在不少例证里大致了O昂科拉DER
BY子句。由此,你的出口完全有只怕与书上的出口不平等。尽管返回行的数码延续对的,但它们的逐条大概两样。当然,倘使您愿意也可以增进一个O中华VDER
BY子句,它应当放在WHERE子句之后。
2.OR操作符SELECT vend_id,prod_price,prod_name
FROM Products WHERE vend_id=’DLL01′ OR
vend_id=’BRS01′

此SQL语句检索由任多个点名供应商成立的具备成品的产品名和价格。OQX56操作符告诉DBMS匹配任一条件而不是同时包容五个标准化。 

澳门永利234555com 12

3.求值各类(AND
ORubicon)

输入:

SELECT prod_name, prod_price FROM Products 

WHERE vend_澳门永利234555com,id = ‘DLL01’ OR vend_id = ‘BRS01’ AND
prod_price >= 10

输出:

澳门永利234555com 13

标题:请看上面的结果。重临的行中有**4行价格低于10**英镑,显明,重回的行未按预想的拓展过滤。为啥会这么啊?原因在于求值的次第。SQL(像多数言语同样)在拍卖O奔驰G级操作符前,优先处理AND操作符。当SQL看到上述WHERE子句时,它知道为:由供应商B汉兰达S01创设的价格为10英镑以上的富有成品,以及由供应商DLL01创建的具备产品,而不管其标价如何。换句话说,由于AND在求值进度中优先级更高,操作符被错误地构成了。

消除方法:

SELECT prod_name, prod_price FROM Products 

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

实质上要是用括号括起来就好了

唤醒:在WHERE子句中使用圆括号
别的时候使用全部AND和O福特Explorer操作符的WHERE子句,都应该利用圆括号显明地分组操作符。不要过度倚重默许求值顺序,即便它真的如您愿意的那么。使用圆括号没有怎么坏处,它能祛除歧义。

4.IN操作符

输入:

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

输出:

澳门永利234555com 14

何以要运用IN操作符?其优点为:

  • 在有诸多合法选项时,IN操作符的语法更精通,更直观。
  • 在与别的AND和OSportage操作符组合使用IN时,求值顺序更便于管理。
  • IN操作符一般比一组O福睿斯操作符执行得更快(在上边那么些合法选项很少的例子中,你看不出品质差距)。
  • IN的最大优点是可以涵盖其余SELECT语句,可以更动态地创设WHERE子句。第贰1课会对此开展详细介绍。

IN
WHERE子句中用来指定要匹配值的清单的机要字,效率与O科雷傲十一分。

5.NOT操作符

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

干什么采纳NOT?对于那里的那种总结的WHERE子句,使用NOT确实没有怎么优势。但在更复杂的子句中,NOT是10分有效的。例如,在与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列以字母逐一排序数据) O奥迪Q3DELacrosse BY子…