1. 程式人生 > >Oracle數據庫入門

Oracle數據庫入門

開始 部分 特定 pow sop 關聯關系 begin 數據 截取

一、Oracle

1、oracle服務

1)OracleDBConsoleorcl

Oracle數據庫控制臺服務,orcl是Oracle的實例標識,默認的實例為orcl。

2)OracleOraDb11g_home1TNSListener

監聽器服務,服務只有在數據庫需要遠程訪問的時候才需要。

3)OracleServiceORCL

數據庫服務(數據庫實例),是Oracle核心服務,該服務是數據庫啟動的基礎,只有該服務啟動,Oracle數據庫才能正常啟動。

啟動順序:OracleOracle_homeTNSListener,OracleServiceORCL,OracleDBConsoleORCL

2、sql*plus

1)常用命令

help[?|topic]

?模糊查詢/topic 具體命令

desc[ribe] 查詢指定對象的數據結構

如:desc scott.emp

show option 顯示SQL*Plus系統變量的值或環境變量的值

如:show user

用戶連接命令:

a、conn[ect] conn 用戶名/密碼@網絡服務名 [as sysdba/sysoper]

b、disc[onnect] 斷開與當前數據庫的連接

c、passw[ord] 修改用戶的密碼

d、exit 斷開與數據庫的連接,同時會退出sql*plus

查看系統所有用戶:

select username,account_status from dba_users;

查詢用戶下所有的表:

select table_name from tabs;

select table_name from user_tables;

select tname from tab;

select?*?from?dba_tables?where?owner=‘SCOTT';

2)用戶管理指令

忘記管理員密碼:

sqlplus/nolog

connect/as sysdba

alter user sys identified by sys

創建新用戶:具有DBA權限的用戶執行

create user test identified by 123456

default tablespace users

temporary tablespace temp

quota 3m on users;

//用戶角色

connect Role(連接角色):臨時用戶,特別是那些不需要建表的用戶

resource Role(資源角色):

提供給用戶另外的權限以創建他們自己的表、序列、過程、觸發器、索引和簇。只可以創建實體,不可以創建數據庫結構

dba Role(數據庫管理員角色):擁有所有的系統權限,只有DBA才可以創建數據庫結構

用戶授權

grant sys_privi | role to user | role | public [with admin option]

sys_privi:表示Oracle系統權限,系統權限是一組約定的保留字。

role:角色。

user:具體的用戶名,或者是一些列的用戶名。

public:保留字,代表Oracle系統的所有用戶。

with admin option:表示可再將權限授予另外的用戶。

如:grant connet,resource to test;為用戶test授予連接和開發系統權限

收回權限:

revoke sys_privi | role from user | role | public;

如:revoke resource from test;

對象權限:

grant obj_privi | all column on schema.object to user | role | public [with grant option] | [with hierarchy option]

obj_privi:表示對象的權限,可以是alter、execute、select、update和insert等

role:角色名

user:被授權的用戶名

with admin option:表示被授權者可再將系統權限授予其他的用戶

with hierarchy option:在對象的子對象(在視圖上再建立視圖)上授權給用戶

如:grant select,insert,delete,update on scott.emp to test; 給用戶test授予select、insert表soctt.emp的權限

收回對象權限

revoke obj_privi | all on schema.object from user | role | public cascade constraints

cascade constraints:表示有關聯關系權限也被撤銷

如:revoke delete,update on scott.emp from test; 從test用戶撤銷scott.emp表的update和delete

修改用戶:就是創建新用戶把create關鍵字替換成alter

解鎖被鎖住的用戶:

alter user test account unlock;

刪除用戶:

drop user 用戶名 [cascade]

cascade:級聯刪除選項,連同該用戶所擁有的對象一起刪除

3)常用數據類型

a、字符類型

char(n byte/char) 默認1字節n最大2000 末尾填充空格以達到指定長度

varchar2(n byte/char) 最大長度必須指定最大4000 超過指定長度則報錯

b、數字類型

number(p[,s]) 1-22字節

binary_float 32位單精度浮點型

binary_double 64位雙精度浮點型

c、時間類型

date 沒有分秒和時間區

timestamp 沒有時間區

timestamp with local time zone 使用數據庫時區

d、大對象類型

blob 二進制文件,支持事務處理

clob 字節字符數據,支持事務處理

nclob unicode數據,支持事務處理

bfile lob地址指向文件系統上的二進制文件,維護目錄和文件名,不參與事務,支持只讀

4)sequence序列————主要用於提供主鍵值

a、創建序列需要的權限:

create sequence 或 create any sequence

b、語法:

CREATE SEQUENCE sequence //創建序列名稱

[INCREMENT BY n] //遞增的序列值是n 如果n是正數就遞增,如果是負數就遞減 默認是1

[START WITH n] //開始的值,遞增默認是minvalue 遞減是maxvalue

[{MAXVALUE n | NOMAXVALUE}] //最大值

[{MINVALUE n | NOMINVALUE}] //最小值

[{CYCLE | NOCYCLE}] //循環/不循環

[{CACHE n | NOCACHE}]; //分配並存入到內存中

如:

create sequence seq_test

increment by 1 --每次加1個

start with 1 --從1開始計數

nomaxvalue --不設置最大值

minvalue 1 --最小值

nocycle --一直累加,不循環

nocache; --不建緩沖區

c、序列使用

currval: 返回sequence的當前值

nextval: 返回sequence的下一個值

d、註意事項

currval總是返回當前sequence的值,只有在第一次nextval初始化後,才能使用currval,否則會出錯

第一次nextval返回的值是初始值:隨後的nextval會自動增加定義的increment by值,然後返回增加後的值

使用cache或許會跳號,比如數據庫突然不正常down掉,cache中的sequence就會丟失,可以在定義sequence的時候,使用nocache防止這種情況

e、使用觸發器實現自增長

create or replace

trigger trg_customers before insert on test for each row

begin

select seq_test.nextval into :new.id from dual;

end;

5)分頁

a、偽列

rowid行標示符和rownum行號 看不到這兩個列,只在數據庫內部使用

b、三段式分頁

select * from (

select rownum rn, t.* from (

select * from t_users

) t where rownum<=頁碼值*每頁行數

) where rn>(頁碼-1)*每頁行數

6)常用函數

concat(X,Y):連接字符串X和Y

length(X):返回X的長度

substr(X,start[,length])返回X的子字串,從start處開始,截取length個字符,缺省length,默認到結尾

ltrim(X[,TRIM_STR]):把X的左邊截去trim_str字符串,缺省截去空格

rtim(X[,TRIM_STR]) 把X的右邊截去trim_str字符串

abs(X) X的絕對值

ceil(X) 大於或等於X的最小整數值

floor(X) 小於或等於X的最大整數值

round(X[,Y]) X在第Y位四舍五入

power(X,Y) X的Y次冪

add_months(d,n),在某一個日期 d 上,加上指定的月數 n,返回計算後的新日期。d 表示日期,n 表示加的月數。

last_day(d),返回指定日期當月的最後一天。

extract(fmt FROM d),提取日期中的特定部分。fmt 為:YEAR、DAY等。其中 YEAR、MONTH、DAY可以為 DATE 類型匹配,也可以與 TIMESTAMP 類型匹配;但是 HOUR、MINUTE、SECOND 必須與 TIMESTAMP 類型匹配。

to_char(d|n[,fmt]):把日期和數字轉換為制定格式的字符串。Fmt是格式串

to_date(X,[,fmt]) 把一個字符串以fmt格式轉換成一個日期類型

to_number(X,[,fmt])把一個字符串以fmt格式轉換為一個數字

nvl(X,VALUE):如果X為空,返回value,否則返回X

nvl2(x,value1,value2)如果x非空,返回value1,否則返回value2

3、jdbc連接數據庫————同mysql

驅動類:ojdbc6.jar

類名:oracle.jdbc.driver.OracleDriver

url:jdbc:oracle:thin:@192.168.0.1:1521:orcl

user:scott

password:a1s2d3f4


Oracle數據庫入門