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)