漫畫 | 你還記得原生的JDBC怎麼鏈接數據庫嗎?

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

數據表的設計範式

 

在實際開發中最爲常見的設計範式有三個:php

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

第一範式是最基本的範式。若是數據庫表中的全部字段值都是不可分解的原子值,就說明該數據庫表知足了第一範式;數據庫

 

第二範式須要確保數據庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。也就是說在一個數據庫表中,一個表中只能保存一種數據,不能夠把多種數據保存在同一張數據庫表中;編程

 

第三範式須要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關。後端

 

原生的JDBC怎麼鏈接數據庫?

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

你們能夠在腦海中腦補一下這些步驟對應的代碼,估計框架用習慣了,都有點忘記了吧服務器

 

關係數據庫中鏈接池的機制是什麼?

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

關係數據庫中的主鍵和外鍵有什麼關係?

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

Oracle 端口號?MySQL端口號?

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

test1表中有ABC三列,用SQL語句實現:當A列大於B列時,選擇A列不然選擇B列,當B列大於C列時選擇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類型怎麼設計的表結構?Boolean類型怎麼設計的表結構?

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

請介紹下觸發器的原理

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

存儲過程裏的語句是一條條按順序執行的嗎?

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

如何解決SQL注入的問題

 

使用預編譯對象PreparedStatement框架

 

請說說內鏈接和外鏈接的區別

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

#內鏈接
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

 

談談對數據庫事務的理解?事務的邊界應該放在哪一層?爲何?

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

舉例:ide

 

客戶A和客戶B的銀行帳戶金額都是10000元人民幣,客戶A須要把本身賬戶中的5000元人民幣轉到客戶B的帳戶上。spa

 

這個過程看似簡單,實際上涉及了一系列的數據庫操做,能夠簡單地視爲兩步基本操做,即從客戶A賬戶的金額中扣除5000元人民幣,以及將客戶B賬戶中金額添加5000元人民幣。設計

 

假設第1步數據庫操做成功,而第二步失敗的話,將致使整個操做失敗,而且客戶A賬戶金額將被扣除5000元人民幣。

 

事務機制能夠避免此類狀況,以保證整個操做的完成,若是某步操做出錯,以前所做的數據庫操做將所有失效。

 

談談事務的特性ACID

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

原子性(ATOMICITY): 


事務是數據庫的邏輯工做單位,事務中包含的各操做要麼都完成,要麼都不完成

 

一致性(CONSISTENCY): 


事務執行的結果必須是使數據庫從一個一致性狀態變到另外一個一致性狀態。所以當數據庫只包含成功事務提交的結果時,就說數據庫處於一致性狀態。

 

若是數據庫系統運行中發生故障,有些事務還沒有完成就被迫中斷,這些未完成事務對數據庫所作的修改有一部分已寫入物理數據庫,這時數據庫就處於一種不正確的狀態,或者說是不一致的狀態。

 

隔離性(ISOLATION): 


一個事務的執行不能其它事務干擾。即一個事務內部的操做及使用的數據對其它併發事務是隔離的,併發執行的各個事務之間不能互相干擾。

 

持久性(DURABILITY): 


指一個事務一旦提交,它對數據庫中的數據的改變就應該是永久性的。接下來的其它操做或故障不該該對其執行結果有任何影響。

 

談談事務的隔離級別

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

存儲過程是什麼?

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

存儲過程存儲在數據庫內,可由應用程序經過一個調用執行,並且容許用戶聲明變量、有條件執行以及其它強大的編程功能。

 

存儲過程在建立時即在服務器上進行編譯,因此執行起來比單個SQL語句快

 

用過哪些數據庫鏈接池,爲何要用數據庫鏈接池?

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

關注後端技術精選,天天推送優質好文

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

相關文章
相關標籤/搜索