网站首页 > 知识剖析 正文
本篇围绕着SELECT语法重点为大家讲解检索数据、排序检索数据相关内容。
01 检索数据
最经常使用的SQL语句大概就是SELECT语句了,它的用途是从一个或多个表中检索信息。
使用SELECT检索数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。
数据库术语
# SELECT 列名称 FROM 表名称
# SELECT * FROM 表名称
示例:
SELECT column_name,column_name FROM table_name
SELECT * 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_name
FROM 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_name
FROM 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含义 SQL含义
- 下一篇: 2天!零基础快速自学SQL(从零开始超级详细)不难,拿走不谢
猜你喜欢
- 2024-11-09 SQL学习篇 | 对比Excel Power Query学习SQL
- 2024-11-09 SQL基础知识学习(1) sql零基础教程视频
- 2024-11-09 最方便的在线SQL学习环境——Oracle Live SQL
- 2024-11-09 SQL:SQL 原理学习脉络 sql的理解
- 2024-11-09 分享一份Oracle官方文档学习路线图
- 2024-11-09 0基础学习SQL入门站点推荐 sql初学者指南
- 2024-11-09 SQL学习笔记 sql语句学习
- 2024-11-09 SQL 学习 -alex xu 你有没有想过 learning sql
- 2024-11-09 Sql学习:sql基础操作筛选行的查询
- 2024-11-09 SQL 语法 sql 语法分析
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)