国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Oracle總結(jié)【視圖、索引、事務(wù)、用戶(hù)權(quán)限、批量操作】

junnplus / 3472人閱讀

摘要:前言在總結(jié)的第一篇中,我們已經(jīng)總結(jié)了一些常用的相關(guān)的知識(shí)點(diǎn)了那么本篇主要總結(jié)關(guān)于視圖序列事務(wù)的一些內(nèi)容在數(shù)據(jù)庫(kù)中,我們可以把各種的語(yǔ)句分為四大類(lèi)數(shù)據(jù)操縱語(yǔ)言,,,數(shù)據(jù)定義語(yǔ)言,,,數(shù)據(jù)控制語(yǔ)言事務(wù)控制語(yǔ)言,,回滾點(diǎn)批量操作何為批量操作,就是

前言

在Oracle總結(jié)的第一篇中,我們已經(jīng)總結(jié)了一些常用的SQL相關(guān)的知識(shí)點(diǎn)了...那么本篇主要總結(jié)關(guān)于Oralce視圖、序列、事務(wù)的一些內(nèi)容...

在數(shù)據(jù)庫(kù)中,我們可以把各種的SQL語(yǔ)句分為四大類(lèi)...

(1)DML(數(shù)據(jù)操縱語(yǔ)言):select,insert,update,delete

(2)DDL(數(shù)據(jù)定義語(yǔ)言):create table,alter table,drop table,truncate table

(3)DCL(數(shù)據(jù)控制語(yǔ)言):grant select any table to scott/revoke select any table from scott

(4)TCL(事務(wù)控制語(yǔ)言):commit,rollback,savepoint to 回滾點(diǎn)

批量操作

何為批量操作,就是一次性插入多條數(shù)據(jù)....在SQL中,我們查詢(xún)出來(lái)的數(shù)據(jù)可看成是一張表,那么我們?cè)诓迦霐?shù)據(jù)的時(shí)候,可以根據(jù)查詢(xún)出來(lái)的數(shù)據(jù)進(jìn)行插入...這就可以看成是批量操作...

值得注意的是,如果沒(méi)有指定插入哪些字段的話(huà),那么查詢(xún)出來(lái)的全部字段均會(huì)插入表中..

將xxx_emp表中所有20號(hào)部門(mén)的員工,復(fù)制到emp表中,批量插入,insert into 表名 select ...語(yǔ)法
insert into emp
select * 
from xxx_emp
where deptno=20;
刪除操作對(duì)比

我們的刪除語(yǔ)法有三種:

delete from

truncate from

drop from

我們來(lái)對(duì)比一下他們的區(qū)別:

drop table

1)屬于DDL

2)不可回滾

3)不可帶where

4)表內(nèi)容和結(jié)構(gòu)刪除

5)刪除速度快

truncate table

1)屬于DDL

2)不可回滾

3)不可帶where

4)表內(nèi)容刪除

5)刪除速度快

delete from

1)屬于DML

2)可回滾

3)可帶where

4)表結(jié)構(gòu)在,表內(nèi)容要看where執(zhí)行的情況

5)刪除速度慢,需要逐行刪除


事務(wù)

事務(wù)其實(shí)我們?cè)贘DBC章節(jié)中已經(jīng)講解過(guò)了,詳情可查看我JDBC的博文。

再次明確一下:事務(wù)就是讓一個(gè)不可分割的子操作形成一個(gè)整體,該整體要么全部執(zhí)行成功,要么全部執(zhí)行失敗

我們值得注意的是Oracle中的事務(wù)與Mysql中的事務(wù)操作是有些不同的:

Oracle的事務(wù)開(kāi)始:

第一條DML操作做為事務(wù)開(kāi)始【并不需要手動(dòng)開(kāi)啟事務(wù)】

Oracle的提交事務(wù)

(1)顯示提交:commit

(2)隱藏提交:DDL/DCL/exit(sqlplus工具)【注意】

Oracle的回滾事務(wù)

(1)顯示回滾:rollback

(2)隱藏回滾:關(guān)閉窗口(sqlplus工具),死機(jī),掉電

因?yàn)?strong>Oracle有實(shí)例池這個(gè)概念,所以O(shè)racle支持回滾...

