溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle數(shù)據(jù)庫入門

發(fā)布時間:2020-07-24 14:48:07 來源:網(wǎng)絡(luò) 閱讀:945 作者:走了丶 欄目:關(guān)系型數(shù)據(jù)庫

一、Oracle

1、oracle服務(wù)

1)OracleDBConsoleorcl

Oracle數(shù)據(jù)庫控制臺服務(wù),orcl是Oracle的實(shí)例標(biāo)識,默認(rèn)的實(shí)例為orcl。

2)OracleOraDb11g_home1TNSListener

監(jiān)聽器服務(wù),服務(wù)只有在數(shù)據(jù)庫需要遠(yuǎn)程訪問的時候才需要。

3)OracleServiceORCL

數(shù)據(jù)庫服務(wù)(數(shù)據(jù)庫實(shí)例),是Oracle核心服務(wù),該服務(wù)是數(shù)據(jù)庫啟動的基礎(chǔ),只有該服務(wù)啟動,Oracle數(shù)據(jù)庫才能正常啟動。

啟動順序:OracleOracle_homeTNSListener,OracleServiceORCL,OracleDBConsoleORCL

2、sql*plus

1)常用命令

help[?|topic]

?模糊查詢/topic 具體命令

desc[ribe] 查詢指定對象的數(shù)據(jù)結(jié)構(gòu)

如:desc scott.emp

show option 顯示SQL*Plus系統(tǒng)變量的值或環(huán)境變量的值

如:show user

用戶連接命令:

a、conn[ect] conn 用戶名/密碼@網(wǎng)絡(luò)服務(wù)名 [as sysdba/sysoper]

b、disc[onnect] 斷開與當(dāng)前數(shù)據(jù)庫的連接

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

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

查看系統(tǒng)所有用戶:

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

創(chuàng)建新用戶:具有DBA權(quán)限的用戶執(zhí)行

create user test  identified by 123456

default  tablespace users

temporary tablespace temp

quota 3m on users;

//用戶角色

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

resource Role(資源角色):

提供給用戶另外的權(quán)限以創(chuàng)建他們自己的表、序列、過程、觸發(fā)器、索引和簇。只可以創(chuàng)建實(shí)體,不可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)

dba Role(數(shù)據(jù)庫管理員角色):擁有所有的系統(tǒng)權(quán)限,只有DBA才可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)

用戶授權(quán)

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

sys_privi:表示Oracle系統(tǒng)權(quán)限,系統(tǒng)權(quán)限是一組約定的保留字。

role:角色。

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

public:保留字,代表Oracle系統(tǒng)的所有用戶。

with admin option:表示可再將權(quán)限授予另外的用戶。

如:grant  connet,resource to test;為用戶test授予連接和開發(fā)系統(tǒng)權(quán)限

收回權(quán)限:

revoke sys_privi | role from user | role | public;

如:revoke resource from test;

對象權(quán)限:

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

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

role:角色名

user:被授權(quán)的用戶名

with admin option:表示被授權(quán)者可再將系統(tǒng)權(quán)限授予其他的用戶

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

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

收回對象權(quán)限

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

cascade constraints:表示有關(guān)聯(lián)關(guān)系權(quán)限也被撤銷

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

修改用戶:就是創(chuàng)建新用戶把create關(guān)鍵字替換成alter

解鎖被鎖住的用戶:

alter user test account unlock;

刪除用戶:

drop user 用戶名 [cascade]

cascade:級聯(lián)刪除選項(xiàng),連同該用戶所擁有的對象一起刪除

3)常用數(shù)據(jù)類型

a、字符類型

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

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

b、數(shù)字類型

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

binary_float 32位單精度浮點(diǎn)型

binary_double 64位雙精度浮點(diǎn)型

c、時間類型

date 沒有分秒和時間區(qū)

timestamp 沒有時間區(qū)

timestamp with local time zone 使用數(shù)據(jù)庫時區(qū)

d、大對象類型

blob 二進(jìn)制文件,支持事務(wù)處理

clob 字節(jié)字符數(shù)據(jù),支持事務(wù)處理

nclob unicode數(shù)據(jù),支持事務(wù)處理

bfile lob地址指向文件系統(tǒng)上的二進(jìn)制文件,維護(hù)目錄和文件名,不參與事務(wù),支持只讀

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

a、創(chuàng)建序列需要的權(quán)限:

create sequence 或 create any sequence

b、語法:

CREATE SEQUENCE sequence  //創(chuàng)建序列名稱

[INCREMENT BY n]   //遞增的序列值是n 如果n是正數(shù)就遞增,如果是負(fù)數(shù)就遞減 默認(rèn)是1

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

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

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

[{CYCLE | NOCYCLE}] //循環(huán)/不循環(huán)

[{CACHE n | NOCACHE}]; //分配并存入到內(nèi)存中

如:

create sequence seq_test

increment by 1    --每次加1個

start with 1      --從1開始計(jì)數(shù)

nomaxvalue        --不設(shè)置最大值

minvalue 1        --最小值

nocycle           --一直累加,不循環(huán)

nocache;          --不建緩沖區(qū)

c、序列使用

currval: 返回sequence的當(dāng)前值

nextval: 返回sequence的下一個值

d、注意事項(xiàng)

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

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

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

e、使用觸發(fā)器實(shí)現(xiàn)自增長

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行標(biāo)示符和rownum行號 看不到這兩個列,只在數(shù)據(jù)庫內(nèi)部使用

b、三段式分頁

select * from (

select rownum rn, t.* from (

select * from t_users

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

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

6)常用函數(shù)

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

length(X):返回X的長度

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

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

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

abs(X) X的絕對值

ceil(X) 大于或等于X的最小整數(shù)值

floor(X) 小于或等于X的最大整數(shù)值

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

power(X,Y) X的Y次冪

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

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

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

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

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

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

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

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

3、jdbc連接數(shù)據(jù)庫————同mysql

驅(qū)動類:ojdbc6.jar

類名:oracle.jdbc.driver.OracleDriver

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

user:scott

password:a1s2d3f4


向AI問一下細(xì)節(jié)
推薦閱讀:
  1. HBase入門
  2. kotlin入門

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI