• oracle数据库


    目录:

      1.导入导出dmp文件                   6.函数

      2.删除用户下所有的表       7.存储过程和存储函数  

      3.数据闪回                                 8.视图

      4.序列             9.事物回滚

      5.索引             10.常用符号

      11.求两个时间段相差的时间

    1.超级用户账号密码

    账号:sqlplus
    密码:as sysdba

    2.创建用户

    create user 用户名 identified by 密码

    3.赋予用户权限

    赋予用户connect连接数据库,resource创建实体但是没有创建数据库结构权限,dba赋予用户所有权限
    grant connect,resource,dba to 用户名

    其他权限

    grant execute on sys.dbms_crypto to 用户名 with grant option;
    grant execute on SYS.DBMS_AQADM to 用户名 with grant option;
    grant execute on SYS.DBMS_AQELM to 用户名 with grant option;
    grant execute on SYS.DBMS_AQ_IMPORT_INTERNAL to 用户名 with grant option;
    grant execute on SYS.DBMS_DEFER_IMPORT_INTERNAL to 用户名;
    grant execute on SYS.DBMS_REPCAT to 用户名;
    grant execute on SYS.DBMS_RULE_EXIMP to 用户名 with grant option;
    grant execute on SYS.DBMS_SQL to 用户名;
    grant execute on SYS.DBMS_SYS_ERROR to 用户名;
    grant execute on SYS.DBMS_SYS_SQL to 用户名;
    grant execute on SYS.DBMS_TRANSFORM_EXIMP to 用户名 with grant option;
    grant select, insert, update, delete, references, alter, index on SYS.INCEXP to 用户名;
    grant select, insert, update, delete, references, alter, index on SYS.INCFIL to 用户名;
    grant select, insert, update, delete, references, alter, index on SYS.INCVID to 用户名;
    grant execute on SYS.SYS_GROUP to 用户名;
    grant select on WMSYS.WM$UDTRIG_INFO to 用户名;
    grant aq_administrator_role to 用户名 with admin option;
    grant dba to NEWUSER123 with admin option;
    grant sales_history_role to 用户名 with admin option;
    grant students to 用户名 with admin option;
    grant unlimited tablespace to 用户名 with admin option;

    4.全库导入导出dmp文件,在cmd运行

    导出

    exp 账号/密码@127.0.0.1/orcl file=导出文件名.dmp full=y

    导入

    imp epm/epm@127.0.0.1/orcl file=D:doudianworklq.dmp full=y

    5.oracle11g的数据库导入oracle10g的数据库

    1.oracle11g导出

    EXPDP USERID='账号/密码@orcl as sysdba' schemas=账号 directory=DATA_PUMP_DIR dumpfile=导出文件名.dmp logfile=导出日志名.log version=10.2.0.1.0 (这是导出成数据库版本号)

    导出的文件在oracle11g安装的盘的appASUSadminorcldpdump

    2.oracle10导入

    导入的时候将要导入的.dmp文件放入oracle10g的安装盘的ppASUSadminorcldpdump文件夹下

    IMPDP USERID='账号/密码@orcl as sysdba' schemas=账号 directory=DATA_PUMP_DIR dumpfile=导入的文件名.dmp logfile=导入的日志名.log version=10.2.0.1.0 (导入的版本号)

    原文地址: https://www.cnblogs.com/huangzhiqiang/p/4725664.html

    6.删除用户下所有的表

    在oracle的窗口执行

    SELECT 'DELETE FROM '|| table_name || ';' FROM USER_TABLES ORDER BY TABLE_NAME;

    7.数据闪回(恢复删除的数据)

    1.查询最近的快照时间

    SELECT R.FIRST_LOAD_TIME,R.SQL_TEXT,R.* FROM V$SQLAREA R WHERE R.SQL_TEXT LIKE '%ABOUT YOUR SQL%' ORDER BY R.FIRST_LOAD_TIME DESC

    2.以当前时间为准查询125分钟之前的数据快照

    SELECT * FROM 表名 AS OF TIMESTAMP SYSDATE - 125 / 1440

    3.恢复数据

    1.启动表的row movement特性
    
    ALTER TABLE 表名 ENABLE ROW MOVEMENT;
    
    2.闪回指定时间的快照
    
    FLASHBACK TABLE 表名 TO TIMESTAMP 
    TO_TIMESTAMP('2018-04-23 16:06:00','yyyy-mm-dd hh24:mi:ss');
    
    3.关闭表的row movement特性
    
    ALTER TABLE 表名 DISABLE ROW MOVEMENT;

    4.恢复删除的表(通过TRUNCATE语句删除的表无法闪回)

    FLASHBACK TABLE 表名 TO BEFORE DROP;

    8.序列

    创建序列

    create sequence 序列名称
    increment by 1 每次增长多少
    start with 1 从几开始
    minvalue 1 最小值
    maxvalue 999999999 最大值
    cycle/no cycle 序列到达最大值之后怎么办,一般去cycle
    cache 20 需要不需要使用缓存,就是一次生成多少个序列的值,如果生成了多个序列值,如果缓存中有数据, 就
    不需要查询缓存了

    查询序列

    select 序列名.currval from dual  //取当前值
    
    select 序列名.nextval form dual //取下一值

    9.索引

    oracle查询有一个优化,那就是查询过一次的数据他会产生缓存

    使用索引的原则:

      1.大数据才创建索引

      2.为经常用到的列创建索引

      3.索引的层数不要超过4层,也就是 on 表名(列名1,列名2) 这里的列明不要超过4个,因为索引太多也会拖慢检索速度

      4.表的主键自带索引

      多列的索引就是复合索引

      创建索引

    create index 索引名 on 表名(列明)

    10.函数

    1.nvl 见到空值替换为后面的值

    //如果age是空值就为1
    select nvl(age,1) from table

    2.concat 拼接

    select concat('年龄',age) from table
            或
    select '年龄'||age from table

    11.存储过程

    in是输入,out是输出

    as 那是定义变量用的

    create or replace proceduer 存储过程名(参数名 in或out 参数类型)
    as 变量名 变量类型
    begin
        执行的操作
    end;

    例子

    create or replace proceduer test(ids in number)
    as lizi number
    begin
        select value into lizi from tableName where id=ids //这样写可以将查询的值赋给声明的变量
        update tableName set  value='1000' where id=ids
    end;

    12.存储函数

    in输入,out输出

    as 定义变量用的,定义的变量类型要和返回的类型一致

    create or replace function 方法名(参数 in|out 类型) return 参数类型
    as 变量名称 变量类型
    begin
        执行的操作
        return 变量名;//返回的变量类型要和return那定义的类型一样
    end;

    例子

    create or replace function sc(ids in number) return varchar
    as aa varchar
    begin
        select value into aa from emp where id=ids
        return aa;
    end;

    out的用法例子

    创建函数
        create or replace proceduer test(id out number)
        as     
        begin
            select id into id from table
        end;    
    执行函数
        declare
            id number;//声明变量获得值
        begin
            test(id);
            dbms_output.put_line(id);//这个是输出语句
        end;    

    13.视图

    删除视图中的数据会影响基本表,但是删除整个视图不会对基本表产生影响

    删除的视图不会进入回收站,删除基本表会影响视图

    闪回删除基本表,视图也会恢复

    创建视图

    create view 视图名 as 查询的sql语句

    创建只读视图

    create or replace view 视图名 as sql语句

    14.oracle事物回滚的条件

    1.显示回滚:rollback

    2.隐藏回滚:关闭sqlplus工具窗口,死机,掉电

    oracle能回滚主要是因为实例池

    oracle的事物隔离级别有两种:1.read committed 和 serializable

    设置事物隔离级别为serializable:
    
    set transaction isolation level serializable;

    15.常用符号

    原文地址: https://www.cnblogs.com/WebcrawlerBlog/p/4037162.html

    运算符:

    等于:=、<、<=、>、>=、<>
    
    包含:in、not in、 exists、not exists
    
    范围:between...and、not between....and
    
    匹配测试:like、not like
    
    Null测试:is null、is not null
    
    布尔链接:and、or、not   

    通配符

    %(百分号): 用来表示任意数量的字符,或者可能根本没有字符。
    
    _(下划线): 表示确切的未知字符。
    
    ?(问号): 用来表示确切的未知字符。
    
    #(井号): 用来表示确切的阿拉伯数字,0到9。
    
    [a-d](方括号):用来表示字符范围,在这里是从a到d    

    常用符号

    单引号:单引号将文本和字符和日期括起来
    
    双引号:双引号被用来将包含特定字符或者空格的列别名括起来。双引号还被用来将文本放入日期格式
    
    &符号:&号在oracle中常来指出一个变量,例如:&fox 这就声明fox是一个变量,当单&声明变量的时候,每次看见这个变量都要给他赋一个值,而双&号声明的时候,只需要在声明的时候赋一次值就行例如:&&fox,如果想要关闭&号特性,将&号当为普通的符号使用,需要在oracle的命令窗口运行: set define off 命令
    
    单&相当于var,双&相当于let
    
    双竖线||:表示字符串连接函数,就像java的+号
    
    星号*:表示0个或任意多个字符。
    
    := :赋值语句,如 name :='admin'
    
    : :变量绑定

    16.求两个时间段相差的分钟数

    在oracle中时间加减运算得到的结果是以天为单位的,如果想要得到小时就*24,得到分钟*24*60,得到秒*24*60*60

    得到天
    select (to_date( t.A,'yyyy-mm-dd hh24:mi:ss')-  to_date( t.B,'yyyy-mm-dd hh24:mi:ss'))  from table t 
    得到小时
    select (to_date( t.A,'yyyy-mm-dd hh24:mi:ss')-  to_date( t.B,'yyyy-mm-dd hh24:mi:ss'))*24  from table t 
    得到分
    select (to_date( t.A,'yyyy-mm-dd hh24:mi:ss')-  to_date( t.B,'yyyy-mm-dd hh24:mi:ss'))*24*60  from table t 
    得到秒
    select (to_date( t.A,'yyyy-mm-dd hh24:mi:ss')-  to_date( t.B,'yyyy-mm-dd hh24:mi:ss'))*24*60*60  from table t 
    
    原文链接:https://blog.csdn.net/u010050174/article/details/79459664

     

     

     

  • 相关阅读:
    StructuredStreaming整合Kafka
    StructuredStreaming-Sink
    ValueError: max() arg is an empty sequence
    StructuredStreaming
    学习进度报告08
    SparkSQL+Hive
    SparkSQL花式查询
    RDD-DF-DS相互转换
    SparkSQL学习
    学习进度报告07
  • 原文地址:https://www.cnblogs.com/HQ0422/p/12740374.html
Copyright © 2020-2023  润新知