一、检索数据
如何使用SELECT语句检索一个或多个数据列。
1.1 检索单个列
<code>SELECT prod_name </code>
<code>FROM Productions;</code>
注意:检索出来的数据是没有排序的
1.2 检索多个列
<code>SELECT prod_id,prod_name,prod_price</code>
注意:SQL语句一般返回原始的、无格式的数据。
1.3 检索所有列
<code>SELECT * FROM Productions;</code>
<code>通配符*表示匹配任意字符任意次数。</code>
1.4 检索不同的值(相同的值不显示)
<code>SELECT DISTINCT vend_id</code>
分析:返回唯一的vend_id行
警告:如果检索多个列,则使用DISTINCT关键字则会把但凡只要有一列的值不同就会检索出来
1.5 限制返回结果
说明:指定返回前5行
<code>--DB2的SQL语句</code>
<code>SELECT prod_name</code>
<code>FROM Products</code>
<code>FETCH FIRST 5 ROW ONLY;</code>
<code>#Oracle(基于ROWNUM来计算行)</code>
<code>WHERE ROWNUM<=5;</code>
<code>#MySQL,PostgreSQL,SQLite</code>
<code>LIMIT 5;</code>
说明;指定从第5行开始返回5行
<code>LIMIT 5 OFFSET 5;</code>
<code>#Mysql,MariaDB中的快捷方式</code>
<code>LIMIT 5,5;</code>
警告:第一个被检索出来的行是第0行,以此类推
1.6 使用注释
说明:用于注释说明或者用于测试调试
<code>--</code>
<code>#</code>
<code>/* */</code>
二、排序检索数据
2.1 排序检索数据
说明:使用SELECT和ORDER BY子句,根据需要检索数据。
理论:关系数据库设计理论认为,如果不明确规定排序的顺序,则不应该假定检索出来的数据的顺序有任何意义。
概念:子句(Clause)
一个子句通常由一个关键字和数据组成。
<code>ORDER BY prod_name;</code>
注意:
<code> </code><code>1.DBMS软件将会对prod_name列以字母顺序排序数据。</code>
<code> </code><code>2.ORDER BY 必须是最后一条子句,不然会报错</code>
<code> </code><code>3.使用非检索出的列进行排序也是可以的</code>
2.2 按多个列排序
说明;代码将会检索3个列,并按其中的两个列对结果进行排序-先按价格,再按名称排序
<code>SELECT prod_id,prod_price,prod_name</code>
<code>ORDER BY prod_price,prod_name;</code>
理解:有相同的prod_price,才会按prod_name排序
2.3 按列位置排序
说明:不仅仅可以按列名排序,也可以按照列位置排序
例子中先按第二个列排序再按第三个列排序
<code>ORDER BY 2,3;</code>
2.4 指定排序的方向
说明:默认升序排序,也可以降序排序,需使用DESC关键字。
<code>--降序排序</code>
<code>ORDER BY prod_price DESC;</code>
说明:多个列排序
<code>ORDER BY prod_price DESC,prod_name;</code>
注意:
1.DESC只应用于其前面的列名进行降序排序而后面的列名将不应用
2.默认情况下Z与z是等同的,除非管理员自行改变设置
三、过滤数据
3.1 使用WHERE子句
说明:使用SELCT语句的WHERE子句指定搜索条件,用来检索出管理员需要的数据。
<code>SELECT prod_name,prod_price</code>
<code>WHERE prod_price=5;</code>
注意:会输出所有等于5的数据类型
提示:
两种过滤方式:SQL过滤与应用过滤
数据不仅仅可以在数据层过滤也可以在应用层过滤。但是,这种做法通过不妥。让客户端处理数据会影响应用的性能以及占用网络带宽。
警告:在同时使用WHERE子句和ORDER BY子句时,需要将ORDER BY位于WHERE子句的后面。
3.2 WHERE子句操作符
<code>= < <= </code>
<code>! 不小于</code>
<code>> >= !> </code>
<code><> 不等于</code>
<code>!= 不等于</code>
<code>BETWEEN 在指定的两个值之间</code>
<code>IS NULL 为NULL值</code>
3.2.1 检查单个值
<code>WHERE prod_price <=100;</code>
3.2.2 不匹配检查
<code>SELECT vend_id,prod_name</code>
<code>WEHRE vend_id <></code><code>'china007'</code>
3.2.3 范围内查找
<code>WHERE prod_price BETWEEN 10 AND 15;</code>
3.2.4 空值检查
无值(NULL)--> no value
注意:它与字段为0,空字符或包含空格不同
说明:确定一个值为空,不能简单地检查= null,SELECT中可以使用 IS NULL来确定具有null值的列。
<code>SELECT cust_name </code>
<code>FROM CUSTOMERS</code>
<code>WHERE cust_email IS NULL;</code>
本文转自 PowerMichael 51CTO博客,原文链接:http://blog.51cto.com/huwho/1974431,如需转载请自行联系原作者