ORCL工作中学习汇总

来源:互联网 发布:php技术是什么 编辑:程序博客网 时间:2024/06/05 18:22

每天进步一点点,积少成多,集腋成裘,积沙成塔

 

必须的服务
OracleOraDb_home1TNSListener
OracleSerbice+实例名

--先建立tablespace  后创建用户  并指定 默认表空间

CREATE TABLESPACE GalSpace DATAFILE 'D:\Datafile\GalSpace.DBF' SIZE 10M AUTOEXTEND ON NEXT 1K MAXSIZE UNLIMITED DEFAULT STORAGE ( MAXEXTENTS UNLIMITED );

drop user gal cascade;
CREATE USER gal PROFILE DEFAULT IDENTIFIED BY gal DEFAULT TABLESPACE GalSpace TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK;
GRANT DBA TO gal;

--删除有数据的表空间选项

DROP TABLESPACE STATIC_TS INCLUDING CONTENTS 

--设置日期格式

alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss'

 select * from v$session where username is not null;

--导入 imp gal/orcl@orcl full=y file=d:\gal.dmp ignore=y

现在已有数据的情况下导入  结果是  追加了数据


--导出 exp  gal/orcl@orcl full=y file=d:\gal.dmp
上网查说没删除全部表的功能  一个个的删  麻烦

可利用 select 'drop table '||table_name  from user_tables; 手动删除吧,

--批量修改
select 'ALTER TABLE '||'"'||table_name||'"'||' RENAME TO '|| upper(table_name)||';' from user_tab_comments;

alter table COMPANY modify slogo default 'logo';

查看当前用户的所有表
select * from tab
查看表结构
desc tablename

--表是否存在 删除 A
FOR I IN (SELECT TABLE_NAME FROM TABS WHERE TABLE_NAME = V_NAME) LOOP;
    EXECUTE IMMEDIATE 'DROP TABLE '||V_NAME;
END LOOP;
--表是否存在 删除 B
declare
cou1 number;
begin
select count(*) into cou1 from user_tables where table_name='TABLENAME';
if cou1<>0 then
    execute immediate 'drop table tablename purge';
end if;
end;

 ps
使用purge recyclebin可以清除回收站中的所有对象。
类似的我们可以通过purge user_recyclebin或者是purge dba_recyclebin来清除不同的回收站对象。
通过PURGE TABLESPACE TSNAME,PURGE TABLESPACE TSNAME USER USERNAME命令来选择清除回收站。

1:依据已有表创建一个新表  
create table student6 as select * from student where 1=2;  
如果省略where 1=2;则新表不仅拥有已有表的结构,也拥有了已有表的数据。  
2:依据已有表插入数据  
insert into student6 select * from student;  

select * from Company where nvl(sParent,' ')='" + sParent + "'

select SYS_GUID() from dual;

Select TO_CHAR(t.ddate,'YYYY_MM')  ,t.*     from  FullAttendance t

select to_date('2002-02-28','yyyy-mm-dd') from dual;

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;    
SQL中Charindex和Oracle中对应的函数Instr

sql 中 case when  对应  DECODE(field,key,val1,key2,val2,...default)

--grant dba 后 仍然没有create view 权限的处理  当然  grant dba 是不求甚解的做法,不提倡的
   grant all privileges  TO user

--orcle  排序问题  rownum,其他条件优先级
select * from (select * from aa order by rowid desc) where rownum <= 1000;

现负责将现有系统完全兼容 ORCL,上来就直接将select top 1000 *  from tb  order by id  转化为了 select * from tb where rownum<1000 order by id

嗨,之前有测试 以为这样是正确的,做事马虎,其实 rownum 作为orcl 的伪字段  ,

正确: select * from(select * from tb order by id)x where rownum<1000; 

 

0 0
原创粉丝点击