Oracle常用SQL
持续更新中,争取少用Toad执行这些操作,多用命令行
创建表空间(初始大小1024M,自增100M)
CREATE TABLESPACE NNC_DATA01 DATAFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\GORCLTABLESPACE\NNC_DATA04.DBF' SIZE 1024M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;
查询表空间
select file_name,tablespace_name from dba_data_files;
删除表空间
DROP TABLESPACE NNC_DATA01 INCLUDING CONTENTS AND DATAFILES;
创建用户(用户名hie,密码hie,使用的表空间EHRTBS)
create user HIE
identified by "hie"
default tablespace EHRTBS
temporary tablespace TEMP
profile DEFAULT;
-- Grant/Revoke role privileges
grant dba to HIE;
-- Grant/Revoke system privileges
grant unlimited tablespace to HIE;
建表
CREATE TABLE EHR_TEST.UE_XT_YHJS
(
YHJSBID VARCHAR2(32 BYTE) NOT NULL,
JSMC VARCHAR2(50 BYTE),
JSBM VARCHAR2(20 BYTE)
)
TABLESPACE NNC_DATA01----此表用NNC_DATA01表空间
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 256K
NEXT 256K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
COMMENT ON TABLE EHR_TEST.UE_XT_YHJS IS 'T_YHJS(用户角色)';
COMMENT ON COLUMN EHR_TEST.UE_XT_YHJS.YHJSBID IS '用户角色表ID';
COMMENT ON COLUMN EHR_TEST.UE_XT_YHJS.JSMC IS '角色名称1管理员2专业人员3行政人员';
COMMENT ON COLUMN EHR_TEST.UE_XT_YHJS.JSBM IS '角色编码';
建立索引
CREATE UNIQUE INDEX EHR_TEST.PK_UE_XT_YHJS ON EHR_TEST.UE_XT_YHJS
(YHJSBID)
LOGGING
TABLESPACE NNC_DATA01---索引用NNC_DATA01表空间
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 256K
NEXT 256K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOPARALLEL;
建立外键:
ALTER TABLE EHR_TEST.UE_YSJ_SJJ ADD (
CONSTRAINT FK_UE_YSJ_S_REF_UE_YSJ_SJJFL
FOREIGN KEY (SJJFL_ID)
REFERENCES EHR_TEST.UE_YSJ_SJJFL (SJJFL_ID));
创建一样结构的表
create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;
查看表空间使用情况:
select b.file_id 文件ID,
b.tablespace_name 表空间,
b.file_name 物理文件名,
b.bytes 总字节数,
(b.bytes-sum(nvl(a.bytes,0))) 已使用,
sum(nvl(a.bytes,0)) 剩余,
sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_name,b.file_id,b.bytes
order by b.tablespace_name
向表中添加字段:
alter table alist_table add address varchar2(100);
修改字段大小和类型(只有当列值为空时,才可以缩小和修改类型)
alter table alist_table modify address varchar2(80);
基本导出和导入命令:
exp dict_f/dict@ufida18 file=d:\dfsdfd.dmp owner=dict_f
imp dict_f/dict@ufida18 ignore=y full=y file=d:\dict_f_dfmds.dmp
将数据库中system用户与sys用户的表导出:
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
将数据库中的表table1 、table2导出:
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
将数据库中的表table1中的字段filed1以"00"打头的数据导出:
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"