黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 職業指南 參與開發面試的同學,數據庫開發面試題必看

參與開發面試的同學,數據庫開發面試題必看

更新時間:2022-12-28 11:22:52 來源:動力節點 瀏覽1433次

1.三個范式是什么

第一范式(1NF):數據庫表中的字段都是單一屬性的,不可再分。這個單一屬性由基本類型構成,包括整型、實數、字符型、邏輯型、日期型等。 第二范式(2NF):數據庫表中不存在非關鍵字段對任一候選關鍵字段的部分函數依賴(部分函數依賴指的是存在組合關鍵字中的某些字段決定非關鍵字段的情況),也即所有非關鍵字段都完全依賴于任意一組候選關鍵字。

第三范式(3NF):在第二范式的基礎上,數據表中如果不存在非關鍵字段對任一候選關鍵字段的傳遞函數依賴則符合第三范式。所謂傳遞函數依賴,指的是如果存在"A → B → C"的決定關系,則C傳遞函數依賴于A。因此,滿足第三范式的數據庫表應該不存在如下依賴關系: 關鍵字段 → 非關鍵字段x → 非關鍵字段y

上面的文字我們肯定是看不懂的,也不愿意看下去的。接下來我就總結一下:

首先要明確的是:滿足著第三范式,那么就一定滿足第二范式、滿足著第二范式就一定滿足第一范式

第一范式:字段是最小的的單元不可再分 學生信息組成學生信息表,有年齡、性別、學號等信息組成。這些字段都不可再分,所以它是滿足第一范式的

第二范式:滿足第一范式,表中的字段必須完全依賴于全部主鍵而非部分主鍵。 其他字段組成的這行記錄和主鍵表示的是同一個東西,而主鍵是唯一的,它們只需要依賴于主鍵,也就成了唯一的 學號為1024的同學,姓名為Java3y,年齡是22歲。姓名和年齡字段都依賴著學號主鍵。

第三范式:滿足第二范式,非主鍵外的所有字段必須互不依賴 就是數據只在一個地方存儲,不重復出現在多張表中,可以認為就是消除傳遞依賴 比如,我們大學分了很多系(中文系、英語系、計算機系……),這個系別管理表信息有以下字段組成:系編號,系主任,系簡介,系架構。那我們能不能在學生信息表添加系編號,系主任,系簡介,系架構字段呢?不行的,因為這樣就冗余了,非主鍵外的字段形成了依賴關系(依賴到學生信息表了)!正確的做法是:學生表就只能增加一個系編號字段。

2.什么是視圖?以及視圖的使用場景有哪些?

視圖是一種基于數據表的一種虛表

(1)視圖是一種虛表

(2)視圖建立在已有表的基礎上, 視圖賴以建立的這些表稱為基表

(3)向視圖提供數據內容的語句為 SELECT 語句,可以將視圖理解為存儲起來的 SELECT 語句

(4)視圖向用戶提供基表數據的另一種表現形式

(5)視圖沒有存儲真正的數據,真正的數據還是存儲在基表中

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

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

有的時候,我們可能只關系一張數據表中的某些字段,而另外的一些人只關系同一張數據表的某些字段...

那么把全部的字段都都顯示給他們看,這是不合理的。

我們應該做到:他們想看到什么樣的數據,我們就給他們什么樣的數據...一方面就能夠讓他們只關注自己的數據,另一方面,我們也保證數據表一些保密的數據不會泄露出來...

數據庫開發面試題

我們在查詢數據的時候,常常需要編寫非常長的SQL語句,幾乎每次都要寫很長很長....上面已經說了,視圖就是基于查詢的一種虛表,也就是說,視圖可以將查詢出來的數據進行封裝。。。那么我們在使用的時候就會變得非常方便...

值得注意的是:使用視圖可以讓我們專注與邏輯,但不提高查詢效率

3.索引是什么?有什么作用以及優缺點?

什么是索引【Index】

(1)是一種快速查詢表中內容的機制,類似于新華字典的目錄

(2)運用在表中某個些字段上,但存儲時,獨立于表之外

索引表把數據變成是有序的....

數據庫開發面試題

快速定位到硬盤中的數據文件...

數據庫開發面試題

4.什么是事務?

事務簡單來說:一個Session中所進行所有的操作,要么同時成功,要么同時失敗

ACID — 數據庫事務正確執行的四個基本要素

包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。

一個支持事務(Transaction)中的數據庫系統,必需要具有這四種特性,否則在事務過程(Transaction processing)當中無法保證數據的正確性,交易過程極可能達不到交易。

