您的位置:首页 > 数据库 > Oracle

Oracle常用SQL语句(持续更新)

2016-12-29 00:00 453 查看

1.创建Oracle用户并指定表空间的SQL语句

表空间:此空间是用来进行数据存储的(表、function、存储过程等),所以是实际物理存储区域。
临时表空间:主要用途是在数据库进行排序运算[如创建索引、order?by及group by、distinct、union/intersect/minus/、sort-merge及join、analyze命令]、管理索引[如创建索引、IMP进行数据导入]、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理。数据库都是有默认临时空间的,但实际应用中很难满足需求,所以才需要自己创建临时空间。

//创建临时表空间
create temporary tablespace exp_temp
tempfile 'C:\exp_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;

//创建数据表空间
create tablespace exp_data
logging
datafile 'C:\exp_data.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;

//创建用户并指定表空间
create user exp identified by exp
default tablespace exp_data
temporary tablespace exp_temp;

//给用户授予权限
grant connect,resource,dba to exp;

2.创建Oracle序列

CREATE SEQUENCE SEQ_EXP -- 序列名
INCREMENT BY 1 -- 自增 1
START WITH 1 -- 初始 1
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 不循环
CACHE 10; -- 缓存区

3.Oracle导入/出dmp文件

imp username/password@127.0.0.1:1521/orcl file=D:\imp.dmp full=y

按用户导入 imp username/password@127.0.0.1:1521/orcl file=D:\imp.dmp fromuser=user touser=user

exp username/password@127.0.0.1:1521/orcl file=D:\exp.dmp (full=y/owner=exp/tables=exp)

4.增删改Oracle列

添加字段的语法: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,....);

说明:[]为可选,/为或者,(,...)为可多列

5.Oracle用户授权

grant dba(等相关权限) to user

6.修改序列值

alter sequence exp_seq increment by -1;
select exp_seq.nextval from dual;
alter sequence exp_seq increment by 1;

7.恢复到指定时间点数据

1.select * from tableName as of timestamp to_timestamp('2017-02-14 15:30:00','yyyy-mm-dd hh24:mi:ss');

2.alter table tableName enable row movement;

3.flashback table tableName to timestamp to_timestamp('2017-02-14 15:30:00','yyyy-mm-dd hh24:mi:ss');

注意:对记录进行“误”操作后,再修改表结构是无法进行闪回的。

8.更新字符串中的部分字符

update tableName t set t.column = replace(t.column,'源字符串','目字符串')

9.关联表涉及字段更新

update tableName t set t.column = (select column from tableName2 t2 where t.id = t2.id)

where t.id in (select id from tableName t,tableName2 t2 where t.id = t2.id)

10.Oracle实现indexOf与lastIndexOf功能

INSTR的第3个参数为1对应indexOf,-1为lastIndexOf

例子:INSTR(column,'_',1/-1,1);

11.Oracle删除指定用户下的所有数据

第一步:用超级管理员登陆oracle“conn / as sysdbaconn / as sysdba”
第二步:删除指定的用户“drop user username cascade”
第三步:重新创建此用户 “create user username identified by password;
第四步:给用户授权"grant dba to username "
第五步:登陆指定用户”conn username /password“


12.Oracle查找重复数据

select column,count(1) from tableName group by column having count(1) > 1

13.Oracle列合并成行记录

select * from (select count(*) acount from tablea )a,(select count(*) bcount from tableb)b

14.Oracle获取前1行

select * from (select * from table order by key desc) where rownum = 1

15.Oracle字符串转日期

select to_date(column,'yyyy-MM-dd hh24:mi:ss') from dual;

Java/Js 格式化时间 'yyyy-MM-dd hh:mm:ss'

16.Oracle查看表中是否含有重复数据

select t.column,count(1) from table t
WHERE xxx
group by t.column
having count(1) > 1


17.Oracle修改表名

ALTER TABLE old_table_name RENAME TO new_table_name;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: