学SQL(Select,order by,where(1))

Select

检索单独列

Select prod_name
from products;

这是一个无无序的查询。

注:SQL语句自动忽略“空白”,不区分大小写。

检索多列

Select prod_id,prod_name,prod_price
from products;

检索所有列

Select * from products;

Select Distinct

Select vend_id
from products;
Select distinct vend_id
from products;

下面的语句只返回特定(唯一)的vend_id行,需要注意的是下面这种情况:

select distinct vend_id,prod_price...

将检索所有行,除非两个指定的行都是特定的,即distinct将应用于所有列。

完全限定引用"."

Select products.prod_name
from crashcourse.products;

prod_name来自products表;products来自crashcourse数据库。

注释

“--”放在一行开头表示注释。

“/*”开始注释;“*/”结束注释。


Order by

--按照prod_name对检索结果以字母顺序排序(默认升序a-z)
Select prod_name
from products
order by prod_name;

注:也可按未检索列进行排序。

--按多列排序(price由低到高,prod_name由a到z)
Select prod_id,prod_name,prod_price
from products
order by prod_price,prod_name;

多列检索时:只有当price列有重复时,按照name再排序,否则name排序无意义。

--按序号排序:按照检索的第二列和第三列排序
Select prod_id,prod_price,prod_name
from products
order by 2,3;
--降序排列1
Select prod_id,prod_price,prod_name
from products
order by prod_price DESC;
--降序排列2
Select prod_id,prod_price,prod_name
from products
order by prod_price DESC,prod_name;

DESC关键词只对直接位于它们前面的列名起作用,若要在多列上降序,需要确保每个列都有自己的DESC关键字。

注:在字典(dictionary)中,A等同于a。(管理员也可以更改这种规则)


Where(1)

where子句用于定义搜索条件(search criteria)/过滤条件(filter condition)。

Select prod_name,prod_price
from products
where prod_price = 2.50;

注:同时使用order by与where子句时,需要确保order by出现在where 子句后面。

where子句的运算符

运算符 描述
= 相等性
<>或!= 不等性
< 小于
<= 小于或等于
> 大于
>= 大于或等于
between 在两个指定的值之间

示例:

--等于
select prod_name,prod_price
from products
where prod_name='Fuses';
select prod_name,prod_price
from products
where prod_name='fuses';/*结果与上一条select不同*/
--小于
select prod_name,prod_price
from products
where prod_price< 10;
--小于或等于
select prod_name,prod_price
from products
where prod_price<= 10;
--不等于
select vend_id,prod_name
from products
where vend_id<>1003;/*“<>”的含义是小于或者大于*/
select vend_id,prod_name
from products
where vend_id!=1003;/*“!=”的含义是不等于*/
--检查范围(值或日期)
select prod_name,prod_price
from products
where prod_price between 5 and 10;
--检查null
select prod_name
from products
where prod_price is null;

注:字符串数据类型需要使用引号,数值列不需要使用;

       由于未知(unknown)的特殊含义,在过滤匹配或不匹配的情况时不会返回具有NULL值的行。

 

参考文献:《Oracle PL/SQL 必知必会》[美] Ben Forta 著 傅强 译 (第4章~第6章(31~63页))。

 

posted @ 2018-07-25 00:07  六日  阅读(2395)  评论(0编辑  收藏  举报