舉個例子:A向B轉賬,轉賬這個流程中如果出現問題,事務可以讓數據恢復成原來一樣【A賬戶的錢沒變,B賬戶的錢也沒變】。

事例說明:

 
 
		/*
		* 我們來模擬A向B賬號轉賬的場景
		*   A和B賬戶都有1000塊,現在我讓A賬戶向B賬號轉500塊錢
		*
		* */
            //JDBC默認的情況下是關閉事務的,下面我們看看關閉事務去操作轉賬操作有什么問題
 
            //A賬戶減去500塊
            String sql = "UPDATE a SET money=money-500 ";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.executeUpdate();
 
            //B賬戶多了500塊
            String sql2 = "UPDATE b SET money=money+500";
            preparedStatement = connection.prepareStatement(sql2);
            preparedStatement.executeUpdate();
 

從上面看,我們的確可以發現A向B轉賬,成功了。可是**如果A向B轉賬的過程中出現了問題呢?**下面模擬一下

 
			//A賬戶減去500塊
            String sql = "UPDATE a SET money=money-500 ";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.executeUpdate();
			
			//這里模擬出現問題
            int a = 3 / 0;
 
 
            String sql2 = "UPDATE b SET money=money+500";
            preparedStatement = connection.prepareStatement(sql2);
            preparedStatement.executeUpdate();
 

顯然,上面代碼是會拋出異常的,我們再來查詢一下數據。A賬戶少了500塊錢,B賬戶的錢沒有增加。這明顯是不合理的。

我們可以通過事務來解決上面出現的問題

 
			//開啟事務,對數據的操作就不會立即生效。
            connection.setAutoCommit(false);
            
            //A賬戶減去500塊
            String sql = "UPDATE a SET money=money-500 ";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.executeUpdate();
 
            //在轉賬過程中出現問題
            int a = 3 / 0;
 
            //B賬戶多500塊
            String sql2 = "UPDATE b SET money=money+500";
            preparedStatement = connection.prepareStatement(sql2);
            preparedStatement.executeUpdate();
            
            //如果程序能執行到這里,沒有拋出異常,我們就提交數據
            connection.commit();
 
			//關閉事務【自動提交】
			connection.setAutoCommit(true);
            
 
        } catch (SQLException e) {
            try {
                //如果出現了異常,就會進到這里來,我們就把事務回滾【將數據變成原來那樣】
                connection.rollback();
                
                //關閉事務【自動提交】
                connection.setAutoCommit(true);
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
 

上面的程序也一樣拋出了異常,A賬戶錢沒有減少,B賬戶的錢也沒有增加。

注意:當Connection遇到一個未處理的SQLException時,系統會非正常退出,事務也會自動回滾,但如果程序捕獲到了異常,是需要在catch中顯式回滾事務的。

以上就是“參與開發面試的同學,數據庫開發面試題必看”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久午夜夜伦鲁鲁片不卡 | 日本a级片在线观看 | 成 人 黄 色视频免费播放 | 中文字幕亚洲一区二区va在线 | 一级做a爰片性色毛片视频图片 | 亚洲欧美日韩国产精品26u | 97福利视频导航欧美一区 | 大黄网站在线观看 | 国产视频三区 | 特级做a爰片毛片免费看一区 | 国产精品福利在线观看秒播 | 国产一区二区在线视频观看 | 欧美不卡视频 | 6080私人午夜性爽快影院 | 久久99精品久久久久久国产越南 | 精品一区视频 | 清清草视频在线 | jk制服啪啪网站 | 日日夜人人澡人人澡人人看免 | 欧美一区二区三区视视频 | 欧美成a人片在线观看久 | 黄色小视频在线免费观看 | 色偷偷88欧美精品久久久 | 日韩免费在线播放 | 免费观看欧美性一级 | 狠狠的撞进去嗯啊h女强男视频 | 日韩亚洲一区中文字幕 | 天天碰免费视频 | 国产精品视频ccav | 免费特黄视频 | 韩国伦理片在线观看 | 亚洲精品福利 | 日韩国产中文字幕 | 久久99精品久久久久久园产越南 | 日本一区二区三区四区视频 | 高清性色生活片免费视频软件 | 国产高清视频在线观看不卡v | 国产麻豆媒一区一区二区三区 | 免费麻豆国产黄网站在线观看 | 成人在线免费视频播放 | 国产精品免费看香蕉 |