最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Oracle外鍵規(guī)律,分頁查詢,個人對事務(wù),回滾,鎖,視圖,序列,索引,同義詞的理解

2021-03-05 21:27 作者:詩書畫唱  | 我要投稿

前言:有時連我自己都不敢相信,自己每次寫這種干貨滿滿的專欄有時都至少要花5個小時以上,這篇,我就是1點(diǎn)左右,思考,搜索,打字,截圖,理解,創(chuàng)造,創(chuàng)新,記錄,寫代碼等幾乎不間斷時間地寫出來的,寫到21:00左右。


絕對不比一些視頻的制作輕松,而且自己目前這樣堅(jiān)持了幾百篇,有點(diǎn)小成就感。果然,在一些方面和時候,我的耐心和耐力都強(qiáng)得可怕。求三連??!這期的內(nèi)容特別實(shí)用!


內(nèi)容概括:


事務(wù)處理.ppt?

個人對事務(wù)的理解

個人對事務(wù)的隔離性的理解

個人對回滾的理解

個人對行級鎖的運(yùn)用,作用的理解

個人對死鎖的理解

個人對重要作用的視圖的理解?

個人對sequence序列,索引,synonym同義詞的理解

個人對表級鎖的理解

個人對事物的一致性的理解

為什么使用insert語句時要點(diǎn)一個綠色按鈕來提交事物的原因?

作業(yè)?

代碼參考例子


1、創(chuàng)建一個寵物表pet,包含id,name,color,age,type(寵物類型:貓,狗等)

2、創(chuàng)建一個寵物類型表ptype,包含id,name

3、給pet表的type字段和ptype表的id字段添加一個外鍵引用約束。

add constraint ...

外鍵規(guī)律:

【個人總結(jié):有主鍵的放references后面比如ptype表中的id有主鍵】

4、給ptype表創(chuàng)建一個名為pt的同義詞。

5、通過創(chuàng)建序列往兩個表中插入至少三條數(shù)據(jù)

6、創(chuàng)建一個視圖,查詢這個視圖可以看到寵物的name,color,age和typename屬性。

7、對Pet表進(jìn)行分頁查詢:

每頁顯示3條數(shù)據(jù),顯示第2頁的數(shù)據(jù)

每頁顯示10條數(shù)據(jù),顯示第1頁的數(shù)據(jù)


事務(wù)處理.ppt START




事務(wù)處理.ppt END


個人對事務(wù)的理解 START



引例(用來引用說明的例子):

銀行轉(zhuǎn)賬業(yè)務(wù)。

電子商務(wù)網(wǎng)中的用戶購物,庫存與賬戶余額處理。

批量的錄入數(shù)據(jù)。

什么是事務(wù):

一個事務(wù)是一系列連續(xù)的數(shù)據(jù)庫操作,如果其中的任何一步操作失敗,則代表著整個事務(wù)的失敗。


事務(wù)的四大特征:

事務(wù)都應(yīng)該具備ACID特征。所謂ACID是Atomic(原子性),Consistent(一致性),Isolated(隔離性),Durable(持續(xù)性)四個詞的首字母所寫。下面以“銀行轉(zhuǎn)帳”為例來分別說明一下它們的含義:

原子性:組成事務(wù)處理的語句形成了一個邏輯單元,不能只執(zhí)行其中的一部分。換句話說,事務(wù)是不可分割的最小單元。比如:銀行轉(zhuǎn)帳過程中,必須同時從一個帳戶減去轉(zhuǎn)帳金額,并加到另一個帳戶中,只改變一個帳戶是不合理的。

一致性:在事務(wù)處理執(zhí)行前后,數(shù)據(jù)庫是一致的。也就是說,事務(wù)應(yīng)該正確的轉(zhuǎn)換系統(tǒng)狀態(tài)。比如:銀行轉(zhuǎn)帳過程中,要么轉(zhuǎn)帳金額從一個帳戶轉(zhuǎn)入另一個帳戶(操作成功),要么兩個帳戶都不變(操作失敗)。

隔離性:一個事務(wù)處理對另一個事務(wù)處理沒有影響。就是說任何事務(wù)都不可能看到一個處在不完整狀態(tài)下的事務(wù)。比如說,銀行轉(zhuǎn)帳過程中,在轉(zhuǎn)帳事務(wù)沒有提交之前,如果另一個轉(zhuǎn)帳事務(wù)需要修改相應(yīng)的前面事務(wù)的數(shù)據(jù),則需要等待前一事務(wù)完成才可以。

