前言:
现在我们对“sql的查找算法”都比较重视,我们都需要学习一些“sql的查找算法”的相关内容。那么小编也在网上网罗了一些有关“sql的查找算法””的相关内容,希望各位老铁们能喜欢,朋友们一起来了解一下吧!本篇围绕着SELECT语法重点为大家讲解检索数据、排序检索数据相关内容。
01 检索数据
最经常使用的SQL语句大概就是SELECT语句了,它的用途是从一个或多个表中检索信息。
使用SELECT检索数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。
数据库术语
# SELECT 列名称 FROM 表名称
# SELECT * FROM 表名称
示例:SELECT column_name,column_name FROM table_nameSELECT * FROM table_name
检索单个列
示例:SELECT prod_name FROM Products
分析:利用SELECT语句从Products表中检索一个名为prod_name的列,所需的列名写在SELECT关键字之后,FROM关键字指出从哪个表中检索数据。
检索多个列
要想从一个表中检索多个列,仍然使用相同的SELECT语句。唯一的不同是必须在SELECT关键字后给出多个列名,列名之间必须以逗号分隔。
示例:SELECT prod_id, prod_name, prod_price FROM Products
分析:与前一个例子一样,这条语句使用SELECT语句从表Products中选择数据。在这个例子中,指定了3个列名,列名之间用逗号分隔。
检索所有列
检索所有的列而不必逐个列出它们,在实际列名的位置使用星号(*)通配符。
示例:SELECT * FROM Products
分析:如果给定一个通配符(*),则返回表中所有列。
检索不同的值
SELECT语句返回所有匹配的行,如果你不希望每个值每次都出现,该怎么办?
示例:SELECT vend_id FROM Products
分析:检索Products表中所有产品供应商的ID。
Products表中有9种产品,如何检索出不同的值?
示例:SELECT DISTINCT vend_id FROM Products
分析:SELECT DISTINCT vend_id告诉DBMS只返回不同(具有唯一性)的vend_id行,如果使用DISTINCT关键字,它必须直接放在列名的前面。
限制结果
SELECT语句返回指定表中所有匹配的行,很可能是每一行。如果你只想返回第一行或者一定数量的行,该怎么办呢?
①在SQL Server中使用SELECT时,可以用TOP关键字来限制最多返回多少行。
示例:SELECT TOP 5 prod_name FROM Products
分析:上面代码使用SELECT TOP 5语句,只检索前5行数据。
②如果你使用的是DB2,就得使用下面这样的DB2特有的SQL语句。
示例:SELECT prod_name FROM Products FETCH FIRST 5 ROWS ONLY
分析:FETCH FIRST 5 ROWS ONLY就会按字面的意思去做的(只取前5行)。
③如果你使用Oracle,需要基于ROWNUM(行计数器)来计算行。
示例:SELECT prod_name FROM Products WHERE ROWNUM <=5
④如果你使用MySQL、MariaDB、PostgreSQL或者SQLite,需要使用LIMIT子句。
示例:SELECT prod_name FROM Products LIMIT 5
分析:LIMIT 5指示MySQL等DBMS返回不超过5行的数据。
02 排序检索数据
排序数据
SQL语句返回某个数据库表的单个列,其输出内容并没有特定的顺序。检索出的数据并不是随机显示的,一般将以它在表中出现的顺序显示,这有可能是数据最初添加到表中的顺序。
如果数据随后进行过更新或删除,那么这个顺序将会受到DBMS重用回收存储空间方式的影响。
为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。
示例:SELECT prod_name FROM Products ORDER BY prod_name
分析:除了指示DBMS软件对prod_name列以字母顺序排序数据的ORDER BY子句外,这条语句与前面的语句相同。
按多个列排序
要按多个列排序,只须指定这些列名,列名之间用逗号分开即可。
示例:SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price, prod name
分析:代码检索3个列,并按其中两个列对结果进行排序,首先按价格,然后按名称排序。按多个列排序时,排序的顺序完全按规定进行。
按列位置排序
除了能用列名指出排序顺序外,ORDER BY还支持按相对列位置进行排序。
示例:SELECT prod_id, prod_price, prod_nameFROM Products ORDER BY 2, 3
分析:ORDER BY 2表示按SELECT清单中的第二个列prod_price进行排序。ORDER BY 2, 3表示先按prod_price,再按prod_name进行排序。
指定排序方向
数据排序不限于升序排序(从A到Z),这只是默认的排序顺序。还可以使用ORDER BY子句进行降序(从Z到A)排序。为了进行降序排序,必须指定DESC关键字。
示例:SELECT prod_id, prod_price, prod_nameFROM Products ORDER BY prod_price DESC
分析:DESC关键字只应用到直接位于其前面的列名。如果想在多个列上进行降序排序,必须对每一列指定DESC关键字。
按指定字符串顺序排序
有时需要按照指定字符串顺序排序,根据检索条件把检索结果排序。SQLServer的CHARINDEX语法可以实现对字段按照指定的顺序排序。
示例:SELECT id,status FROM Test WHERE type='lu'order by charindex(status, 'YWNF'), id desc
分析:查询type='lu'的数据,⾸先按照状态Y,W,N,F 排序,然后根据id 降序排列。
以上就是今天分享的全部内容,下期围绕SQL的语法重点为大家介绍过滤数据、高级过滤数据以及用通配符进行过滤。我们下期见!
整理不易,点赞、转发帮忙点一下~
标签: #sql的查找算法