Oracle日积月累

LES01-------------------------------------------------------------------------------------------------------------------------------------:

NULL:表示未提供数据;

NULL不是0也不是空格;N

解决NULL问题:函数NVL:转换NULL为实际值

定义列别名:  作用:修改列标题

                        定义列别名:可以直接跟在列名后,或加AS关键字

                        如果列别名包含有空格、特殊字符或区分大小写,那么用双引号括起来

           例子:

                1.  select ename NAME, 12*sal+nvl(comm,0)  "Annual Salary"  from  emp WHERE  ename='KING'

连接操作符:||

                    作用:连接列或字符串到其它列

            例子:

               select ename || ' ' || 'is a' || ' ' || job  as  "Employee Details"  from   emp;

删除重复行:

               select   distinct deptno  from   emp;

LES02-------------------------------------------------------------------------------------------------------------------------------------:

字符串和日期值用单引号括起来;

字符值区分大小写;

日期值区分格式,语言;

<>:不等于;

BETWEEN...AND...:在两值之间

IN(list):匹配于列表中的任一个值

LIKE:匹配于字符模式

LIKE操作符:用于执行模糊检索  %:表示零或多个字符;_:表示一个字符

逻辑操作符:AND 如果条件都是TRUE,则返回 TRUE ;

                      OR 如果任一个条件是TRUE,则返回TRUE;

                      NOT 如果条件是FALSE,则返回 TRUE;

ORDER BY子句:排序   ASC(默认):升序; DESC:降序

                              ORDER BY是SELECT语句的最后一条子句

LES03-------------------------------------------------------------------------------------------------------------------------------------:

大小写转换函数:LOWER('SQL Course'):sql course

                             UPPER('SQL Course'):SQL COURSE

                             INITCAP('SQLCourse'):Sql Course

TO_CHAR函数: select to_char(sal,'$99,999') salary  from emp where ename = 'SCOTT';

                               結果: $3,000

TO_NUMBER:转换字符串为数字

TO_DATE:转换字符串为日期

一NVL(表达式1,表达式2)

如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。

    对数字型: NVL( comm,0);

    对字符型 NVL( TO_CHAR(comm), 'No Commission')

    对日期型 NVL(hiredate,' 31-DEC-99')

    例子:

    select ename,NVL(TO_char(comm),ename||' is not a salesperson!') AS COMMISSION  from emp

NVL2(表达式1,表达式2,表达式3)

如果表达式1为空,返回值为表达式3的值。如果表达式1不为空,返回值为表达式2的值。

例如 NVL2(comm,'sal+comm',sal)

NVL2函数测试comm,如果comm为空,就返回sal 的值。如果 comm 不为空(null),就返回表达式 sal+comm的值。

NULLIF函数:

  NULLIF(Expression1,Expression2):给定两个参数Expression1和Expression2,如果两个参数相等,则返回NULL;否则就返回第一个参数。

case表达式 与decode函数:

    select ename,sal,case when deptno=10 then 'dept10'

                      when deptno =20 then 'dept20' 

                      when deptno =30 then 'dept30' 

                      else 'other' end department    FROM   employees

     用decode改写

            select ename,sal,

           decode(deptno,10,'dept10',20,'dept20',30,'dept30','other') department  from emp;

LES04-------------------------------------------------------------------------------------------------------------------------------------:

Oracle  外连接(OUTER JOIN)

左外连接(左边的表不加限制)

右外连接(右边的表不加限制)

全外连接(左右两表都不加限制)

对应SQL:LEFT/RIGHT/FULL OUTER JOIN。 通常省略OUTER关键字, 写成:LEFT/RIGHT/FULL JOIN。

在左连接和右连接时都会以一张A表为基础表,该表的内容会全部显示,然后加上A表和B表匹配的内容。 如果A表的数据在B表中没有记录。 那么在相关联的结果集行中列显示为空值(NULL)。

对于外连接, 也可以使用“(+) ”来表示。 关于使用(+)的一些注意事项:

