面試題資料庫
A. 資料庫面試題:
create database aaa;
create table users(id int NOT NULL AUTO_INCREMENT,
user_name char(10),money char(10),add_time datetime
PRIMARY KEY (`id`))ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
3.insert into users values(2,'a1','a11',current_date),(3,'a1','a11',current_date),(4,'a1','a11',current_date),(5,'a1','a11',current_date),(6,'a1','a11',current_date),(7,'a1','a11',current_date),(8,'a1','a11',current_date),(9,'a1','a11',current_date),(10,'a1','a11',current_date),(11,'a1','a11',current_date);
4.參考第二步
5.參考第三步
6.select a.username,a.money,b.email,b.user_phone,b.weigh from users a,user_info b
where a.id=b.id and a.id=XXX(你指定的);
7.mysqlmp -uroot -p aaa > /tmp/aaa.sql (需要輸入密碼)
我用的是mysql上的寫法
B. 資料庫常見筆試面試題
資料庫常見筆試面試題
資料庫常見筆試面試題有哪些?資料庫常見筆試面試會考什麼?下面是資料庫常見面試題總結,為大家提供參考。
1、SQL的表連接方式有哪些?
SQL中連接按結果集分為:內連接,外連接,交叉連接
內連接:inner join on,兩表都滿足的組合。內連接分為等值連接,不等連接,自然連接。
等值連接:兩表中相同的列都會出現在結果集中。
自然連接:兩表中具體相同列表的列會合並為同一列出現在結果集中。
外連接:分為左(外)連接,右(外)連接,全連接
左(外)連接:A left (outer) join B,以A表為基礎,A表的全部數據,B表有的組合,沒有的為null。
右(外)連接:A right(outer) join B,以B表為基礎,B表的全部數據,A表有的組合,沒有的位null。
全連接:A full (outer) join 兩表相同的組合在一起,A表有,B表沒有的數據(顯示為null),同樣B表有,A表沒有的顯示為null。
交叉連接:cross join,就是笛卡爾乘積。
2、三範式
1NF:表中的欄位都是單一屬性,不再可分。
2NF:在1NF的基礎上,表中所有的非主屬性都必須完全依賴於任意一組候選鍵,不能僅依賴於候選鍵中的某個屬性。
3NF:在2NF的基礎上,表中所有的屬性都不依賴其他非主屬性。
簡單的說就是:1NF表示每個屬性不可分割,2NF表示非主屬性不存在對主鍵的部分依賴,3NF表示不存在非主屬性對主鍵的依賴傳遞。
3、表的操作
表的創建:create table 表名 (列名1 類型 約束,列2 類型 約束…)
表的刪除: 表名
表的更改(結構的更改,不是記錄的更新):alter table 表名 add|drop 列名|約束名
插入記錄: into 表名…values…
更新記錄:表名 set 列名=值 where 條件
刪除記錄: from 表名 where 條件
4、數據的完整性
數據完整性指的是存儲在資料庫中的數據的一致性和准確性。
完整性分類:
(1)實體完整性:主鍵值必須唯一且非空。(主鍵約束)
(2) 引用完整性(也叫參照完整性):外鍵要麼為空,要麼引用主表中存在的記錄。(外鍵約束)。
(3)用戶自定義完整性:針對某一具體關系資料庫中的約束條件。
5、SQL的查詢優化
(1)從表連接的角度優化:盡量使用內連接,因為內連接是兩表都滿足的行的組合,而外連接是以其中一個表的全部為基準。
(2)盡量使用存儲過程代替臨時寫SQL語句:因為存儲過程是預先編譯好的SQL語句的集合,這樣可以減少編譯時間。
(3)從索引的角度優化:對那些常用的查詢欄位簡歷索引,這樣查詢時值進行索引掃描,不讀取數據塊。
(4)還有一些常用的select優化技巧:
(5)A.只查詢那些需要訪問的欄位,來代替select*
B、將過濾記錄越多的where語句向前移:在一個SQL語句中,如果一個where條件過濾的資料庫記錄越多,定位越准確,則該where條件越應該前移。
6、索引的作用,聚集索引與非聚集索引的區別
索引是一個資料庫對象,使用索引,可以是資料庫程序無須對整個數據進行掃描,就可以在其中找到目標數據,從而提高查找效率。索引的底層採用的是B樹。
聚集索引:根據記錄的key再表中排序數據行。
非聚集索引:獨立於記錄的結構,非聚集所以包含的`key,且每個鍵值項都有指向該簡直的數據行的指針。
聚集索引與非聚集索引的區別:
(1)聚集索引的物理存儲按索引排序,非聚集所以的物理存儲不按索引排序。
(2) 聚集索引插入,更新數據的速度比非聚集索引慢,單查詢速度更快。
(3) 聚集索引的葉級結點保存的是時間的數據項,而非聚集結點的葉級結點保存的是指向數據項的指針。
(4)一個表只能有一個聚集索引(因為只有一種排序方式),但可以有多個非聚集索引。
7、存儲過程與函數的區別
(1)函數有返回值,存儲過程沒有返回值。
(2) 因為存儲過程沒有返回值,所以不能將存儲過程的執行結果賦值給變數;函數有返回值類型,調用函數時,可以將函數的執行結果賦值給變數。也就是說,函數可以在select語句中使用,而存儲過程則不能。
C. 程序員面試題 資料庫裝不下
擴大資料庫的內存。
首先,單庫的數據量會變得越來越大,占據大量的磁碟空間,在進行數據遷移、備份、恢復所需要的時間都會越來越長。其次,系統的容災性將變差,沒有萬無一失的系統,也沒有萬無一失的機器,更沒有萬無一失的運維工程師與程序員,一旦我們的資料庫遭遇到破壞,將會牽連所有的業務與用戶。
最後,是系統的性能會大大降低,讀寫速度會變慢,即便是我們使用了索引,也會發現讀寫的速度越來越慢,這是為什麼呢?有兩個主要的原因,一是隨著數據量的增多,掃描數也會增多,一旦我們的索引不合理,或者沒有命中索引,將帶來災難性的結果,另外一個重要的原因,是索引會變得越來越大,每次變更索引的變更也會消耗時間,並且可能因為索引過大,無法直接存放在內存,每次都需要從磁碟中載入索引,造成速度變慢。
D. 資料庫面試常問問題有哪些
1、什麼是資料庫事務
資料庫事務是構成單一邏輯工作單元的操作集合。資料庫事務可以包括一個或多個資料庫操作,但是這些操作構成一個邏輯上的整體。
2、資料庫事務的四個特性(ACID)
A:原子性,事務中的所有操作作為一個整體不可分割,要麼全部操作要麼全部不操作。
C:一致性,事務的執行結果必須使資料庫從一個一致性狀態轉為另一個一致性狀態。一致性狀態:1.系統狀態滿足資料庫的完整性約束,2.系統的狀態反映資料庫所描述的現實世界的真實狀態。
I:隔離性:並發執行的事務不會相互影響,其對資料庫的影響和他們串列執行時一樣。
D:持久性:事務一旦提交,對資料庫的影響就是持久的。任何事務或系統故障都不會導致數據丟失。
3、什麼是資料庫連接泄露
資料庫連接泄露指的是如果在某次使用或者某段程序中沒有正確地關閉Connection、Statement和ResultSet資源,那麼每次執行都會留下一些沒有關閉的連接,這些連接失去了引用而不能得到重新使用,因此就造成了資料庫連接的泄漏。資料庫連接的資源是寶貴而且是有限的,如果在某段使用頻率很高的代碼中出現這種泄漏,那麼資料庫連接資源將被耗盡,影響系統的正常運轉。
4、聚集索引
數據行的物理順序與列值的順序相同,如果我們查詢id比較靠後的數據,那麼這行數據的地址在磁碟中的物理地址也會比較靠後。而且由於物理排列方式與聚集索引的順序相同,所以也就只能建立一個聚集索引了。
5、主鍵與外鍵
關系型資料庫中的一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成為一個主鍵。
外鍵用於與另一張表的關聯。是能確定另一張表記錄的欄位,用於保持數據的一致性。比如,A表中的一個欄位,是B表的主鍵,那他就可以是A表的外鍵。
E. java面試題中一般資料庫會問什麼內容
資料庫基礎(面試常見題)
一、資料庫基礎
1. 數據抽象:物理抽象、概念抽象、視圖級抽象,內模式、模式、外模式
2. SQL語言包括數據定義、數據操縱(Data Manipulation),數據控制(Data Control)
數據定義:Create Table,Alter Table,Drop Table, Craete/Drop Index等
數據操縱:Select ,insert,update,delete,
數據控制:grant,revoke
3. SQL常用命令:
CREATE TABLE Student(
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(50) NOT NULL);//建表
CREATE VIEW view_name AS
Select * FROM Table_name;//建視圖
Create UNIQUE INDEX index_name ON TableName(col_name);//建索引
INSERT INTO tablename {column1,column2,…} values(exp1,exp2,…);//插入
INSERT INTO Viewname {column1,column2,…} values(exp1,exp2,…);//插入視圖實際影響表
UPDATE tablename SET name=』zang 3』 condition;//更新數據
DELETE FROM Tablename WHERE condition;//刪除
GRANT (Select,delete,…) ON (對象) TO USER_NAME [WITH GRANT OPTION];//授權
REVOKE (許可權表) ON(對象) FROM USER_NAME [WITH REVOKE OPTION] //撤權
列出工作人員及其領導的名字:
Select E.NAME, S.NAME FROM EMPLOYEE E S
WHERE E.SUPERName=S.Name
4. 視圖:
5. 完整性約束:實體完整性、參照完整性、用戶定義完整性
F. 面試常問的資料庫問題及答案
目前在職場中很難找到非常合格的資料庫開發人員。有人說:「SQL開發是一門語言,它很容易學,但是很難掌握。」
在面試應聘的SQL Server資料庫開發人員時,我運用了一套標準的基準技術問題。下面這些問題是我覺得能夠真正有助於淘汰不合格應聘者的問題。它們按照從易到難的順序排列。當你問到關於主鍵和外鍵的問題時,後面的問題都十分有難度,因為答案可能會更難解釋和說明,尤其是在面試的情形下。
你能向我簡要敘述一下SQL Server 2000中使用的一些資料庫對象嗎?
你希望聽到的答案包括這樣一些對象:表格、視圖、用戶定義的函數,以及存儲過程;如果他們還能夠提到像觸發器這樣的對象就更好了。如果應聘者不能回答這個基本的問題,那麼這不是一個好兆頭。
NULL是什麼意思?
NULL(空)這個值是資料庫世界裡一個非常難纏的東西,所以有不少應聘者會在這個問題上跌跟頭您也不要覺得意外。
NULL這個值表示UNKNOWN(未知):它不表示「」(空字元串)。假設您的SQL Server資料庫里有ANSI_NULLS,當然在默認情況下會有,對NULL這個值的任何比較都會生產一個NULL值。您不能把任何值與一個 UNKNOWN值進行比較,並在邏輯上希望獲得一個答案。您必須使用IS NULL操作符。
什麼是索引?SQL Server 2000里有什麼類型的索引?
任何有經驗的資料庫開發人員都應該能夠很輕易地回答這個問題。一些經驗不太多的開發人員能夠回答這個問題,但是有些地方會說不清楚。
簡單地說,索引是一個數據結構,用來快速訪問資料庫表格或者視圖里的數據。在SQL Server里,它們有兩種形式:聚集索引和非聚集索引。聚集索引在索引的葉級保存數據。這意味著不論聚集索引里有表格的哪個(或哪些)欄位,這些欄位都會按順序被保存在表格。由於存在這種排序,所以每個表格只會有一個聚集索引。非聚集索引在索引的葉級有一個行標識符。這個行標識符是一個指向磁碟上數據的指針。它允許每個表格有多個非聚集索引。
什麼是主鍵?什麼是外鍵?
主鍵是表格里的(一個或多個)欄位,只用來定義表格里的行;主鍵里的值總是唯一的。外鍵是一個用來建立兩個表格之間關系的約束。這種關系一般都涉及一個表格里的主鍵欄位與另外一個表格(盡管可能是同一個表格)里的一系列相連的欄位。那麼這些相連的欄位就是外鍵。
什麼是觸發器?SQL Server 2000有什麼不同類型的觸發器?
讓未來的資料庫開發人員知道可用的觸發器類型以及如何實現它們是非常有益的
觸發器是一種專用類型的存儲過程,它被捆綁到SQL Server 2000的表格或者視圖上。在SQL Server 2000里,有INSTEAD-OF和AFTER兩種觸發器。INSTEAD-OF觸發器是替代數據操控語言(Data Manipulation Language,DML)語句對表格執行語句的存儲過程。例如,如果我有一個用於TableA的INSTEAD-OF-UPDATE觸發器,同時對這個表格執行一個更新語句,那麼INSTEAD-OF-UPDATE觸發器里的代碼會執行,而不是我執行的更新語句則不會執行操作。
AFTER觸發器要在DML語句在資料庫里使用之後才執行。這些類型的觸發器對於監視發生在資料庫表格里的數據變化十分好用。
您如何確一個帶有名為Fld1欄位的TableB表格里只具有Fld1欄位里的那些值,而這些值同時在名為TableA的表格的Fld1欄位里?
這個與關系相關的問題有兩個可能的答案。第一個答案(而且是您希望聽到的答案)是使用外鍵限制。外鍵限制用來維護引用的完整性。它被用來確保表格里的欄位只保存有已經在不同的(或者相同的)表格里的另一個欄位里定義了的值。這個欄位就是候選鍵(通常是另外一個表格的主鍵)。
另外一種答案是觸發器。觸發器可以被用來保證以另外一種方式實現與限制相同的作用,但是它非常難設置與維護,而且性能一般都很糟糕。由於這個原因,微軟建議開發人員使用外鍵限制而不是觸發器來維護引用的完整性。
對一個投入使用的在線事務處理表格有過多索引需要有什麼樣的性能考慮?
你正在尋找進行與數據操控有關的應聘人員。對一個表格的索引越多,資料庫引擎用來更新、插入或者刪除數據所需要的時間就越多,因為在數據操控發生的時候索引也必須要維護。
你可以用什麼來確保表格里的欄位只接受特定范圍里的值?
這個問題可以用多種方式來回答,但是只有一個答案是「好」答案。您希望聽到的回答是Check限制,它在資料庫表格里被定義,用來限制輸入該列的值。
觸發器也可以被用來限制資料庫表格里的欄位能夠接受的值,但是這種辦法要求觸發器在表格里被定義,這可能會在某些情況下影響到性能。因此,微軟建議使用Check限制而不是其他的方式來限制域的完整性。
<b?返回參數和output參數之間的區別是什麼?>如果應聘者能夠正確地回答這個問題,那麼他的機會就非常大了,因為這表明他們具有使用存儲過程的經驗。
返回參數總是由存儲過程返回,它用來表示存儲過程是成功還是失敗。返回參數總是INT數據類型。
OUTPUT參數明確要求由開發人員來指定,它可以返回其他類型的數據,例如字元型和數值型的值。(可以用作輸出參數的數據類型是有一些限制的。)您可以在一個存儲過程里使用多個OUTPUT參數,而您只能夠使用一個返回參數。
什麼是相關子查詢?如何使用這些查詢?
經驗更加豐富的開發人員將能夠准確地描述這種類型的查詢。
相關子查詢是一種包含子查詢的特殊類型的查詢。查詢里包含的子查詢會真正請求外部查詢的值,從而形成一個類似於循環的狀況。</b?返回參數和output參數之間的區別是什麼?>
G. oracle資料庫面試問題
oracle資料庫面試問題
Oracle資料庫產品為財富排行榜上的前1000家公司所採用,許多大型網站也選用了Oracle系統。下面是我整理的關於oracle資料庫面試問題,希望大家認真閱讀!
1. 解釋冷備份和熱備份的不同點以及各自的優點
解答:熱備份針對歸檔模式的資料庫,在資料庫仍舊處於工作狀態時進行備份。而冷備份指在資料庫關閉後,進行備份,適用於所有模式的資料庫。熱備份的優點在於當備份時,資料庫仍舊可以被使用並且可以將資料庫恢復到任意一個時間點。冷備份的優點在於它的備份和恢復操作相當簡單,並且由於冷備份的資料庫可以工作在非歸檔模式下,資料庫性能會比歸檔模式稍好。(因為不必將archive log寫入硬碟)
2. 你必須利用備份恢復資料庫,但是你沒有控制文件,該如何解決問題呢?
解答:重建控制文件,用帶backup control file 子句的recover 命令恢復資料庫。
3. 如何轉換init.ora到spfile?
解答:使用create spfile from pfile 命令.
4. 解釋data block , extent 和 segment的區別(這里建議用英文術語)
解答:data block是資料庫中最小的邏輯存儲單元。當資料庫的對象需要更多的物理存儲空間時,連續的data block就組成了extent . 一個資料庫對象擁有的所有extents被稱為該對象的segment.
5. 給出兩個檢查表結構的方法
解答:1.DESCRIBE命令
2.DBMS_METADATA.GET_DDL 包
6. 怎樣查看資料庫引擎的'報錯
解答:alert log.
7. 比較truncate和delete 命令
解答:兩者都可以用來刪除表中所有的記錄。區別在於:truncate是DDL操作,它移動HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花費較長時間.
8. 使用索引的理由
解答:快速訪問表中的data block
9. 給出在STAR SCHEMA中的兩種表及它們分別含有的數據
解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放對fact table 某些屬性描述的信息
10. FACT Table上需要建立何種索引?
解答:點陣圖索引 (bitmap index)
;H. 面試的時候問你熟悉oracle資料庫嗎
如果是開發的話,那還是基於SQL這種語言的語法了,要多自己使用才能熟悉的。 對於oracle資料庫來說,PL/SQL delelopment是重點,除了SQL,還要了解觸發器trigger,存儲過程procere,任務job,視圖view等等。
I. 幾道資料庫面試題
select name from 表名 where score<80
select distinct name,score
from 表名