1.字符串 是匹分大小写的,在使用时要加引号。 在指定别名时,引号可以加,也可以不加。 当含有空格、特殊字符时,一定要加引号。 不加引号时,显示都为大写,加上引号后,就是按所写的显示了。 在使用字符串时,要使用单引号。 在写别名时,要使用双引号。
                1.字符串 
    是匹分大小写的,在使用时要加引号。 
    在指定别名时,引号可以加,也可以不加。 
    当含有空格、特殊字符时,一定要加引号。 
    不加引号时,显示都为大写,加上引号后,就是按所写的显示了。 
    在使用字符串时,要使用单引号。 
    在写别名时,要使用双引号。
2.滤空函数:nvl(表达式, 当表达式为空时使用的值) 
    select empno, ename, sal, sal * 12 as 年薪, nvl(comm, 0), (sal * 12 + nvl(comm,0) ) 总收入 
    from emp
3.去掉重复的行 
    – 作用于一列 
    sql> select distinct job from emp; 
    – 作用于多个列,所有列的值加一起重复才算重复的记录 
    sql> select distinct job, deptno from emp;
4.如果只查询一个表达式,没有用到任何表的数据,这时也必须得写from… 
    可以写成 from dual 
    dual是一个虚表,本身就存在的,可以直接使用。 
    如: 
        select 3+2 
        select ‘hello’ || ‘world’ from dual;
5.字符串连接符 
    sql> select ename || ‘的薪水是’ || sal from emp; 
    ename||’的薪水是’||sal 
    ———————————————————- 
    smith的薪水是800 
    allen的薪水是1600 
    ward的薪水是1250 
    jones的薪水是2975 
    martin的薪水是1250 
    blake的薪水是2850 
    clark的薪水是2450 
    scott的薪水是3000 
    king的薪水是5000 
    turner的薪水是1500 
    adams的薪水是1100 
    james的薪水是950 
    ford的薪水是3000 
    miller的薪水是1300
也可以使用函数 concat(): 
    sql> select concat(‘hello’, ‘world’) from dual;
6.like 
    在使用like时,可以使用 % 与 _,分别表示任意数量的任意字符或任意一个字符。 
    要想表达%或_本身,需要使用转义符,例: 
        sql> select * from emp where ename like ‘ki\%%’ escape ‘\’;
7.between 
    包含两个边界。 
    一定是小值写到前面,大值写到后面,否则没有结果。
8.in 
    where .. in (.., .., .., …) 如果含有null,没有影响。 
        例:查询所有是经理的员工 
        sql> select * from emp where empno in (select mgr from emp); 
    where .. not in (.., .., …) 如果含有null,则不返回任何结果。 
        例:查询所有不是经理的员工 
        sql> select * from emp where empno not in (select mgr from emp where mgr is not null);
9.mysql中日期类型:date, time, datetime 
   oracle中只有date
对日期的处理 
    1,查询指定日期后入职的员工信息 
        sql> select * from emp where hiredate>’31-12月-81’; 
    2,修改日期的格式 
        sql> select * from v$nls_parameters; 
        sql> alter session set nls_date_format=’yyyy-mm-dd’; // 只对当前session有效 
    3,使用日期函数的方式:  
        sql> select * from emp where hiredate>to_date(‘1981-12-31’, ‘yyyy-mm-dd’); 
        或 
        sql> select * from emp where to_char(hiredate, ‘yyyy-mm-dd’)  > ‘1981-12-31’;
语法:to_char(date, 'format_model')语法:to_date(str, 'format_model')格式字符串不区分大小写:获取当前时间:sql> select to_char(sysdate,'yyyy-mm-dd') from dual;to_char(sy----------2012-03-07sql> select to_char(sysdate,'yyyy-mm-dd') from dual;to_char(sy----------2012-03-07sql> select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;to_char(sysdate,'yy-------------------2012-03-07 02:33:41
10.排序: 
    order by 列名, … 
    可以作用在:数字、日期、字符串。 
    可以使用列名,表达式,别名,序号(表示select中的第几个列)
当order by所在的列中有null,会:升序时,null的在下面。降序时,null的在上面。我们希望,不管升序还是降序,null值的始终在下面方式一:sql> select * from emp order by comm desc nulls last;方式二:    select empno, ename, job, hiredate, sal, nvl(comm, 0)     from emp     order by 6 desc
11.组函数 
    select  
        max(sal) 最高工资,  
        min(sal) 最低工资,  
        avg(sal) 平均工资,  
        sum(sal) 所有员工的工资和,  
        count(sal) 领工资的员工数量 
    from emp; 
12.组函数对null的处理 
    例,查询所有员工的平均奖金(有人的奖金为null) 
        select sum(comm)/count(*) 平均奖金 from emp 
    组函数会自动过滤掉null值。 
        在使用avg()时要注意处理null值: 
        select avg( nvl(comm, 0) ) from emp; 
    函数可以嵌套使用
13.分组 
    group by,写在from后,如果有where,就在where后面。 
    查询的列一定要是: 
        在group by中出现的列(在select中不一定全写上) 
        或是使用组函数 
    按一个列分组 
    按多个列分组 
        参与分组的多个列有一个不相同就是不同的组。
14.分组结果过滤 
    having,是分完组后再进行过滤,只显示符合条件的结果。 
    在group by与having中都不可以使用别名。 
    与where的区别 
        having是是分完组后再进行过滤。 
        where是先过滤,再进行分组操作。 
    如果可以,尽量写where条件,不写having。
select 
    … 
from 
    … 
where 
    … 
group by  
    … 
having 
    … 
order by 
    …
================================================ 
15.子查询: 
    当一步不能求解时,可以使用子查询。 
    分为: 
        单行子查询 
        多行子查询
可以在主查询的select, from, where, having 都可以放子查询    不可以在主查询的group by 放子查询单行操作符对应单行子查询,多行操作符对应多行子查询在select中放子查询时,要求只能是单行子查询。
in:
any: 
    小于某集合中的任意一个值,就是小于集合中的最大值。 
    大于某集合中的任意一个值,就是大于最小值。
all: 
    小于某集合中的所有值,就是小于最小值。 
    大于某集合中的所有值,就是大于最大值。
16.rownum是一个伪列,表示记录在结果集中的行号。 
    1,rownum一旦生成,就不会变化(会先按没有排序时的默认顺序生成rownum,然后再执行排序)。 
    2,对于rownum,只能使用与>=与=。
   
 
   