zoukankan      html  css  js  c++  java
  • 《Oracle数据库》Oracle 常见用法

    oracle创建用户

    --先用管理员身份登录数据库

    --创建表空间
    create tablespace 表空间的名称
    datafile '表空间所对应的DBF数据文件存储路径'
    size 数据文件的初始大小
    autoextend on next 数据文件的增量大小
    maxsize unlimited;--数据文件最大大小,无限制。

    --示例
    create tablespace TestSpace
    datafile 'C:appAdministratororadataorclTestSpace.dbf'
    size 10M autoextend on next 1M
    maxsize unlimited;

    --创建临时表空间
    create temporary tablespace 表空间的名称
    tempfile '表空间存储的路径'
    size 数据文件的初始大小
    autoextend on next 数据文件的增量大小
    maxsize unlimited;--数据文件最大大小,无限制。

    --示例
    create temporary tablespace tempspace
    tempfile 'C:appAdministratororadataorcl empspace.dbf'
    size 10M autoextend on next 1M
    maxsize unlimited;

    --创建用户
    create user 账户名称 identified by 登录密码
    default tablespace 账户使用的数据表空间
    temporary tablespace 账户使用的临时表空间

    --示例
    create user king identified by test
    default tablespace testspace
    temporary tablespace tempspace

    --给用户授权
    grant connect,resource to 用户名;
    grant create any view to 用户名;

    --直接授权DBA
    grant dba to 用户名;

    杀死锁函数,包,过程进程:

    查v$access视图
    select * from v$access where owner='过程的所属用户' and name='刚才查到的过程名'
    3.查出sid和serial#
    查v$session视图
    select sid,serial#,paddr from v$session where sid='刚才查到的sid';

    杀死session 报: ora-00031:标记要终止的会话 。

    按照以下处理:杀死线程。
    select spid, osuser, s.program
    from v$session s, v$process p
    where s.paddr = p.addr
    and s.sid =197;

    收集统计信息:

    HSTA 用户名   ;tprofitdealcurrentdetails 为需要收集得表名
    begin
    dbms_stats.gather_table_stats(ownname => 'HSTA',tabname => 'tprofitdealcurrentdetails',estimate_percent => 10,method_opt=> 'for all indexed columns');
    end;

    关于oracle 截位函数:TRUNC 的使用

    --oracle 函数round  是用于四舍五入,    格式:TRUNC(data[,fmt])
    --oracle 函数TRUNC   是用于截位,       格式:TRUNC(data[,fmt])

    --Oracle trunc()函数的用法
    /**************日期********************/
    /*1.*/select trunc(sysdate) from dual;  --2016/3/3  今天的日期为2016/3/3
    /*2.*/select trunc(sysdate, 'mm')   from   dual ; --2016/3/1   返回当月第一天.  'mm'等同于'month'
    /*3.*/select trunc(sysdate,'yy') from dual ; --2016/1/1       返回当年第一天.  'yy'等同于'year'
    /*4.*/select trunc(sysdate,'dd') from dual ; --22016/3/3    返回当前年月日.  'dd'等同于第1个不提供格式符
    /*5.*/select trunc(sysdate,'yyyy') from dual ; --2016/1/1   返回当年第一天.  'yyyy'等同于'year'
    /*6.*/select trunc(sysdate,'d') from dual ; --2016/2/28 (星期天)返回当前星期的第一天.  'd'等同于'day'
    /*7.*/select trunc(sysdate, 'hh') from dual;   --2016/3/3 14:00:00   当前时间为14:41.
    /*8.*/select trunc(sysdate, 'mi') from dual;  --2016/3/3 14:41:00   TRUNC()函数没有秒的精确.
    /***************数字********************/
    /*
    TRUNC(number,num_digits)
    Number 需要截尾取整的数字。
    Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。
    TRUNC()函数截取时不进行四舍五入
    */
    /*9.*/select trunc(123.458) from dual; --123
    /*10.*/select trunc(123.458,0) from dual; --123
    /*11.*/select trunc(123.458,1) from dual; --123.4
    /*12.*/select trunc(123.458,-1) from dual; --120
    /*13.*/select trunc(123.458,-4) from dual; --0
    /*14.*/select trunc(123.458,4) from dual;  --123.458
    /*15.*/select trunc(123) from dual;  --123
    /*16.*/select trunc(123,1) from dual; --123
    /*17.*/select trunc(123,-1) from dual; --120 

    查oracle中表字段信息

    --查表所在空间,
    select table_name,tablespace_name,temporary from user_tables where table_name='TFUNDINFO';
    --查表字段明细信息
    select column_name,data_type ,data_length from user_tab_columns where table_name='TFUNDINFO';

    表结构

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….);
    修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….);
    删除字段的语法:alter table tablename drop (column);
    --举例:
    --创建表
    create table test1
    (id varchar2(20) not null);
    --添加字段
    alter table test1 add (sss varchar2(16) default 0 not null);
    --修改字段
    alter table test1 modify (sss varchar2(15) default 0 null);
    --删除字段
    alter table test1 drop (sss);

    ORACLE 函数(lpad,add_months,COALESCE,GREATEST,LEAST)

    函数: lpad(a,b,c)
    参数: a : 字符 , b : 补成几位 ,c : 补的东西
    功能: 左侧补字符。
    举例: select lpad('6',2,0) from dual; 
    结果: “06”

    函数: add_months(a,b)
    参数: a : 日期 , b : 数字
    功能: 获取b个月后的日期。
    举例: select add_months(date '2015-09-08',6) from dual; 
    结果: 2016/3/8

    函数:coalesce(value1, value2, value3, ...)
    参数:相同类型的值。
    功能:获取第一个不为空的值。
    举例:SELECT COALESCE(null,2,1) FROM dual t ;
    结果:2

    函数:greatest(value1, value2, value3, ...)
    参数:相同类型的值。
    功能:获取其中最大的值。
    举例:SELECT greatest(3,4,1) FROM dual t;
    结果:4

    函数:least(value1, value2, value3, ...)
    参数:相同类型的值。
    功能:获取其中最小的值。
    举例:SELECT least(3,4,1) FROM dual t;
    结果:1

    Oracle 锁表 解锁

    oracle 锁表后该怎么解锁。
    1.下面的语句用来查询哪些对象被锁:
    select object_name,machine,s.sid,s.serial#
    from v$locked_object l,dba_objects o ,v$session s
    where l.object_id = o.object_id and l.session_id=s.sid;
    2.下面的语句用来杀死一个进程:
    alter system kill session '24,111'; (其中24,111分别是上面查询出的sid,serial#)

    查是谁锁了表,那个语句锁了表

    select l.session_id sid,
    s.serial#,
    l.locked_mode,
    l.oracle_username,
    s.user#,
    l.os_user_name,
    s.machine,
    s.terminal,
    a.sql_text,
    a.action
    from v$sqlarea a, v$session s, v$locked_object l
    where l.session_id = s.sid
    and s.prev_sql_addr = a.address
    order by sid, s.serial#;

    开窗函数:

    row_number() over (partition by [字段1] order by [字段2] desc);
    row_number() 用于[字段1]数据相同的时候,给相同数据进行编号,例如[字段1]相同的数据有两条,根据[字段2]排序,然后给这两条数据分别编上1和2.
    例如:select  t0.* , row_number() over (partition by t0.c_username order by rowid desc) l_num  from t_user t0 ;
    他会把名字一样的人进行编号。结果就是。
    1 李四 123456 1
    2 王五 123456 1
    3 王五 123456 2
    4 张三 123456 1
    5 张三 123456 2
    6 张三 123456 3
    7 赵六 123456 1

    你会发现最后一列。相同名字的,例如‘张三’,分别编上了1,2,3.
    要把相同的去掉也简单,在外层再套一层select和加个条件l_num 等于1。就好了。

    rank()是跳跃排序.    如果【字段2】也有相同的时候,会把相同列出来。
    row_number();        如果【字段2】也有相同的时候,只会显示一条

    Oracle 函数

    min(),max()函数的返回值,
    1.如果max(###),###是字符串,且是数字类字符串。返回值会把字符转换成数字。
    SELECT min(t.c_businflag) FROM trequest t where t.c_fundcode='HA0065';

    2.如果max(###),###是日期。返回值还是日期。
    SELECT min(t.d_date) into i FROM trequest t where t.c_fundcode='HA0065';

    3.如果max(###),###是字符串,是一般类字符串。返回值是该字符串。

    This moment will nap, you will have a dream; But this moment study,you will interpret a dream.
  • 相关阅读:
    A. Difference Row
    B. Fixed Points
    命运
    Climbing Worm
    大学感想
    Constructing Roads
    lintcode605- Sequence Reconstruction- medium- airbnb google
    lintcode616- Course Schedule II- medium
    lintcode615- Course Schedule- medium
    lintcode127- Topological Sorting- medium
  • 原文地址:https://www.cnblogs.com/jssj/p/12165420.html
Copyright © 2011-2022 走看看