持續(xù)性:事務(wù)處理的效果能夠被永久保存下來。反過來說,事務(wù)應(yīng)當(dāng)能夠承受所有的失敗,包括服務(wù)器、進(jìn)程、通信以及媒體失敗等等。比如:銀行轉(zhuǎn)帳過程中,轉(zhuǎn)帳后帳戶的狀態(tài)要能被保存下來。



個人對事物的理解 END

講義 START



我的賬號和家里的銀行賬號


bank:id,account(賬號),balance(余額)

1 小明? 9800.43

2 家里? 12000


ACID:

A原子性,C一致性,I隔離性,D持續(xù)性


你不還我錢,我就不買車

你不買車,我就不換錢


oracle分頁查詢:使用偽列rownum實(shí)現(xiàn)

每頁顯示4條數(shù)據(jù),顯示第1頁的數(shù)據(jù)

rows = 4;

page = 1;


講義 END

個人對事務(wù)的理解 START


個人對事務(wù)的理解 END

個人對事務(wù)的隔離性的理解 START

個人對事務(wù)的隔離性的理解 END

個人對回滾的理解 START

類時于PS,AU,水果軟件等中的歷史記錄,或是

一些軟件的CTRL+Z的“反悔”和“后退一步”等的功能。這里復(fù)原的是數(shù)據(jù)庫的變化情況。




個人對回滾的理解 END


個人對行級鎖的運(yùn)用,作用的理解 START

最好用代碼“鎖”。

“鎖”上后,別人就改不了數(shù)據(jù)等等。


當(dāng)然這種全變藍(lán)的效果,可能上不了鎖,只是演示下,用代碼上鎖。

個人對行級鎖的運(yùn)用,作用的理解?END


個人對死鎖的理解 START

個人對死鎖的理解 END


個人對重要作用的視圖的理解 START


--創(chuàng)建一個名為proinfo的視圖

create view proinfo as

select t1.pname name,t1.price price,t2.tname?

from product t1,protype t2

where t1.ptype = t2.id;

--查詢視圖

select * from proinfo;

個人對重要作用的視圖的理解 END

個人對sequence序列,索引,synonym同義詞的理解 START

sequence:序列

這個我認(rèn)為還是MySQL的自增的使用更方便



dual是Oracle中的一個偽表,利用這個偽表可以設(shè)置或查看序列,或者是調(diào)用一些內(nèi)置的函數(shù),方便操作。

如:

SELECT SYSDATE FROM dual;

SELECT seq.nextval FROM dual;


簡單來說,dual表就是oracle與數(shù)據(jù)字典自動創(chuàng)建的一張表,這張表是一個單行單列的表,這個表只有1列:DUMMY,數(shù)據(jù)類型為VERCHAR2(1),dual表中只有一個數(shù)據(jù)'X', Oracle有內(nèi)部邏輯保證dual表中永遠(yuǎn)只有一條數(shù)據(jù)。dual表主要是用來選擇系統(tǒng)變量或是求一個表達(dá)式的值。

比如:

--求系統(tǒng)當(dāng)前時間

SELECT sysdate FROM daul

--求系統(tǒng)當(dāng)前時間,并按設(shè)定的格式顯示

select to_char(sysdate,''yyyy-mm-dd hh24:mi:ss'') from dual;

--當(dāng)計(jì)算器使用

select 1+2 from dual


dummy:虛設(shè)




序列就是用來實(shí)現(xiàn)自動增長的,索引就是用來快速查找信息的。




個人認(rèn)為序列是用來查不重復(fù)數(shù)據(jù)用的,比如id列。


同義詞就是別名,是表的列名的別名,類似于我之前使用SQLServer時遇到的“虛擬列”,

或是對象的別名,比如用戶的別名。





--給emp表創(chuàng)建一個別名(同義詞)

--sys賬號登錄

create public synonym a for j190802.emp;

--刪除同義詞

drop public synonym a;

--j190802賬號登錄

select * from a;

【當(dāng)然,我習(xí)慣用dba管理員進(jìn)行創(chuàng)建表,起別名等的操作,上面的代碼的話就是

用sys這個管理員身份的賬號給普通身份的j190802中創(chuàng)建的表起別名,之后退出sys賬號,

用j190802來查看起別名是否生效?!?/p>

synonym:同義詞


個人對sequence序列,索引,synonym同義詞的理解 END


