Oracle常用

一、基本常用语句

1. 索引、主键、序列、权限

  1. 索引
    新建索引:create index 索引名 on 表名(列名,……)
    删除索引:drop index ttt;
    新建唯一索引:create unique index 索引名 on 表名(列名……)
    唯一索引用途:一个数据列,不能作为主键,而且允许为空,但是业务上要求唯一特性,这个时候用唯一性索引就是最好的旋转
  2. 主键
    新建主键:
    alter table 表名 add constraint 主键名 primary key(主键列)
    删除主键/外键:
    alter table drop constraint 主键名
    新建外键:
    alter table add constraint 外键名 foreign key(外键列) references 表名(列名)
  3. 序列
    创建序列:
    create sequence squ_t
    start with 1
    minvalue 1
    maxvalue 999
    increment by 1
    nocycle //是否循环,建议不使用
    nocache; //是否启用缓存。使用缓存可以提高sequence的访问效率
    序列属性:
    1.nextval : 返回下一个可用的序列值。
    就算是被不同的用户调用,每次也返回一个唯一的值。
    2.currval :获取序列当前的值。
    在currval调用之前,必须保证nextval已经获取过一次值。
    删除序列:
    drop sequence squ_t
  4. 权限:
    grant 权限等级(select,insert,update,delete) on 权限内容(table,视图,sequence,index) to (aaaaa)
    aaaaaa:
    public:对所有用户开放权限
    group 分组名:对该组所有用户开放权限
    username:对指定用户开放权限
    grant select on tablename to scott
    回收权限:
    revoke select on tablename from scott
  5. exists in区别:
    IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情

2.常用函数

  1. nvl(x1,x2)
    当x1为null时返回X2,否则返回x1
  2. instr(C1,C2,i,j)
    C1 被搜索的字符串
    C2 希望搜索的字符串
    I 搜索的开始位置,默认为1
    J 出现的位置,默认为1
    i为负数,从右边开始算起
  3. length()
    字符串长度
  4. ltrim(‘’,’’)
    左截取,对应右截取rtrim(‘’,’’)
    trim() 修剪
  5. substr(s,i,j)
  6. abs() 绝对值
  7. add_months(date,i)
    返回日期date加上i月的结果。i小数,直接向下取整
  8. last_day(d)
    返回d月的最后一天日期
  9. trunc(date,format)
    1.select trunc(sysdate) from dual –2011-3-18 今天的日期为2011-3-18
    2.select trunc(sysdate, ‘mm’) from dual –2011-3-1 返回当月第一天.
    3.select trunc(sysdate,’yy’) from dual –2011-1-1 返回当年第一天
    4.select trunc(sysdate,’dd’) from dual –2011-3-18 返回当前年月日
    5.select trunc(sysdate,’yyyy’) from dual –2011-1-1 返回当年第一天
    6.select trunc(sysdate,’d’) from dual –2011-3-13 (星期天)返回当前星期的第一天
    7.select trunc(sysdate, ‘hh’) from dual –2011-3-18 14:00:00 当前时间为14:41
    8.select trunc(sysdate, ‘mi’) from dual –2011-3-18 14:41:00 TRUNC()函数没有秒的精确
    Number 需要截尾取整的数字。
    Num_digits 用于指定取整精度的数字Num_digits 的默认值为 0。
    TRUNC()函数截取时不进行四舍五入
  10. to_char(data,format)
    to_char(oper_time,’yyyyMMddhh24’)
  11. DECODE(x,y,z,k,j,i)
    if (x==y) :z else if(x==k) :j else :i

3.其他常用:

  1. SQL执行顺序
    (8) SELECT (9) DISTINCT (11)
    (1) FROM
    (3) JOIN
    (2) ON
    (4) WHERE
    (5) GROUP BY
    (6) WITH {CUBE | ROLLUP}
    (7) HAVING
    (10) ORDER BY

二、系统内置表:

https://www.cnblogs.com/jiangxinnju/p/5840420.html

三、提高oracle查询效率

https://www.2cto.com/database/201301/181269.html

lightquant wechat
欢迎您订阅灯塔量化公众号!