zoukankan      html  css  js  c++  java
  • ORACEL总结

    ORACEL总结

    1. 创建表空间

    在ORACLE中表空间相当于SQL中的数据库,Oracle表空间是数据管理的基本方法,所有用户的对象要存放在表空间中。

    实例: 1.首先,创建(新)用户:
        create user username identified by password; 
        username:新用户名的用户名 
        password: 新用户的密码 
    也可以不用创建新用户,而仍然用以前的用户,如:继续利用system用登录
    2.创建表空间:
        create tablespace test_data datafile 'd:\data.dbf' size xxxm; 
        test_data:表空间的名字 
        d:\data.dbf':表空间的存储位置 
        xxx表空间的大小,m单位为兆(M) 
    3.将空间分配给用户:
       alert user username default tablespace test_data; 
       将名字为tablespacename的表空间分配给username
    4.给用户授权:
       grant create session,create table,unlimited tablespace to username; 

    2. 创建表

    // 创建一个表 需要注意数据类型别跟SQL的混淆了
    CREATE TABLE test_table
    (
     ID NUMBER NOT NULL PRIMARY KEY,
     UserName VarChar2(20) NOT NULL,

    PassWord Varchar2(20) Not NULL,

    Address Varchar2(20) not null
    );

    3. 自增列:

    Oracle不支持自增长类型,但可以通过序列来实现。

    在Oracle中创建标识列,不同于SQL Server中的是,SQLServer中叫自动标识列entity,而Oracle中叫序列Sequence。

    create sequence SEQ_USERID     --创建一个序列
    minvalue 1                     --该序列的最小值是1
    start with 1                   --从1开始递增
    increment by 1                 --每次递增1
    nomaxvalue                     --没有最大值
    nocache;                       --没有缓存

    4.  IDENTITY字段

    Oracle不支持自增长类型,在向表中插入含有IDENTITY字段的记录时,要显示声明。例如:

    Insert into tbl values(序列名.nextval,字段1,字段2,。。。)。

    5. 存储过程

     ORACLE存储过程在创建时,Create后面多了 or replace.当参数为字符型的时候,不能指定大小。参数默认为 in,输出为out,即输入又输出为in out.。

    存储过程中,存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,就使用游标的。在存储过程中没有@符号,变量赋值用:=

    create or replace procedure 存储过程名(param1 in type,param2 out type

    as

    变量1 类型(值范围);

    变量2 类型(值范围);

    Begin

           Select count(*) into 变量1 from 表A where列名=param1

           If (判断条件) then

             Select 列名 into 变量2 from 表A where列名=param1

             Dbms_output。Put_line(‘打印信息’);

           Elsif (判断条件) then

             Dbms_output。Put_line(‘打印信息’);

          Else

             Raise 异常名(NO_DATA_FOUND);

          End if;

    Exception

          When others then

           Rollback;

    End;

     

    注意事项:

    1,  存储过程参数不带取值范围,in表示传入,out表示输出

    2,  变量带取值范围,后面接分号

    3,  在判断语句前最好先用count(*)函数判断是否存在该条操作记录

    4,  用select 。。。into。。。给变量赋值

    5,  在代码中抛异常用 raise+异常名。

     

    6. SQL与ORACLE的游标

    SQL的游标用@@FETCH_STATUS判断是否还有数据,ORACLE的游标用%FOUND、%NOTFOUND来判断游标是否结束。游标的名称在移植后会有重复。不允许。

    7. 连接字符串

    SQL的字符串连接用+号,ORACLE字符串连接用||,单引号可以做转义符。因为在sql server中number类型的“+”运算也用到”+”,因此在移植后oracle对于number类型的“+”有时识别不出来,而作为字符连接来处理。

    8. 日期类型数据要注意

    其格式不同于sql server 中的“yyyy-mm-dd”格式,而是“dd-x月-yyyy“格式。要用to_char(?,’yyyy-mm-dd’)处理成sql server 一样的格式。

    9. oracle获取sql语句所影响的行数时,不像sql server 中@@rowcount直接获取那么简单,要分以下三种情况

    Oracle中对于隐性游标,获取行数的方法是通过SQL%rowcount直接获得。

    对于显性游标获取行数通过cursor_name%rowcount获得,但有以下sql语句:

    For index in cusor_name loop

    变量名:=cursor_name%rowcount;

    End loop;

    Fetch into 语句的话,rowcount=1

    10. 获得年,月,日在oracle中不支持year(),month()和day()函数。

    解决的方法是通过substr()函数。例如获取‘2000-01-10’的‘年’,可以通过substr(‘2000-01-10’,1,4)得到。

    11. 部分SQL语句差异
    (1)SQL:select   top   10   *   from   table
              ORA:   select   *   from   table   where   rownum <11
    (2)SQL:Select   *   from   t1   join   t2   on   t1.c1=t2.c1
              ORA:   select   *   from   t1,t2   where   t1.c1=t2.c1
    (3)select   *   from   t1   left   join   t2   on   t1.c1=t2.c1
              ORA:   select   *   from   t1,t2   where   t1.c1=t2.c1(+)
    (4)SQL:select   *   from   t1   right   join   t2   on   t1.c1=t2.c1
              ORA:   select   *   from   t1,t2   where   t1.c1(+)=t2.c1

  • 相关阅读:
    java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
    项目开发中关于权限的实现方案简单描述(帮助以后回忆)
    一些比较有用的模板
    递归之遍历部门
    关于s2sh框架关于hibernate懒加载问题的说明和解决方案
    Hibernate实体映射配置(XML)简单三步完美配置
    项目添加性能监控日志
    redis常用命令大全
    redis主从同步
    redis之哨兵部署运行日志解读
  • 原文地址:https://www.cnblogs.com/goto/p/2718077.html
Copyright © 2011-2022 走看看