Oracle默認(rèn)支持的隔離級(jí)別是:read commited

Mysql默認(rèn)支持的隔離級(jí)別是:reapatable read

Oracle中設(shè)置事務(wù)隔離級(jí)別為serializable
set transaction isolation level serializable;

訪(fǎng)問(wèn)其他用戶(hù)的對(duì)象

在上一篇博文已經(jīng)說(shuō)了,Oracle將表/用戶(hù)都看成是對(duì)象...那么我們?cè)趺丛趕cott用戶(hù)下訪(fǎng)問(wèn)hr用戶(hù)下的表呢???

其實(shí),我們只要在訪(fǎng)問(wèn)表的時(shí)候,指定具體的用戶(hù).數(shù)據(jù)庫(kù)表就行了,但是呢,還要看看該用戶(hù)有沒(méi)有權(quán)限查詢(xún)別的用戶(hù)的數(shù)據(jù)表,于是就需要賦予權(quán)限了...

聲明:scott或hr叫用戶(hù)名/方案名/空間名
      scott--tiger
      hr-----lion
      
查詢(xún)當(dāng)前用戶(hù)是誰(shuí)
show user;

查詢(xún)scott自己表空間下的所有對(duì)象時(shí),可加,或不加用戶(hù)名select * from emp;
select * from emp;
或
select * from scott.emp;

以sysdba身份解鎖hr普通帳戶(hù)
alter user hr account unlock;

以sysdba身份設(shè)置hr普通帳戶(hù)的密碼
alter user hr identified by lion;

當(dāng)scott查詢(xún)hr表空間下的所有表時(shí),必須得加用戶(hù)名
select * from hr.jobs;

在默認(rèn)情況下,每個(gè)用戶(hù)只能查詢(xún)自已空間下的對(duì)象的權(quán)限,不能查詢(xún)其它用戶(hù)空間下的對(duì)象

以sysdba身份角色,授予scott用戶(hù)查詢(xún)所有用戶(hù)空間下的對(duì)象權(quán)限
grant select any table to scott;

以sysdba身份,撤銷(xiāo)scott用戶(hù)查詢(xún)所有用戶(hù)空間下的對(duì)象權(quán)限
revoke select any table from scott;

scott自已查看自己所擁有的權(quán)限
select * from user_sys_privs;

從scott用戶(hù)空間導(dǎo)航到sysdba用戶(hù)空間
conn / as sysdba;

從sysdba用戶(hù)空間導(dǎo)航到scott用戶(hù)空間
conn scott/tiger;

從scott用戶(hù)空間導(dǎo)航到hr用戶(hù)空間
conn hr/lion;

查詢(xún)hr用戶(hù)空間中的所有對(duì)象
select * from tab;

從hr用戶(hù)空間導(dǎo)航到scott用戶(hù)空間
conn scott/tiger;

在scott用戶(hù)空間下,查詢(xún)hr用戶(hù)空間下的jobs表,必須加上hr用戶(hù)空間名
select * from hr.jobs;


視圖

視圖是一種基于數(shù)據(jù)表的一種虛表

(1)視圖是一種虛表

(2)視圖建立在已有表的基礎(chǔ)上, 視圖賴(lài)以建立的這些表稱(chēng)為基表

(3)向視圖提供數(shù)據(jù)內(nèi)容的語(yǔ)句為 SELECT 語(yǔ)句,可以將視圖理解為存儲(chǔ)起來(lái)的 SELECT 語(yǔ)句

(4)視圖向用戶(hù)提供基表數(shù)據(jù)的另一種表現(xiàn)形式

(5)視圖沒(méi)有存儲(chǔ)真正的數(shù)據(jù),真正的數(shù)據(jù)還是存儲(chǔ)在基表中

(6)程序員雖然操作的是視圖,但最終視圖還會(huì)轉(zhuǎn)成操作基表

(7)一個(gè)基表可以有0個(gè)或多個(gè)視圖

為什么要用到視圖?

有的時(shí)候,我們可能只關(guān)系一張數(shù)據(jù)表中的某些字段,而另外的一些人只關(guān)系同一張數(shù)據(jù)表的某些字段...

