论坛首页 入门技术论坛

oracle辅导(1--2)

浏览 5288 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-03  

sql脚本,也就是在文件中写有sql语句的文件,可以在sqlplus中运行。

引入sql脚本

sqlplus 用户名/密码 @sql脚本.sql

(注意:在用户名密码输入结束后一定要加空格然后再写@sql脚本)

Oracle中的空值会当作无穷大处理,其实空值根本就不会存储,只是看作是无穷大。

Oracle中控制处理函数 NVL(字段名,值),这个字段中的空值替换为指定值,如果不为空,则会返回其原值。

例:select (salary*12)*(NVL(commission_pct,0)/100+1) salary,first_name

from s_emp;

 

distinct关键字,去掉重复行(这个关键字会处发排序操作)

例: select distinct dept_id,title from s_emp;

 

注意:distinct,关键字之后会对from之前的字段进行排重操作。

 

column命令(这是个sqlplus命令)

 

column命令 列格式的定义

column 目标列名 查看这个类是否定义了格式

 

column 目标列名 format a.. 设置列宽

 

column last_name heading 'Employee|Name'(设置题头) FORMAT A15

这其中的'|'是换行符

 

column salary justify left format $99,990.00(定义数字显示格式)

注意:如果不满足显示的格式,就会把数据显示为"#"

 

column 列名 clear (清除列格式定义)

 

注意:只有sqlplus命令才有简写,并且在使用sqlplus命令时结尾也不能加分号。

 

选择操作

 

order by 排序子句 ASC(默认,升序) DESC(降序)

 

order by 目标列名(别名) 排序顺序(不写排序顺序,会默认为升序排序)

 

例:select first_name from s_emp order by first_name;

    select first_name from s_emp order by first_name desc;

 

注意:升序空值在结果的末尾,降序空值在结果的最前面。

 

where子句

 

where子句使用在 select ... from ... 后面,用来选择所需(符合条件的)的记录

 

where后面跟的是表达式 也就是 XXX=XXX XXX between X and X  XXX inXXX

like '...' 通配查询

 

between ... and ... ,表示结果在这之间,between and是一个闭区间,

也就相当于... <= ... and ... >= ...

!=<>^=,这三个都标识不等于<=>==这些运算符都可以使用。

... in (va1,val2,...) 判断结果是否在这个枚举中存在

like '...' 字符串通配查询,'%'表示多个字符,'_',表示一个字符。

... and ... 表示只有两个条件同时满足

... or ... 表示条件只要满足其中只一就可以

all(数据或子查询)

select first_name from s_emp where salary<>all(2500,1500);

all中的数据和纪录中的值全部一致,一般使用!=all(),来过滤在某个范围纪录

 

not .....,则是可以与以上的条件产生反效果。

空值会对not in造成影响,也就是不等于任何值,但是空值例外。

... is null 使用来判断值是不是空。

转义,使用escape定义转义符 'S\_%' escape '\',使用转义,可以避免和运算符相同的字符的查询

例:

select table_name from user_tables where table_name like 'S\_%' escape '\'

 

注意:Oracle中的字符串是严格区分大小写的。

 

1.注意数据类型,数字类型直接写,字符用'......' ,缺省格式的Date可以用'......',只有别名才用" "包含。

2.选择合适的运算符

 

   发表时间:2008-12-31  
恩。不错学习了;
0 请登录后投票
   发表时间:2009-01-09  

写的很不错!对那些初学者有很大的帮助
0 请登录后投票
   发表时间:2009-02-05   最后修改:2009-02-05

恩!~~~太好了,我就是一个初学者,感觉总结的 精简扼要,还真有些是不会的。
谢谢了!~~~

not in 举个例子,就用scott 了  :-)

 

源表:

SQL> select empno,ename,sal,comm from emp;

 

     EMPNO ENAME                       SAL       COMM
---------- --------------------         ----------   ----------
      7369 SMITH                       800
      7499 ALLEN                      1600         300
      7521 WARD                      1250         500
      7566 JONES                      2975
      7654 MARTIN                    1250        1400
      7698 BLAKE                      2850
      7782 CLARK                      2450
      7788 SCOTT                     3000
      7839 KING                        5000
      7844 TURNER                   1500           0
      7876 ADAMS                     1100
      7900 JAMES                      950
      7902 FORD                       3000
      7934 MILLER                    1300

 

 

 

使用not in 查询的结果:

SQL> select empno,ename,sal,comm from emp where comm not in (300,1000);

 

     EMPNO ENAME                    SAL       COMM
---------- --------------------      ---------- ----------
      7521 WARD                       1250        500
      7654 MARTIN                     1250       1400
      7844 TURNER                     1500          0

 

 

 

 

使用 in 查询的结果:

SQL> select empno,ename,sal,comm from emp where comm in (300,1000);

 

     EMPNO ENAME                       SAL       COMM
---------- --------------------       ---------- ----------
      7499 ALLEN                      1600         300

 

 

 

看来,凡是 [COMM] 列中为null的值都没有查到,因此 :无论是not in 还是 in 对空值都不起作用
0 请登录后投票
   发表时间:2009-05-13  
oracle版没撒人气。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics