当前位置:文章写作网 >日记 >日记 >oracle学习笔记-pl sql select

oracle学习笔记-pl sql select

2008-10-28 10:48 作者:tshfang 阅读量:8753 推荐25次 | 我要投稿

SQL的主要功能之一是实现数据库查询。

1、简单SQL查询

select t.*

from LSBZDW t

where T.LSBZDW_DWBH='01'

(1) SELECT语句的第一部分指名要选取的列。上述例子是选择了所有记录。

(2) SELECTT语句的第二部份指明要从哪个(些)表中查询数据。在此例中,要查询的表名为LSBZDW,表的别名是t 。

(3) 最后,SELECT语句的WHERE子句指明要选择满足什么条件的记录。在此例中,查询条件为只有编号列的值为01的记录才被选取。

2、操作多个表

到现在为止,只尝试了用一句SQL查询从一个表中取出数据。可以用一个SELECT语句同时从多个表中取出数据,只需在SELECT语句的FROM从句中列出要从中取出数据的表名称即可:

select * from

MATERIALS,MATERIALSORTS

这个SELECT语句执行时,同时从表MATERIALS和表MATERIALSORTS 中取出数据。从表MATERIALS中取出所有物料,从表MATERIALSORTS 中取出所物料分类。从结果中可以看出,查询出的数据没有实际意义。

要从两个表中选出有意义的记录组合,需要通过建立关联。

表MATERIALS有一个名为MATERIALSORTid的字段,表明此物料属于那个物料分类。表MATERIALSORTS 有一个名为MATERIALSORTid的字段,包含每个物料分类的唯一标识。在字段两个表的MATERIALSORTid之间建立一个关连,查询出的结果就是有意义的。

select MATERIALSORTNAME as 分类名称,materialname as 物料名称

from MATERIALS join MATERIALSORTS on MATERIALS.MATERIALSORTid=MATERIALSORTS.MATERIALSORTid

当这个SELECT语句执行时,每个物料都将与正确的物料分类相匹配。

为了区别表两个中相同的字段名MATERIALSORTid,每个字段名前面都加上了表名前缀

as关键字的作用是字段别名,在查询结果窗口将显示分类名称,物料名称而不是MATERIALSORTNAME和materialname

如果只想查询一种物料属于那种分类,只需在上面的语句后面加上where条件

select MATERIALSORTNAME as 分类名称,materialname as 物料名称

from MATERIALS join MATERIALSORTS on MATERIALS.MATERIALSORTid=MATERIALSORTS.MATERIALSORTid

where materialname='螺杆'

3、操作字段

可以通过执行运算,来操作从一个表返回的字段值。

SELECT price*2 FROM MATERIALS

当这个查询执行时,每种物料的价格从表中取出时都会加倍。但是,通过这种途径操作字段不会改变存储在表中的书价。对字段的运算只会影响SELECT语句的输出,而不会影响表中的数据。为了同时显示书的原始价格和涨价后的新价格,你可以使用下面的查询:

SELECT price as 原始价格, price*2 as 新价格 FROM MATERIALS

可以使用大多数标准的数学运算符来操作字段值,如加(+),减(-),乘(*)和除(/)。

还可以使用连接运算符来连接两个字符型字段,||操作符是pl sql的字符连接函数:

select materialname||specs from MATERIALS

在这个例子中,把字段materialname和字段specs粘贴在一起。即物料和规格型号在一起显示了。

4、排序查询结果

可以操纵一个SQL查询结果的顺序。通过使用ORDER BY子句,可以强制一个查询结果按升序排列: select materialname from MATERIALS ORDER BY materialname

当这个SELECT语句执行时,物料名字的显示将按字母顺序排列。ORDER BY子句将物料名字按升序排列。

可以同时对多个列使用ORDER BY子句:

select materialname,specs from MATERIALS ORDER BY materialname,specs

这个查询首先把结果按materialname字段进行排序,然后按字段specs排序。

select materialname,specs from MATERIALS ORDER BY materialname,specs desc

这个查询首先把结果按materialname字段进行升序排序,然后按字段specs降序排序。

不是特别需要时,不要对查询结果进行排序,因为服务器完成这项工作要费些力气。

5、取出互不相同的记录

一个表有可能在同一列中有重复的值。如果一个字段有重复的值,可以使用关键字DISTINCT关键字使每个值只被选取一次:

SELCET DISTINCT materialname FROM MATERIALS

当这个SELECT语句执行时,查询结果将过滤掉重复记录。

如同ORDER BY子句一样,强制服务器返回互不相同的值也会增加运行开销。不是必须的时候不要使用关键字DISTINCT。

其他人在看啥

    《oracle学习笔记-pl sql select》的评论 (共 0 条)

    • Guest::peifu