那么把全部的字段都都顯示給他們看,這是不合理的。我們應(yīng)該做到:他們想看到什么樣的數(shù)據(jù),我們就給他們什么樣的數(shù)據(jù)...一方面就能夠讓他們只關(guān)注自己的數(shù)據(jù),另一方面,我們也保證數(shù)據(jù)表一些保密的數(shù)據(jù)不會(huì)泄露出來(lái)...

還有另外一個(gè)原因:

我們?cè)诓樵?xún)數(shù)據(jù)的時(shí)候,常常需要編寫(xiě)非常長(zhǎng)的SQL語(yǔ)句,幾乎每次都要寫(xiě)很長(zhǎng)很長(zhǎng)....上面已經(jīng)說(shuō)了,視圖就是基于查詢(xún)的一種虛表,也就是說(shuō),視圖可以將查詢(xún)出來(lái)的數(shù)據(jù)進(jìn)行封裝。。。那么我們?cè)谑褂玫臅r(shí)候就會(huì)變得非常方便...

小總結(jié):

(1)如果你不想讓用戶(hù)看到所有數(shù)據(jù)(字段,記錄),只想讓用戶(hù)看到某些的數(shù)據(jù)時(shí),此時(shí)可以使用視圖

(2)當(dāng)你需要減化SQL查詢(xún)語(yǔ)句的編寫(xiě)時(shí),可以使用視圖,但不提高查詢(xún)效率


基于emp表所有列,創(chuàng)建視圖emp_view_1,create view 視圖名 as select對(duì)一張或多張基表的查詢(xún)
create view emp_view_1
as
select * from emp;

默認(rèn)情況下,普通用戶(hù)無(wú)權(quán)創(chuàng)建視圖,得讓sysdba為你分配creare view的權(quán)限 

以sysdba身份,授權(quán)scott用戶(hù)create view權(quán)限
grant create view to scott;

以sysdba身份,撤銷(xiāo)scott用戶(hù)create view權(quán)限
revoke create view from scott;

基于emp表指定列,創(chuàng)建視圖emp_view_2,該視圖包含編號(hào)/姓名/工資/年薪/年收入(查詢(xún)中使用列別名)
create view emp_view_2
as
select empno "編號(hào)",ename "姓名",sal "工資",sal*12 "年薪",sal*12+NVL(comm,0) "年收入"
from emp;

基于emp表指定列,創(chuàng)建視圖emp_view_3(a,b,c,d,e),包含編號(hào)/姓名/工資/年薪/年收入(視圖中使用列名)
create view emp_view_3(a,b,c,d,e)
as
select empno "編號(hào)",ename "姓名",sal "工資",sal*12 "年薪",sal*12+NVL(comm,0) "年收入"
from emp;

查詢(xún)emp_view_3創(chuàng)建視圖的結(jié)構(gòu)
desc emp_view_3;

修改emp_view_3(id,name,salary,annual,income)視圖,create or replace view 視圖名 as 子查詢(xún)
create or replace view emp_view_3(id,name,salary,annual,income)
as
select empno "編號(hào)",ename "姓名",sal "工資",sal*12 "年薪",sal*12+NVL(comm,0) "年收入"
from emp;

查詢(xún)emp表,求出各部門(mén)的最低工資,最高工資,平均工資
select min(sal),max(sal),round(avg(sal),0),deptno
from emp
group by deptno;

創(chuàng)建視圖emp_view_4,視圖中包含各部門(mén)的最低工資,最高工資,平均工資
create or replace view emp_view_4
as
select deptno "部門(mén)號(hào)",min(sal) "最低工資",max(sal) "最高工資",round(avg(sal),0) "平均工資"
from emp
group by deptno;

創(chuàng)建視圖emp_view_5,視圖中包含員工編號(hào),姓名,工資,部門(mén)名,工資等級(jí)
create or replace view emp_view_5
as
select e.empno "編號(hào)",e.ename "姓名",e.sal "工資",d.dname "部門(mén)名",s.grade "工資等級(jí)"
from emp e,dept d,salgrade s
where (e.deptno=d.deptno) and (e.sal between s.losal and s.hisal);

刪除視圖emp_view_1中的7788號(hào)員工的記錄,使用delete操作,會(huì)影響基表嗎
delete from emp_view_1 where empno=7788;寫(xiě)法正確,會(huì)影響基表

修改emp_view_1為只讀視圖【with read only】,再執(zhí)行上述delete操作,還行嗎?
create or replace view emp_view_1
as
select * from emp
with read only;
不能進(jìn)行delete操作了

刪除視圖中的【某條】記錄會(huì)影響基表嗎?
會(huì)影響基表

將【整個(gè)】視圖刪除,會(huì)影響表嗎?
不會(huì)影響基表

刪除視圖,會(huì)進(jìn)入回收站嗎?
不會(huì)進(jìn)入回收站

刪除基表會(huì)影響視圖嗎?
會(huì)影響視圖

閃回基表后,視圖有影響嗎?
視圖又可以正常工作了
同義詞

我們?cè)谑褂枚啾聿樵?xún),或者查詢(xún)出來(lái)的表字段意義不清晰的時(shí)候,我們就使用別名來(lái)替代....當(dāng)然了,別名只針對(duì)列名或表名

現(xiàn)在,我們已經(jīng)知道的對(duì)象有用戶(hù)/視圖/表等等其他對(duì)象了,Oracle也提供了同義詞【類(lèi)似于別名】給我們進(jìn)行使用

同義詞的作用

(1)縮短對(duì)象名字的長(zhǎng)度

(2)方便訪(fǎng)問(wèn)其它用戶(hù)的對(duì)象

創(chuàng)建與salgrade表對(duì)應(yīng)的同義詞,create synonym 同義詞 for 表名/視圖/其它對(duì)象
create synonym e for salgrade;
create synonym ev5 for emp_view_5;

以sys身份授予scott普通用戶(hù)create synonym權(quán)限
grant create synonym to scott;

以sys身份從scott普通用戶(hù)撤銷(xiāo)create synonym權(quán)限
revoke create synonym from scott;

使用同義詞操作salgrade表
select * from s;

刪除同義詞
drop synonym ev5;

刪除同義詞,會(huì)影響基表嗎?
不會(huì)影響基表

刪除基表,會(huì)影響同義詞嗎?
會(huì)影響同義詞

序列

Mysql的自動(dòng)增長(zhǎng)可以直接在創(chuàng)建表的時(shí)候,在字段后面跟上auto increament關(guān)鍵字就行了。那Oracle 有沒(méi)有自動(dòng)增長(zhǎng)策略呢???

Oracle使用的是序列這么一個(gè)對(duì)象....

(1)類(lèi)似于MySQL中的auto_increment自動(dòng)增長(zhǎng)機(jī)制,但Oracle中無(wú)auto_increment機(jī)制

(2)是oracle提供的一個(gè)產(chǎn)生唯一數(shù)值型值的機(jī)制

(3)通常用于表的主健值

(4)序列只能保證唯一,不能保證連續(xù)

聲明:oracle中,只有rownum永遠(yuǎn)保持從1開(kāi)始,且繼續(xù)

(5)序列值,可放于內(nèi)存,取之較快

那oralce中的序列和Mysql中的自動(dòng)增長(zhǎng)有啥區(qū)別???

Mysql每張表都會(huì)維護(hù)一個(gè)自動(dòng)增長(zhǎng)的程序...

Oralce會(huì)把序列存放在內(nèi)存中,可以供幾張表使用...

有的同學(xué)可能會(huì)疑問(wèn),我們?cè)诜猪?yè)的時(shí)候用到了rownum這么一個(gè)偽列,為啥不用它來(lái)做自動(dòng)增長(zhǎng)的呢???

rownum的值雖然是唯一和連續(xù)的,但是不能一直唯一標(biāo)識(shí)該記錄...也就是說(shuō),一旦該記錄刪除了,那么rownum的值是會(huì)變的

為什么要用序列

(1)以前我們?yōu)橹鹘≡O(shè)置值,需要人工設(shè)置值,容易出錯(cuò)

(2)以前每張表的主健值,是獨(dú)立的,不能共享

為emp表的empno字段,創(chuàng)建序列emp_empno_seq,create sequence 序列名
create sequence emp_empno_seq;

刪除序列emp_empno_seq,drop sequence 序列名
drop sequence emp_empno_seq;

查詢(xún)emp_empno_seq序列的當(dāng)前值currval和下一個(gè)值nextval,第一次使用序列時(shí),必須選用:序列名.nextval
select emp_empno_seq.nextval from dual;
select emp_empno_seq.currval from dual;