個人對表級鎖的理解 START

個人對表級鎖的理解 END





個人對事物的一致性的理解 START

個人對事物的一致性的理解 END



為什么使用insert語句時要點(diǎn)一個綠色按鈕來提交事物的原因 START




為什么使用insert語句時要點(diǎn)一個綠色按鈕來提交事物的原因 END



作業(yè) START

分頁查詢,序列等的作業(yè) START

?

?1、創(chuàng)建一個寵物表pet,包含id,name,color,age,type(就是typeid,

?寵物類型:貓,狗等)

?【備用語句: drop? table pet;

? drop? table? ptype;

--刪除同義詞:

drop public synonym pt;

--刪除序列:

drop sequence seq_ptype;

drop sequence seq_pet;】

?

答:?

create table pet(

? ? id number primary key,

? ? name varchar2(30) not null,

? ? color varchar2(30),

? ? age number,

? ? typeid number


);

?

?

?

2、創(chuàng)建一個寵物類型表ptype,包含id,name


答:

create table ptype(

? ? id number primary key,

? ? typename varchar2(30) not null

? ?);



3、給pet表的type字段和ptype表的id字段添加一個外鍵引用約束。

add constraint ...


答:

alter table pet add constraint

?FK_pet foreign key(typeid) references ptype(id);

外鍵規(guī)律:

【個人總結(jié):有主鍵的放references后面比如ptype表中的id有主鍵】



4、給ptype表創(chuàng)建一個名為pt的同義詞。

答:

create public synonym pt for ptype;


測試是否成功創(chuàng)建同義詞:

select * from pt


5、通過創(chuàng)建序列往兩個表中插入至少三條數(shù)據(jù)



create sequence seq_ptype

start with 1? ? ? ?--起始值是1

increment by 1? ? ?--增長的值? ?

maxvalue 999999999 --序列號的最大值

minvalue 1? ? ? ? ?--序列號的最小值

nocycle? ? ? ? ? ? --是否循環(huán)

cache 10;? ? ? ? ? --預(yù)存

--select * from ptype

----select seq_ptype.nextval from ptype;【暫時不用】

--select seq_ptype.nextval from dual;【dual是oracle與數(shù)據(jù)字典自動創(chuàng)建的單行單列的表】

--select seq_ptype.currval from dual;

--drop sequence seq_ptype

insert into ptype values(seq_ptype.nextval,'貓');

insert into ptype values(seq_ptype.nextval,'狗');

insert into ptype values(seq_ptype.nextval,'兔子');

--select * from dual




create sequence seq_pet

start with 1? ? ? ?--起始值是1

increment by 1? ? ?--增長的值? ?

maxvalue 999999999 --序列號的最大值

minvalue 1? ? ? ? ?--序列號的最小值

nocycle? ? ? ? ? ? --是否循環(huán)

cache 10;? ? ? ? ? --預(yù)存

--查詢表的內(nèi)容:

--select * from pet

--查詢表的內(nèi)容:

--select * from ptype

--激活序列號:

--select seq_pet.nextval from dual;(用dual代替pet)

--查詢當(dāng)前序列號最大值:

--select seq_pet.currval from dual;(用dual代替pet)


insert into pet values(seq_pet.nextval,'小黑','黑色',5,1);


insert into pet values(seq_pet.nextval,'小紅','紅色',6,2);


insert into pet values(seq_pet.nextval,'小黃','黃色',7,3);

insert into pet values(seq_pet.nextval,'小黑2','黑色',5,1);


insert into pet values(seq_pet.nextval,'小紅2','紅色',6,2);


insert into pet values(seq_pet.nextval,'小黃2','黃色',7,3);

insert into pet values(seq_pet.nextval,'小黑3','黑色',5,1);


insert into pet values(seq_pet.nextval,'小紅3','紅色',6,2);


insert into pet values(seq_pet.nextval,'小黃3','黃色',7,3);


insert into pet values(seq_pet.nextval,'小黑4','黑色',5,1);


insert into pet values(seq_pet.nextval,'小紅4','紅色',6,2);


insert into pet values(seq_pet.nextval,'小黃4','黃色',7,3);

6、創(chuàng)建一個視圖,查詢這個視圖可以看到寵物的name,color,age和typename屬性。


--創(chuàng)建一個名為petAndPtype的視圖

create view petAndPtype as

select p1.name viewName,p1.color viewColor

,p1.age viewAge,p2.typename as viewTypename

