2020PHP經(jīng)典面試題庫匯總利花,包括如下部分:
- PHP基礎(chǔ)部分
- PHP 高級(jí)部分
- 數(shù)據(jù)庫相關(guān)
- ThinkPHP框架
- Laravel 框架
- smarty模板引擎
- 開發(fā)實(shí)戰(zhàn)部分
- 微信公眾平臺(tái)開發(fā)
- 綜合技術(shù)
數(shù)據(jù)庫相關(guān)
1、常見的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)產(chǎn)品有陵吸?
答:Oracle额获、SQL Server颇象、MySQL儡遮、Sybase、DB2抛杨、Access等够委。
2、SQL語言包括哪幾部分蝶桶?每部分都有哪些操作關(guān)鍵字慨绳?
答:SQL語言包括數(shù)據(jù)定義(DDL)、數(shù)據(jù)操縱(DML),數(shù)據(jù)控制(DCL)和數(shù)據(jù)查詢(DQL)四個(gè)部分真竖。
數(shù)據(jù)定義:Create Table,Alter Table,Drop Table, Craete/Drop Index等
數(shù)據(jù)操縱:Select ,insert,update,delete,
數(shù)據(jù)控制:grant,revoke
數(shù)據(jù)查詢:select
3脐雪、完整性約束包括哪些?
答:數(shù)據(jù)完整性(Data Integrity)是指數(shù)據(jù)的精確(Accuracy)和可靠性(Reliability)恢共。
分為以下四類:
- 實(shí)體完整性:規(guī)定表的每一行在表中是惟一的實(shí)體战秋。
- 域完整性:是指表中的列必須滿足某種特定的數(shù)據(jù)類型約束,其中約束又包括取值范圍讨韭、精度等規(guī)定脂信。
- 參照完整性:是指兩個(gè)表的主關(guān)鍵字和外關(guān)鍵字的數(shù)據(jù)應(yīng)一致,保證了表之間的數(shù)據(jù)的一致性透硝,防止了數(shù)據(jù)丟失或無意義的數(shù)據(jù)在數(shù)據(jù)庫中擴(kuò)散狰闪。
- 用戶定義的完整性:不同的關(guān)系數(shù)據(jù)庫系統(tǒng)根據(jù)其應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件濒生。用戶定義的完整性即是針對(duì)某個(gè)特定關(guān)系數(shù)據(jù)庫的約束條件埋泵,它反映某一具體應(yīng)用必須滿足的語義要求。
與表有關(guān)的約束:包括列約束(NOT NULL(非空約束))和表約束(PRIMARY KEY、foreign key丽声、check礁蔗、UNIQUE) 。
4雁社、什么是事務(wù)浴井?及其特性?
答:事務(wù):是一系列的數(shù)據(jù)庫操作霉撵,是數(shù)據(jù)庫應(yīng)用的基本邏輯單位磺浙。
事務(wù)特性:
(1)原子性:即不可分割性,事務(wù)要么全部被執(zhí)行喊巍,要么就全部不被執(zhí)行屠缭。
(2)一致性或可串性箍鼓。事務(wù)的執(zhí)行使得數(shù)據(jù)庫從一種正確狀態(tài)轉(zhuǎn)換成另一種正確狀態(tài)
(3)隔離性崭参。在事務(wù)正確提交之前,不允許把該事務(wù)對(duì)數(shù)據(jù)的任何改變提供給任何其他事務(wù)款咖,
(4) 持久性何暮。事務(wù)正確提交后,其結(jié)果將永久保存在數(shù)據(jù)庫中铐殃,即使在事務(wù)提交后有了其他故障海洼,事務(wù)的處理結(jié)果也會(huì)得到保存。
或者這樣理解:
事務(wù)就是被綁定在一起作為一個(gè)邏輯工作單元的SQL語句分組富腊,如果任何一個(gè)語句操作失敗那么整個(gè)操作就被失敗坏逢,以后操作就會(huì)回滾到操作前狀態(tài),或者是上有個(gè)節(jié)點(diǎn)赘被。為了確保要么執(zhí)行是整,要么不執(zhí)行,就可以使用事務(wù)民假。要將有組語句作為事務(wù)考慮浮入,就需要通過ACID測(cè)試,即原子性羊异,一致性事秀,隔離性和持久性。
5野舶、什么是鎖易迹?
答:數(shù)據(jù)庫是一個(gè)多用戶使用的共享資源。當(dāng)多個(gè)用戶并發(fā)地存取數(shù)據(jù)時(shí)平道,在數(shù)據(jù)庫中就會(huì)產(chǎn)生多個(gè)事務(wù)同時(shí)存取同一數(shù)據(jù)的情況睹欲。若對(duì)并發(fā)操作不加控制就可能會(huì)讀取和存儲(chǔ)不正確的數(shù)據(jù),破壞數(shù)據(jù)庫的一致性巢掺。
加鎖是實(shí)現(xiàn)數(shù)據(jù)庫并發(fā)控制的一個(gè)非常重要的技術(shù)句伶。當(dāng)事務(wù)在對(duì)某個(gè)數(shù)據(jù)對(duì)象進(jìn)行操作前劲蜻,先向系統(tǒng)發(fā)出請(qǐng)求,對(duì)其加鎖考余。加鎖后事務(wù)就對(duì)該數(shù)據(jù)對(duì)象有了一定的控制先嬉,在該事務(wù)釋放鎖之前,其他的事務(wù)不能對(duì)此數(shù)據(jù)對(duì)象進(jìn)行更新操作楚堤。
基本鎖類型:鎖包括行級(jí)鎖和表級(jí)鎖
6疫蔓、 什么叫視圖?游標(biāo)是什么身冬?
答:視圖是一種虛擬的表衅胀,具有和物理表相同的功能∷煮荩可以對(duì)視圖進(jìn)行增滚躯,改,查嘿歌,操作掸掏,視圖通常是有一個(gè)表或者多個(gè)表的行或列的子集。對(duì)視圖的修改不影響基本表宙帝。它使得我們獲取數(shù)據(jù)更容易丧凤,相比多表查詢。
游標(biāo):是對(duì)查詢出來的結(jié)果集作為一個(gè)單元來有效的處理步脓。游標(biāo)可以定在該單元中的特定行愿待,從結(jié)果集的當(dāng)前行檢索一行或多行⊙セ迹可以對(duì)結(jié)果集當(dāng)前行做修改仍侥。一般不使用游標(biāo),但是需要逐條處理數(shù)據(jù)的時(shí)候蚁廓,游標(biāo)顯得十分重要访圃。
7、什么是存儲(chǔ)過程相嵌?用什么來調(diào)用腿时?
答:存儲(chǔ)過程是一個(gè)預(yù)編譯的SQL語句,優(yōu)點(diǎn)是允許模塊化的設(shè)計(jì)饭宾,就是說只需創(chuàng)建一次批糟,以后在該程序中就可以調(diào)用多次。如果某次操作需要執(zhí)行多次SQL看铆,使用存儲(chǔ)過程比單純SQL語句執(zhí)行要快徽鼎。可以用一個(gè)命令對(duì)象來調(diào)用存儲(chǔ)過程。
8否淤、索引的作用悄但?和它的優(yōu)點(diǎn)缺點(diǎn)是什么?
答:索引就一種特殊的查詢表石抡,數(shù)據(jù)庫的搜索引擎可以利用它加速對(duì)數(shù)據(jù)的檢索檐嚣。它很類似與現(xiàn)實(shí)生活中書的目錄,不需要查詢整本書內(nèi)容就可以找到想要的數(shù)據(jù)。索引可以是唯一的,創(chuàng)建索引允許指定單個(gè)列或者是多個(gè)列忘分。缺點(diǎn)是它減慢了數(shù)據(jù)錄入的速度,同時(shí)也增加了數(shù)據(jù)庫的尺寸大小王浴。
9、如何通俗地理解三個(gè)范式?
答:
第一范式:1NF是對(duì)屬性的原子性約束,要求屬性具有原子性帕涌,不可再分解;
第二范式:2NF是對(duì)記錄的惟一性約束溜嗜,要求記錄有惟一標(biāo)識(shí)宵膨,即實(shí)體的惟一性;
第三范式:3NF是對(duì)字段冗余性的約束炸宵,即任何字段不能由其他字段派生出來,它要求字段沒有冗余谷扣。
10土全、什么是基本表?什么是視圖会涎?
答:基本表是本身獨(dú)立存在的表裹匙,在 SQL 中一個(gè)關(guān)系就對(duì)應(yīng)一個(gè)表。 視圖是從一個(gè)或幾個(gè)基本表導(dǎo)出的表末秃。視圖本身不獨(dú)立存儲(chǔ)在數(shù)據(jù)庫中概页,是一個(gè)虛表
11、試述視圖的優(yōu)點(diǎn)练慕?
答:(1) 視圖能夠簡(jiǎn)化用戶的操作 (2) 視圖使用戶能以多種角度看待同一數(shù)據(jù)惰匙; (3) 視圖為數(shù)據(jù)庫提供了一定程度的邏輯獨(dú)立性; (4) 視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)铃将。
12项鬼、NULL是什么意思
答:NULL這個(gè)值表示UNKNOWN(未知):它不表示“”(空字符串)。對(duì)NULL這個(gè)值的任何比較都會(huì)生產(chǎn)一個(gè)NULL值劲阎。您不能把任何值與一個(gè) NULL值進(jìn)行比較绘盟,并在邏輯上希望獲得一個(gè)答案。
使用IS NULL來進(jìn)行NULL判斷