使用序列,向emp表插入記錄,empno字段使用序列值
insert into emp(empno) values(emp_empno_seq.nextval);
insert into emp(empno) values(emp_empno_seq.nextval);
insert into emp(empno) values(emp_empno_seq.nextval);

修改emp_empno_seq序列的increment by屬性為20,默認(rèn)start with是1,alter sequence 序列名
alter sequence emp_empno_seq
increment by 20;

修改修改emp_empno_seq序列的的increment by屬性為5
alter sequence emp_empno_seq
increment by 5;

修改emp_empno_seq序列的start with屬性,行嗎
alter sequence emp_empno_seq
start with 100;

有了序列后,還能為主健手工設(shè)置值嗎?
insert into emp(empno) values(9999);
insert into emp(empno) values(7900);

刪除表,會(huì)影響序列嗎?
你無(wú)法做insert操作,表真正亡,序列亡

刪除序列,會(huì)影響表嗎?

不會(huì)


在hibernate中,如果是訪(fǎng)問(wèn)oracle數(shù)據(jù)庫(kù)服務(wù)器,那么User.hbm.xml映射文件中關(guān)于標(biāo)簽如何配置呢?

   


索引 什么是索引

什么是索引【Index】

(1)是一種快速查詢(xún)表中內(nèi)容的機(jī)制,類(lèi)似于新華字典的目錄
(2)運(yùn)用在表中某個(gè)/些字段上,但存儲(chǔ)時(shí),獨(dú)立于表之外

為什么要用索引

為什么要用索引

(1)通過(guò)指針加速Oracle服務(wù)器的查詢(xún)速度

(2)通過(guò)rowid快速定位數(shù)據(jù)的方法,減少磁盤(pán)I/O

rowid是oracle中唯一確定每張表不同記錄的唯一身份證

索引表把數(shù)據(jù)變成是有序的....

快速定位到硬盤(pán)中的數(shù)據(jù)文件...


rowid特點(diǎn)

rowid的特點(diǎn)

(1)位于每個(gè)表中,但表面上看不見(jiàn),例如:desc emp是看不見(jiàn)的

(2)只有在select中,顯示寫(xiě)出rowid,方可看見(jiàn)

(3)它與每個(gè)表綁定在一起,表亡,該表的rowid亡,二張表rownum可以相同,但rowid必須是唯一的

(4)rowid是18位大小寫(xiě)加數(shù)字混雜體,唯一表代該條記錄在DBF文件中的位置

(5)rowid可以參與=/like比較時(shí),用""單引號(hào)將rowid的值包起來(lái),且區(qū)分大小寫(xiě)

(6)rowid是聯(lián)系表與DBF文件的橋梁

索引特點(diǎn)

索引的特點(diǎn)

(1)索引一旦建立, Oracle管理系統(tǒng)會(huì)對(duì)其進(jìn)行自動(dòng)維護(hù), 而且由Oracle管理系統(tǒng)決定何時(shí)使用索引

(2)用戶(hù)不用在查詢(xún)語(yǔ)句中指定使用哪個(gè)索引

(3)在定義primary key或unique約束后系統(tǒng)自動(dòng)在相應(yīng)的列上創(chuàng)建索引

(4)用戶(hù)也能按自己的需求,對(duì)指定單個(gè)字段或多個(gè)字段,添加索引

需要注意的是:Oracle是自動(dòng)幫我們管理索引的,并且如果我們指定了primary key或者unique約束,系統(tǒng)會(huì)自動(dòng)在對(duì)應(yīng)的列上創(chuàng)建索引..

什么時(shí)候【要】創(chuàng)建索引

(1)表經(jīng)常進(jìn)行 SELECT 操作

(2)表很大(記錄超多),記錄內(nèi)容分布范圍很廣

(3)列名經(jīng)常在 WHERE 子句或連接條件中出現(xiàn)

什么時(shí)候【不要】創(chuàng)建索引

(1)表經(jīng)常進(jìn)行 INSERT/UPDATE/DELETE 操作

(2)表很小(記錄超少)

(3)列名不經(jīng)常作為連接條件或出現(xiàn)在 WHERE 子句中



