【Oracle】个人收集整理的Oracle常用SQL及命令

【建表】

create table emp(

    id number(12),

    name nvarchar2(20),

    primary key(id)

);

【充值一】

insert into emp

select rownum,dbms_random.string('*',dbms_random.value(6,20))

from dual

connect by level<101;

【充值二】

begin

for i in 1..100 loop

    insert into emp values(i,'No.'||i);

end loop;

 

commit;

end;

/

【充值三】

(要充值的表)

create table heishehui(

    id number(12),

    name nvarchar2(20),

   groupname nvarchar2(20),

   primary key(id)

);

(PLSQL程序)

declare

    v integer;

begin

for i in 1..100 loop

     v:=dbms_random.value(1,5);

    insert into heishehui values(i,'No.'||i,decode(mod(v,2),0,'洪兴',1,'东星'));

end loop;

commit;

end;

/

 

【更新字段】

update emp set age=dbms_random.value(18,65) where 1=1;

 

【加字段】

alter table emp add(dept number(2));

 

【删字段】

alter table emp drop column dept;

 

【更改字段类型】

alter table emp modify(dept number(5));

 

【字段改名】

alter table emp rename column dept to deptid;

 

【表改名】

alter table emp rename to emp1;

 

【看表下有什么字段及其类型】

select column_name,data_type

from all_tab_columns

where table_name=upper('emp');

(简化版)

desc emp;

 

【增删无名unique约束】

alter table emp add unique(name);

alter table emp drop unique(name);

 

【增删有名唯一性限制】

alter table ar_variable add constraint AR_VARIABLE_UID_NAME_UNIQUE unique(uid,name);

alter table ar_variable drop constraint AR_VARIABLE_UID_NAME_UNIQUE;

 

【查看某表上的约束】

select constraint_name,constraint_type,search_condition

from user_constraints

where table_name=upper('emp');

 

【查看单个约束】

select saerch_condition

from user_constraints

where table_name=upper('emp') and

           constraint_name='SYS_C0011586';

 

【删除约束】

alter table ar_variable drop constraint SYS_C0011586;

 

【添加约束】

alter table emp add primary key(id);

alter table emp add unique(name);

alter table emp add check(status=1 or status=0);

alter table emp add check(dept='dev' or dept='mng' or dept='sales');

 

【建表时即加约束】

create table XXX(

    prj varchar2(10) check(prj='oper' or prj='sql' or prj='api),

    status number(1) check(status=0 or status=1),

    ...

);

 

【Sqlplus中设置列宽】

column XXX format a30;

简短模式:col XXX for a30;

逆操作:column XXX clear;

 

【Sql plus连远程DB】

模式:conn username/password@ip:port/servicename

实例:conn datamng/123456@170.0.35.86:1521/db19c

 

【查看解释计划】

1.explain plan for select f1,f2 from tb where ...

2.select * from table(dbms_xplan.display);

 

【用hint强制走索引】

create index idx_age on emp(age);

select /*+ index(emp,idx_age)*/ name from emp where age=42;

 

【查看服务名】

show parameter service;

 

【查看实例名】

select * from v$instance;

 

【查看数据库名】

select name from v$database;

 

【查看用到几个表空间】

select distinct tablespace_name from tabs;

 

【看当前用户能用的表】

1.select * from tab;

2.select table_name from user_tables;

 

【不让直接改字段类型之曲线救国做法】

1.加  alter table emp add(f2 varchar2(100));

2.拷 update emp set f2=f1;

3.删 alter table emp drop column f1;

4.改 alter table emp rename column f2 to f1;

 

【设字段为主键前清除重复】

1.确认有无重复

select id from test group by id having count(id)>1;

2.删除多余之N条

delete from test where rowid<>(select max(rowid) from test where id=2);

3.删除完设上主键

alter table test add constraint pk_test primary key(id);

 

【创建序列】

CREATE SEQUENCE emp_sqs
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
NOCACHE;

【创建注释】

给表加注释

comment on table ta is '表A';

给视图加注释

comment on table vb is '视图B';

给字段加注释

comment on column ta.f1 is '表A的字段1';

 【日期时间与字符串互转】

时间转字符串

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

字符串转时间
select to_date('2022-06-03','yyyy-mm-dd') from dual;

 

END

posted @ 2020-02-03 07:45  逆火狂飙  阅读(426)  评论(0编辑  收藏  举报
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东