ITPub博客

首页 > Linux操作系统 > Linux操作系统 > OCP 复习笔记之PL/SQL (2)

OCP 复习笔记之PL/SQL (2)

原创 Linux操作系统 作者:space6212 时间:2019-07-04 20:12:05 0 删除 编辑

最近打算把9i 的OCP教程看一遍,作一些简单的笔记,作为备忘。

PL/SQL看似简单,但实际使用起来还是有很多技巧和误区的。以下记录的是复习过程中想到的、和容易出现错误的地方。

这些东西在教程大部分是没有记载的。

第二章:查询特定数据及排序


2.1 WHERE子句

1) WHERE子句的组成

WHERE子句由三部分组成:列名、比较符、列名或常量或其他值。

【注意】在WHERE子句中不能用字段别名

2) WHERE中的字符串

字符串是由单引号括起来的,它是大小写敏感的。

3) 日期

4) 操作比较符

Ø !=^=<>含义一样,都表示不等于。

Ø Between...and...相当于a>= and a<=,在oracle内部,在实际执行时会转换为:a>= and a<=

Ø In可用于任意数据类型。在oracle内部,in操作会被转换为a= or a= or ...。用in操作性能不一定高。

5) LIKE比较符

Ø %

匹配任意个字符。

Ø _

匹配单个字符

Ø LIKE只能用于字符类型的比较,但很多数字类型和日期类型也可能用,是因为oracle在执行时进行了数据类型的隐式转换。

6) LIKE的转义

当用LIKE进行查询时,如果查询条件包含有%_,可以用ESCAPE转义:

Select * from t where c1 like ‘%a_%’escape ‘’;

也可以把’’换成其他字符,如’y’,只需要把ESCAPE子句的相应转义字符也换成’y’

Select * from t where c1 like ‘%ay_%’ escape ‘y’;

【注意】ESCAPE后连接的转义符必须是长度为一的字符。

7) 运算符的优先级

数学运算符->连接运算符(||)->比较运算符(=、><)->is nulllikein->[not] between...and...->not 逻辑条件->and 逻辑符->or 逻辑符

2.2 ORDER BY子句

1) 升序和降序

ASC:升序,是默认的排序方式。排序方式是:数值类型的话是从小到大、日期是从早期到晚期、字符类型是从AZ升序排序NULL会排在最后。(可以认为null为无穷大)

DESC:降序。排序方式刚好与ASC相反;降序排序NULL值会排在最前面

2) ORDER BY子句的位置

ORDER BY 子句只能放在SQL语句的尾部,且子查询里不能出现ORDER BY子句(作为数据源时可以出现order by,否则不能在子查询中出现order by)。

SQL> select * from (select * from dual order by 1);--作为数据源,可以用order by

SQL> select * from dual where dummy in (select dummy from dual order by 1);--作为子查询,不可以用order by,否则出错.

3) ORDER BY子句后接的可以是列名、别名、数字

4) 如果sql用到distinct时使用order by,则排序的列必须包含在select列表中 ,否则就会出现ORA-01791: 不是 SELECTed 表达式。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/231499/viewspace-63769/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2005-01-25

  • 博文量
    245
  • 访问量
    163410