為emp表的empno單個(gè)字段,創(chuàng)建索引emp_empno_idx,叫單列索引,create index 索引名 on 表名(字段,...)
create index emp_empno_idx
on emp(empno);

為emp表的ename,job多個(gè)字段,創(chuàng)建索引emp_ename_job_idx,多列索引/聯(lián)合索引
create index emp_ename_job 
on emp(ename,job);
如果在where中只出現(xiàn)job不使用索引
如果在where中只出現(xiàn)ename使用索引
我們提倡同時(shí)出現(xiàn)ename和job

注意:索引創(chuàng)建后,只有查詢(xún)表有關(guān),和其它(insert/update/delete)無(wú)關(guān),解決速度問(wèn)題

刪除emp_empno_idx和emp_ename_job_idx索引,drop index 索引名
drop index emp_empno_idx;
drop index emp_ename_job_idx;

權(quán)限與用戶(hù)


一)用戶(hù)
Oracle中的用戶(hù)分為二大類(lèi)
1)Oracle數(shù)據(jù)庫(kù)服務(wù)器創(chuàng)建時(shí),由系統(tǒng)自動(dòng)創(chuàng)建的用戶(hù),叫系統(tǒng)用戶(hù),如sys。
2)利用系統(tǒng)用戶(hù)創(chuàng)建的用戶(hù),叫普通用戶(hù),如scott,hr,c##tiger,zhaojun,...

》用sys登錄,查詢(xún)當(dāng)前Oracle數(shù)據(jù)庫(kù)服務(wù)器中已有用戶(hù)的名字和狀態(tài)
  username表示登錄名
  expired&locked表示帳號(hào)過(guò)期和鎖定
  open表示帳號(hào)現(xiàn)在可用
  sqlplus / as sysdba;
  col username for a30;
  col account_status for a30;
  set pagesize 100;
  select username,account_status from dba_users;
  
  查詢(xún)Oracle中有哪些用戶(hù)
  select * from all_users;



二)創(chuàng)建與刪除普通用戶(hù)
可以在Oracle中創(chuàng)建新的普通用戶(hù),創(chuàng)建普通用戶(hù)命令是:create user,在創(chuàng)建普通用戶(hù)的同時(shí),應(yīng)該為其分配一個(gè)具體的表空間,通常叫users。

》用sys登錄,查詢(xún)Oracle中有哪些可用存儲(chǔ)空間,所有普通用戶(hù)默認(rèn)為users存儲(chǔ)空間
  select * from v$tablespace;

》用sys登錄,創(chuàng)建普通用戶(hù)c##tiger,密碼為abc,默認(rèn)使用users存儲(chǔ)空間,即對(duì)應(yīng)硬盤(pán)上的一個(gè)DBF二進(jìn)制文件
  sqlplus / as sysdba;
  create user c##tiger identified by abc default tablespace users;

》用sys登錄,為c##tiger分配users空間無(wú)限制使用,即數(shù)據(jù)庫(kù)中DBF文件可以無(wú)限增加,一個(gè)DBF文件不夠,會(huì)創(chuàng)建第二個(gè)DBF文件
  sqlplus / as sysdba;
  alter user c##tiger quota unlimited on users;

》用c##tiger登錄,能進(jìn)orcl數(shù)據(jù)庫(kù)嗎?
  sqlplus c##tiger/abc
  進(jìn)不去orcl數(shù)據(jù)庫(kù)

》用sys登錄,刪除普通用戶(hù)c##tiger
  sqlplus / as sysdba;
  drop user c##tiger cascade;



三)了解系統(tǒng)用戶(hù)
sys是Oracle中一個(gè)重要的系統(tǒng)用戶(hù),sys是Oracle中最高權(quán)限用戶(hù),其角色為SYSDBA(系統(tǒng)管理員)
sqlplus / as sysdba



四)權(quán)限
權(quán)限的最終作用于用戶(hù)。即所有用戶(hù)在數(shù)據(jù)庫(kù)內(nèi)的操作對(duì)象和可執(zhí)行的動(dòng)作都是受到限制的。
Oracle中權(quán)限分為二大類(lèi):
1)系統(tǒng)權(quán)限
2)對(duì)象權(quán)限



