oracle資料庫之操作總結
阿新 • • 發佈:2019-01-09
## 連線資料庫:
sqlplus test/test#123#@localhost:1521/ORCL
## 查詢資料庫所有的表:
select table_name from user_tables;
## 查詢資料庫表的欄位名:
desc 表名;
## 設定oracle 客戶端的字符集:
- Unix操作:
## 中文字符集 export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"; ## unicode字符集 export NLS_LANG=american_america.AL32UTF8
也可以編輯 bash_profile 檔案進行永久設定:
vi .bash_profile NLS_LANG="Simplified Chinese_china".ZHS16GBK export NLS_LANG
## 使 bash_profile 設定生效
source .bash_profile
- Window操作:
## 中文字符集 set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK ## unicode字符集 set NLS_LANG=american_america.AL32UTF8 也可以通過修改登錄檔鍵值永久設定 HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOMExx/NLS_LANG
## 檢視oracle 客戶端的字符集:
- Unix操作:
## 檢視NLS_LANG
env|grep NLS_LANG
## 修改oracle 服務端的字符集:
## oracle 服務端字符集查詢 SQL>select userenv('language') from dual; ## oracle 服務端字符集修改 1.管理員身份登入。 sqlplus /nolog SQL>conn /as sysdba 2.執行以下操作語句,關閉資料庫,修改設定。 SQL>shutdown immediate; SQL>startup mount SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0; 3.開啟修改後的資料庫,修改字符集為ZHS16GBK。 SQL>alter database open; SQL>ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 4.修改成功,重啟資料庫,檢視當前的字符集。 SQL>shutdown immediate; SQL>startup SQL>select userenv('language') from dual;
## 匯出資料表的insert語句
set head off set heading off set termout off set feedback off set term off set echo off set line 400 set pagesize 10000; spool test.sql; select 'insert into test(ID,NAME,SEX) values('||''''||ID||''''||','||''''||NAME||''''||','||''''||SEX||''''||');' from test; select 'commit;' from dual; spool off;
## 查詢資料庫的例項名
方法一:select instance_name from v$instance; 方法二:show parameter instance
########################################################################################
## 查詢資料庫的下的全部函式
select object_name from user_objects where object_type='FUNCTION';
## 檢視函式內容,引號內的函式名大寫
select text from user_source where name='函式名';
## 查詢資料庫使用者下的全部函式
SELECT * FROM dba_objects WHERE object_type='FUNCTION'and owner='使用者名稱';
## 檢視使用者下函式內容
SELECT dbms_lob.substr(DBMS_METADATA.GET_DDL('FUNCTION', '函式名', '使用者名稱')) FROM dual;
## 建立函式
create or replace function 函式名 函式內容
########################################################################################
## 設定主鍵自增,建立序列
create sequence TEST_SEQUENCE minvalue 1 maxvalue 999999999 start with 1 increment by 1 cache 20; CREATE SEQUENCE seqTest INCREMENT BY 1 start with 1 NOMAXvalue NOCYCLE NOCACHE;
## 建立觸發器
CREATE OR REPLACE TRIGGER test_tri BEFORE INSERT ON test FOR EACH ROW WHEN(new.id IS NULL) BEGIN select seqTest.nextval into :new.id from dual; END;
## 建立表
drop table test; create table test( ID varchar2(4), stu_name varchar2(4), CONSTRAINTS test_id PRIMARY KEY(ID) );
## 查詢所有觸發器
select * from user_triggers;
## 查詢所有序列
select * from user_sequences;
## 刪除觸發器
DROP TRIGGER test_tri;
## 刪除序列
DROP SEQUENCE seqTest;
## 查詢序列當前值
select seqTest.currval from dual;
## 查詢序列下一個值
select seqTest.nextval from dual;
########################################################################################
## 資料表新增欄位
alter table test add my_name varchar2(4)
## 資料表刪除欄位
alter table test drop column my_name
## 修改資料表結構
alter table test modify stu_name varchar2(100);