(+)操作符只能出现在WHERE子句中,并且不能与OUTER JOIN语法同时使用。

 当使用(+)操作符执行外连接时,如果在WHERE子句中包含有多个条件,则必须在所有条件中都包含(+)操作符。

(+)操作符只适用于列,而不能用在表达式上。

(+)操作符不能与OR和IN操作符一起使用。

(+)操作符只能用于实现左外连接和右外连接,而不能实现完全外连接。

    例子:

            左外连接  select * from t_A a left join t_B b on a.id = b.id;

                            或  Select * from t_A a,t_B b where a.id=b.id(+);

            右外连接  select * from t_A a right join t_B b on a.id = b.id;

                            或 Select * from t_A a,t_B b where a.id(+)=b.id;

LES05-------------------------------------------------------------------------------------------------------------------------------------:

使用group by分组查询

LES06-------------------------------------------------------------------------------------------------------------------------------------:

子查询

LES07-------------------------------------------------------------------------------------------------------------------------------------:

LES08-------------------------------------------------------------------------------------------------------------------------------------:

使用以下SQL*Plus命令可以定义用户变量

DEFINE:建立 CHAR类型用户变量

ACCEPT:读取用户输入,并存储到变量中

        如果使用DEFINE命令定义变量包含空格,则必须用单引号引住

SET: 设置当前会话环境

SHOW :显式环境设置

SET命令变量:

                ARRAYSIZE {20 | n}

                COLSEP  {_ | text}

                FEEDBACK   {6 | n |OFF | ON}

                HEADING  {OFF | ON}

                LINESIZE  {80 | n} 

                LONG  {80 | n}

                PAGESIZE  {24 | n}

                PAUSE  {OFF | ON | text}

               TERMOUT  {OFF | ON}

LES09-------------------------------------------------------------------------------------------------------------------------------------:

LES10-------------------------------------------------------------------------------------------------------------------------------------:

使用 ALTER TABLE语句:

        增加新列

        修改已存在列

        定义新列的默认值

DROP TABLE 删除表

RENAME 修改对象名

TRUNCATE 截断表

COMMENT 增加注释

LES11-------------------------------------------------------------------------------------------------------------------------------------:

约束有以下五种类型

        NOT NULL

        UNIQUE

        PRIMARY KEY

        FOREIGN KEY

        CHECK:定义每行数据必须满足的条件

                        定义CHECK约束有以下限制

                       不允许引用伪列CURRVAL、NEXTVAL、LEVEL和ROWNUM

                       不允许调用函数SYSDATE、UID、USER和 USERENV

LES12-------------------------------------------------------------------------------------------------------------------------------------:

建立视图:限制数据库访问;简化复杂查询

建立复杂视图:CREATE VIEW dept_sum_vu(name, minsal, maxsal, avgsal) AS SELECT d.dname, MIN(e.sal), MAX(e.sal),AVG(e.sal) FROM emp e, dept d WHERE e.deptno = d.deptno GROUP BY d.dname;

LES13-------------------------------------------------------------------------------------------------------------------------------------:

建立索引:CREATE INDEX index ON table (column[, column]...);

                    CREATE INDEX emp_ename_idx ON emp(ename);

删除索引:DROP INDEX emp_ename_idx;

LES14-------------------------------------------------------------------------------------------------------------------------------------:

控制用户访问 :  建立用户

                            建立角色简化安全管理

                            使用GRANT和REVOKE授予和收回权限

LES15-------------------------------------------------------------------------------------------------------------------------------------:

PL/SQL块结构:DECLARE(可选)

                                        变量、游标、自定义例外

                            BEGIN (必须)

                                        SQL 语句

                                        PL/SQL语句

                            EXCEPTION(可选)

                                        发生错误执行操作

                            END; (必须)

定义变量:按照命名惯例定义变量名

                   指定NOT NULL强制初始化变量

                   使用:=或DEFAULT可以初始化变量

                   每行只能定义一个变量

LES16-------------------------------------------------------------------------------------------------------------------------------------:

单行注释:- -

多行注释: /* 和*/

你可能感兴趣的:(Oracle日积月累)