1. 程式人生 > >oracle資料庫之操作總結

oracle資料庫之操作總結

## 連線資料庫:

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);