日期:2014-05-16  浏览次数:20492 次

oracle常用命令积累
一、创建
1、创建表
create table new_protectiontcm(
<列名> <类型> NOT NULL,
<列名> <类型> NOT NULL,
constraint pk_名称 primary key(<列名>)
)
2、创建外键
alter table <要创建外键的表名>
add constraint fk_名称  foreign key(要创建外键的表的字段) references  <要关联的表名> (要关联的表名的字段) on delete cascade;
on delete cascade:当被参照的数据被删除是,参照该数据的那些数据的对应值将会删掉
on delete set null:当被参照的数据被删除是,参照该数据的那些数据的对应值将会变为空值,不能有not null约束,否则将会发生:ORA-01407: 无法更新

3、创建表空间
create tablespace 表空间名称 datafile '/ora/oracle/app/oracle/oradata/orcl/dev01.dbf' size 10240M;

create tablespace 表空间名称 datafile '/ora/oracle/oradata/orcl/dw01.dbf' size 3072M;--增加表空间 
4、创建用户
create user dw identified by dw2013_ora106 default tablespace dw;
grant resource,connect,dba,EXECUTE ANY PROCEDURE,sysdba to dw;--赋予权限
alter user dev identified by devPassword;--修改用户密码


二、修改(增删改)
1、修改表名
alter table <表名1> rename to <表名2>;--修改表名;
2、修改表字段
alter table <表名> rename colum <old列名> to <new列名>;--修改表中列名
alter table <表名> modify <列名> <类型>;--修改字段类型
alter table <表名> add <列名> <类型>;--增加字段
alter table <表名> drop COLUMN <列名>;--删除字段
ALTER TABLE OLD_TABLE_NAMERENAME TO NEW_TABLE_NAME;(大写为系统命令)
alter table cmh_brands move tablespace SINOHEALTH_DATA; --修改表空间
alter index PK_II_ID rebuild tablespace SINOHEALTH_DATA; --修改对应的索引

alter table user__ modify join_meeting_flag default 0; --修改默认值
3、修改数据
update area set areaid = 48 where areaid = 49

4、删除表
DROP TABLE  <表名>;
drop table  <表名> cascade constraints;--当表中有关联外键,删掉表也不会影响关联表的数据

oracle删除用户  最快的办法是:
conn /as sysdba
delete from user$ where name='dzysc';
commit;
alter system flush shared_pool;

oracle 没有方法批量删除表
select 'drop table '||tname|| ';' from tab
where lower(tname) like 'mdm%' --查询以MDM开头的表
select 'drop table '||table_name|| ';' from user_tables; -- 当前用户下面全部表

三、插入

update <表名> set <列名> = <值/字符>;--把字段的所有记录都改为同一个值或者字符
INSERT INTO BOOK(bookid,name,price)   VALUES('100123','oracle sql',54.70);
INSERT INTO BOOK                         VALUES('100123','oracle sql',54.70);
INSERT INTO BOOK(bookid)           VALUES('100123');

update 表名 set 列名=replace(列名 , '?' ,'')把问号替换成空就可以了

四、查询
select sid,serial#,username,program,machine,status,logon_time from
v$session
where username = 'DW'--产科当前用户被锁事件

select spid, osuser, s.program,s.sql_address,q.sql_text
from v$process p, v$session s ,v$sql q
where p.addr=s.paddr
and s.sql_address=q.address
and s.sid=&SID

alter system kill session 'sid,serial#';

dbms_output.put_line () 相当于 java 的System.out.println()

select table_name from user_tables;--查看当前用户所有表

select * from dba_role_privs where granted_role='DBA'--查看dba角色的权限

--当用户被锁
alter user dev account unlock;
用system用户进去或者sqlplus "/as sysdba"进去也行


五、序列
select preproject_seq.next.nextval from dual;--当前表最后一个序列号

DROP SEQUENCE "PREPROJECT_SEQ";

CREATE SEQUENCE "PREPROJECT_SEQ"
INCREMENT BY 1 --递增为1
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1593 --从第几个开始
CACHE 10;

建立数据表

create table Test_Increase(
           userid number(10) primary key,  /*主键*/
           username varchar2(20)