漫画|你还记得原生的JDBC怎么连接数据库吗?
?
?
?
數(shù)據(jù)表的設(shè)計(jì)范式
在實(shí)際開(kāi)發(fā)中最為常見(jiàn)的設(shè)計(jì)范式有三個(gè):
?
第一范式是最基本的范式。如果數(shù)據(jù)庫(kù)表中的所有字段值都是不可分解的原子值,就說(shuō)明該數(shù)據(jù)庫(kù)表滿足了第一范式;
第二范式需要確保數(shù)據(jù)庫(kù)表中的每一列都和主鍵相關(guān),而不能只與主鍵的某一部分相關(guān)(主要針對(duì)聯(lián)合主鍵而言)。也就是說(shuō)在一個(gè)數(shù)據(jù)庫(kù)表中,一個(gè)表中只能保存一種數(shù)據(jù),不可以把多種數(shù)據(jù)保存在同一張數(shù)據(jù)庫(kù)表中;
第三范式需要確保數(shù)據(jù)表中的每一列數(shù)據(jù)都和主鍵直接相關(guān),而不能間接相關(guān)。
原生的JDBC怎么連接數(shù)據(jù)庫(kù)?
?
大家可以在腦海中腦補(bǔ)一下這些步驟對(duì)應(yīng)的代碼,估計(jì)框架用習(xí)慣了,都有點(diǎn)忘記了吧
關(guān)系數(shù)據(jù)庫(kù)中連接池的機(jī)制是什么?
?
關(guān)系數(shù)據(jù)庫(kù)中的主鍵和外鍵有什么關(guān)系?
?
?
Oracle 端口號(hào)?MySQL端口號(hào)?
?
test1表中有ABC三列,用SQL語(yǔ)句實(shí)現(xiàn):當(dāng)A列大于B列時(shí),選擇A列否則選擇B列,當(dāng)B列大于C列時(shí)選擇B列否則選擇C列。
select (CASE WHEN A>B THEN A ELSE B END) as A,(CASE WHEN B>C THEN B ELSE C END) as B from test1?
Long類(lèi)型怎么設(shè)計(jì)的表結(jié)構(gòu)?Boolean類(lèi)型怎么設(shè)計(jì)的表結(jié)構(gòu)?
?
請(qǐng)介紹下觸發(fā)器的原理
?
存儲(chǔ)過(guò)程里的語(yǔ)句是一條條按順序執(zhí)行的嗎?
?
如何解決SQL注入的問(wèn)題
使用預(yù)編譯對(duì)象PreparedStatement
請(qǐng)說(shuō)說(shuō)內(nèi)連接和外連接的區(qū)別
?
?
#內(nèi)連接 select * from student s,classes c where s.c_id = c.id select * from student s INNER JOIN classes c on s.c_id = c.id #外連接 #左外連接 select * from student s LEFT JOIN classes c on s.c_id = c.id #右外連接 select * from student s RIGHT JOIN classes c on s.c_id = c.id?
談?wù)剬?duì)數(shù)據(jù)庫(kù)事務(wù)的理解?事務(wù)的邊界應(yīng)該放在哪一層?為什么?
?
?
舉例:
客戶(hù)A和客戶(hù)B的銀行賬戶(hù)金額都是10000元人民幣,客戶(hù)A需要把自己帳戶(hù)中的5000元人民幣轉(zhuǎn)到客戶(hù)B的賬戶(hù)上。
這個(gè)過(guò)程看似簡(jiǎn)單,實(shí)際上涉及了一系列的數(shù)據(jù)庫(kù)操作,可以簡(jiǎn)單地視為兩步基本操作,即從客戶(hù)A帳戶(hù)的金額中扣除5000元人民幣,以及將客戶(hù)B帳戶(hù)中金額添加5000元人民幣。
假設(shè)第1步數(shù)據(jù)庫(kù)操作成功,而第二步失敗的話,將導(dǎo)致整個(gè)操作失敗,并且客戶(hù)A帳戶(hù)金額將被扣除5000元人民幣。
事務(wù)機(jī)制可以避免此類(lèi)情況,以保證整個(gè)操作的完成,如果某步操作出錯(cuò),之前所作的數(shù)據(jù)庫(kù)操作將全部失效。
談?wù)勈聞?wù)的特性ACID
?
?
原子性(ATOMICITY):
事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位,事務(wù)中包含的各操作要么都完成,要么都不完成
一致性(CONSISTENCY):
事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。因此當(dāng)數(shù)據(jù)庫(kù)只包含成功事務(wù)提交的結(jié)果時(shí),就說(shuō)數(shù)據(jù)庫(kù)處于一致性狀態(tài)。
如果數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行中發(fā)生故障,有些事務(wù)尚未完成就被迫中斷,這些未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)所做的修改有一部分已寫(xiě)入物理數(shù)據(jù)庫(kù),這時(shí)數(shù)據(jù)庫(kù)就處于一種不正確的狀態(tài),或者說(shuō)是不一致的狀態(tài)。
隔離性(ISOLATION):
一個(gè)事務(wù)的執(zhí)行不能其它事務(wù)干擾。即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)其它并發(fā)事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾。
持久性(DURABILITY):
指一個(gè)事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來(lái)的其它操作或故障不應(yīng)該對(duì)其執(zhí)行結(jié)果有任何影響。
談?wù)勈聞?wù)的隔離級(jí)別
?
?
存儲(chǔ)過(guò)程是什么?
?
?
?
存儲(chǔ)過(guò)程存儲(chǔ)在數(shù)據(jù)庫(kù)內(nèi),可由應(yīng)用程序通過(guò)一個(gè)調(diào)用執(zhí)行,而且允許用戶(hù)聲明變量、有條件執(zhí)行以及其它強(qiáng)大的編程功能。
存儲(chǔ)過(guò)程在創(chuàng)建時(shí)即在服務(wù)器上進(jìn)行編譯,所以執(zhí)行起來(lái)比單個(gè)SQL語(yǔ)句快
用過(guò)哪些數(shù)據(jù)庫(kù)連接池,為什么要用數(shù)據(jù)庫(kù)連接池?
?
轉(zhuǎn)載于:https://www.cnblogs.com/javazhiyin/p/10062608.html
總結(jié)
以上是生活随笔為你收集整理的漫画|你还记得原生的JDBC怎么连接数据库吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据结构与算法学习笔记之后进先出的“桶”
- 下一篇: 孙俪个人资料