from pet p1,Ptype p2

where p1.typeid = p2.id;

--查詢視圖【個人理解,視圖就是“前期寫的多,后面使用時方便,像是使用

--封裝的2表查詢語句為短短的一句,我發(fā)現(xiàn)”封裝“很常用,也的確是減少

--重復(fù),進(jìn)而高效,個人認(rèn)為”封裝“就是編程代碼的核心思想,有了這個思想,

--才出現(xiàn)編程】

select * from petAndPtype;



7、對Pet表進(jìn)行分頁查詢:

每頁顯示3條數(shù)據(jù),顯示第2頁的數(shù)據(jù)

每頁顯示10條數(shù)據(jù),顯示第1頁的數(shù)據(jù)

--rows=3,page=2【自己使用前把公式寫前面就可以快速算出rownum在不同位置的取值

--這個寫公式在前面,類似寫公式等規(guī)律在前面,給公式賦值做數(shù)學(xué)題或按照其他

--規(guī)律做事時更高效】

--end = rows * page=6

--start = (page - 1) * rows + 1=4

?select * from

(select p1.*,rownum r1 from Pet p1

where rownum <= 6)

where r1 >= 4


--rows=10,page=1

--end = rows * page=10

--start = (page - 1) * rows + 1=1

?select * from

(select p1.*,rownum r1 from Pet p1

where rownum <= 10)

where r1 >= 1

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? 分頁查詢,序列等的作業(yè) END?




作業(yè) END

代碼參考例子 START

--創(chuàng)建銀行賬戶表

create table bank(

? ? id number primary key,

? ? account varchar2(30) not null,

? ? balance number(20,2)

);

insert into bank values(1,'小明',9800.43);

insert into bank values(2,'家',12000);

--轉(zhuǎn)賬功能

update bank set balance = balance - 2000 where id = 1;

update bank set balance = balance + 2000 where id = 2;

--提交事務(wù)

commit;

--回滾事務(wù)

--rollback;


--給emp表創(chuàng)建一個別名(同義詞)

--sys賬號登錄

create public synonym a for j190802.emp;

--刪除同義詞

drop public synonym a;

--j190802賬號登錄

select * from a;

--序列,實(shí)現(xiàn)自動增長的列

--創(chuàng)建一個序列

create sequence seq_userinfo

start with 1? ? ? ?--起始值是1

increment by 1? ? ?--增長的值? ?

maxvalue 999999999 --序列號的最大值

minvalue 1? ? ? ? ?--序列號的最小值

nocycle? ? ? ? ? ? --是否循環(huán)

cache 10;? ? ? ? ? --預(yù)存

--激活序列號

select seq_userinfo.nextval from dual;

--查看當(dāng)前的序列號

select seq_userinfo.currval from dual;

--使用序列號實(shí)現(xiàn)自動增長的列的功能

insert into userinfo values(seq_userinfo.nextval,

'測試123',666,sysdate);

insert into userinfo values(seq_userinfo.nextval,

'test123',555,sysdate);


--sys賬號登錄

--授予j190802賬號創(chuàng)建視圖的權(quán)限

grant create view to j190802;

--j190802賬號登錄

--創(chuàng)建一個名為proinfo的視圖

create view proinfo as

select t1.pname name,t1.price price,t2.tname?

from product t1,protype t2

where t1.ptype = t2.id;

--查詢視圖

select * from proinfo;


--分頁查詢userinfo表。

--rows=3,page=2

--end = rows * page

--start = (page - 1) * rows + 1

select * from

(select t.*,rownum rn from userinfo t

where rownum <= 6)

where rn >= 4



代碼參考例子 END


Oracle外鍵規(guī)律,分頁查詢,個人對事務(wù),回滾,鎖,視圖,序列,索引,同義詞的理解的評論 (共 條)

分享到微博請遵守國家法律
桦甸市| 灵武市| 治县。| 松原市| 义乌市| 得荣县| 崇信县| 宾阳县| 古蔺县| 包头市| 谷城县| 永德县| 平泉县| 勃利县| 阿瓦提县| 淮阳县| 通渭县| 故城县| 望奎县| 怀化市| 陇川县| 木兰县| 阳江市| 长乐市| 封丘县| 霞浦县| 临漳县| 冀州市| 江山市| 南涧| 柏乡县| 清新县| 葫芦岛市| 富平县| 贵定县| 佛坪县| 金溪县| 梅州市| 龙里县| 遂平县| 沭阳县|