五)系統(tǒng)權(quán)限
針對(duì)數(shù)據(jù)庫(kù)中特定操作的許可,例如:讓c##tiger能登錄到orcl數(shù)據(jù)庫(kù),能在orcl數(shù)據(jù)庫(kù)中創(chuàng)建表

》用sys登錄,獲取系統(tǒng)權(quán)限的相關(guān)信息,例如:select any table表示針對(duì)所有表的select權(quán)限
  sqlplus / as sysdba;
  select distinct privilege from dba_sys_privs;

》用sys登錄,為c##tiger分配create session與數(shù)據(jù)庫(kù)建立會(huì)話(huà)的權(quán)限,即允許該用戶(hù)登錄
  sqlplus / as sysdba;
  grant create session to c##tiger;

》用c##tiger登錄,能進(jìn)orcl數(shù)據(jù)庫(kù)嗎?
  sqlplus c##tiger/abc
  能進(jìn)去orcl數(shù)據(jù)庫(kù)

》用c##tiger登錄,創(chuàng)建一張tiger的表,能創(chuàng)建嗎?
  sqlplus c##tiger/abc
  create table tiger(
    name varchar2(20)
  );
  這時(shí)c##tiger沒(méi)有權(quán)限創(chuàng)建表

》用sys登錄,為c##tiger分配create table權(quán)限,即允許創(chuàng)建表
  sqlplus / as sysdba;
  grant create table to c##tiger;

》用c##tiger登錄,創(chuàng)建一張tiger的表,能創(chuàng)建嗎?
  sqlplus c##tiger/abc
  create table tiger(
    name varchar2(20)
  );
  可以創(chuàng)建c##tiger表

》用sys登錄,查詢(xún)c##tiger所擁有的系統(tǒng)權(quán)限
  sqlplus / as sysdba;
  select grantee,privilege from dba_sys_privs where lower(grantee) = "c##tiger";
  grantee表示普通用戶(hù)名
  privilege權(quán)限名  

》用sys登錄,撤銷(xiāo)c##tiger的create table權(quán)限
  sqlplus / as sysdba;
  revoke create table from c##tiger;



六)對(duì)象權(quán)限
用戶(hù)對(duì)已有對(duì)象的操作權(quán)限,包括:
1)select可用于表,視圖和序列
2)insert向表或視圖中插入新的記錄
3)update更新表中數(shù)據(jù)
4)delete刪除表中數(shù)據(jù)
5)execute函數(shù),過(guò)程的執(zhí)行
6)index為表創(chuàng)建索引
7)references為表創(chuàng)建外健
8)alter修改表或者序列的屬性

》用sys登錄,查詢(xún)c##tiger所擁有的對(duì)象權(quán)限
  sqlplus / as sysdba;
  col grantee for a10;
  col table_name for a10;
  col privilege for a20;
  select grantee,table_name,privilege from dba_tab_privs where lower(grantee) = "c##tiger";

》用sys登錄,為c##tiger分配對(duì)tiger表的所有權(quán)限,即增刪改查操作
  sqlplus / as sysdba;
  grant all on c##tiger.tiger to c##tiger;
  注意:c##tiger表示空間名
        tiger表示該空間下的表名
  C##TIGER   TIGER      FLASHBACK
  C##TIGER   TIGER      DEBUG
  C##TIGER   TIGER      QUERY REWRITE
  C##TIGER   TIGER      ON COMMIT REFRESH
  C##TIGER   TIGER      REFERENCES
  C##TIGER   TIGER      UPDATE
  C##TIGER   TIGER      SELECT
  C##TIGER   TIGER      INSERT
  C##TIGER   TIGER      INDEX
  C##TIGER   TIGER      DELETE
  C##TIGER   TIGER      ALTER

》用c##tiger登錄,對(duì)tiger表進(jìn)行增刪改查操作
  sqlplus c##tiger/abc;
  insert into tiger(name) values("AA");
  update tiger set name = "BB";
  delete from tiger where rownum = 1;
  select * from tiger;


如果文章有錯(cuò)的地方歡迎指正,大家互相交流。習(xí)慣在微信看技術(shù)文章,想要獲取更多的Java資源的同學(xué),可以關(guān)注微信公眾號(hào):Java3y

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/17703.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<