數據表的設計範式
在實際開發中最為常見的設計範式有三個:
第一範式是最基本的範式。如果數據庫表中的所有字段值都是不可分解的原子值,就說明該數據庫表滿足了第一範式;
第二範式需要确保數據庫表中的每一列都和主鍵相關,而不能隻與主鍵的某一部分相關(主要針對聯合主鍵而言)。也就是說在一個數據庫表中,一個表中隻能保存一種數據,不可以把多種數據保存在同一張數據庫表中;
第三範式需要确保數據表中的每一列數據都和主鍵直接相關,而不能間接相關。
原生的JDBC怎麼連接數據庫?
大家可以在腦海中腦補一下這些步驟對應的代碼,估計框架用習慣了,都有點忘記了吧
關系數據庫中連接池的機制是什麼?關系數據庫中的主鍵和外鍵有什麼關系?
Oracle 端口号?MySQL端口号?
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類型怎麼設計的表結構?請介紹下觸發器的原理
存儲過程裡的語句是一條條按順序執行的嗎?
如何解決SQL注入的問題
使用預編譯對象PreparedStatement
請說說内連接和外連接的區别
#内連接 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
談談對數據庫事務的理解?事務的邊界應該放在哪一層?為什麼?
舉例:
客戶A和客戶B的銀行賬戶金額都是10000元人民币,客戶A需要把自己帳戶中的5000元人民币轉到客戶B的賬戶上。
這個過程看似簡單,實際上涉及了一系列的數據庫操作,可以簡單地視為兩步基本操作,即從客戶A帳戶的金額中扣除5000元人民币,以及将客戶B帳戶中金額添加5000元人民币。
假設第1步數據庫操作成功,而第二步失敗的話,将導緻整個操作失敗,并且客戶A帳戶金額将被扣除5000元人民币。
事務機制可以避免此類情況,以保證整個操作的完成,如果某步操作出錯,之前所作的數據庫操作将全部失效。
談談事務的特性ACID
原子性(ATOMICITY):
事務是數據庫的邏輯工作單位,事務中包含的各操作要麼都完成,要麼都不完成
一緻性(CONSISTENCY):
事務執行的結果必須是使數據庫從一個一緻性狀态變到另一個一緻性狀态。因此當數據庫隻包含成功事務提交的結果時,就說數據庫處于一緻性狀态。
如果數據庫系統運行中發生故障,有些事務尚未完成就被迫中斷,這些未完成事務對數據庫所做的修改有一部分已寫入物理數據庫,這時數據庫就處于一種不正确的狀态,或者說是不一緻的狀态。
隔離性(ISOLATION):
一個事務的執行不能其它事務幹擾。即一個事務内部的操作及使用的數據對其它并發事務是隔離的,并發執行的各個事務之間不能互相幹擾。
持久性(DURABILITY):
指一個事務一旦提交,它對數據庫中的數據的改變就應該是永久性的。接下來的其它操作或故障不應該對其執行結果有任何影響。
談談事務的隔離級别存儲過程是什麼?
存儲過程存儲在數據庫内,可由應用程序通過一個調用執行,而且允許用戶聲明變量、有條件執行以及其它強大的編程功能。
存儲過程在創建時即在服務器上進行編譯,所以執行起來比單個SQL語句快
用過哪些數據庫連接池,為什麼要用數據庫連接池?
作者:阿音來源:後端技術精選,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!