發布時間:2024-01-24閱讀(16)
面試過程中最被常用問到的數據庫問題,不單單要記住,還需要理解地記住,只有這樣你才可以在考官問你的時候,舉一反三,今天小編就來聊一聊關于mysql面試題數據結構?接下來我們就一起去研究一下吧!

mysql面試題數據結構
面試過程中最被常用問到的數據庫問題,不單單要記住,還需要理解地記住,只有這樣你才可以在考官問你的時候,舉一反三。
常見的關系型數據庫管理系統產品有?答:Oracle、SQL Server、MySQL、Sybase、DB2、Access 等。
SQL 語言包括哪幾部分?每部分都有哪些操作關鍵字?答:SQL 語言包括數據定義 (DDL)、數據操縱 (DML), 數據控制 (DCL) 和數據查詢(DQL)四個部分。數據定義:Create Table,Alter Table,Drop Table, Craete/Drop Index 等數據操縱:Select ,insert,update,delete,數據控制:grant,revoke數據查詢:select
完整性約束包括哪些?數據完整性 (Data Integrity) 是指數據的精確 (Accuracy) 和 可靠性 (Reliability)。
包括:
(1)實體完整性:規定表的每一行在表中是惟一的實體。
(2)域完整性:是指表中的列必須滿足某種特定的數據類型約束,其中約束又包括取值范圍、精度等規定。
(3)參照完整性:是指兩個表的主關鍵字和外關鍵字的數據應一致,保證了表之間的數據的一致性,防止了數據丟失或無意義的數據在數據庫中擴散。
(4) 用戶定義的完整性:不同的關系數據庫系統根據其應用環境的不同,往往還需要一些特殊的約束條件。用戶定義的完整性即是針對某個特定關系數據庫的約束條件,它反映某一具體應用必須滿足的語義要求。
什么是事務?及其特性?事務:是一系列的數據庫操作,是數據庫應用的基本邏輯單位。
特性:
(1)原子性:即不可分割性,事務要么全部被執行,要么就全部不被執行。
(2)一致性或可串性。事務的執行使得數據庫從一種正確狀態轉換成另一種正確狀態
(3)隔離性。在事務正確提交之前,不允許把該事務對數據的任何改變提供給任何其他事務,
(4) 持久性。事務正確提交后,其結果將永久保存在數據庫中,即使在事務提交后有了其他故障,事務的處理結果也會得到保存。
簡單理解:在事務里的操作,要么全部成功,要么全部失敗。
什么是鎖?數據庫是一個多用戶使用的共享資源。當多個用戶并發地存取數據時,在數據庫中就會產生多個事務同時存取同一數據的情況。若對并發操作不加控制就可能會讀取和存儲不正確的數據,破壞數據庫的一致性。
加鎖是實現數據庫并發控制的一個非常重要的技術。當事務在對某個數據對象進行操作前,先向系統發出請求,對其加鎖。加鎖后事務就對該數據對象有了一定的控制,在該事務釋放鎖之前,其他的事務不能對此數據對象進行更新操作。基本鎖類型:鎖包括行級鎖和表級鎖
什么叫視圖?游標是什么?視圖是一種虛擬的表,具有和物理表相同的功能。可以對視圖進行增,改,查,操作,視圖通常是有一個表或者多個表的行或列的子集。對視圖的修改不影響基本表。它使得我們獲取數據更容易,相比多表查詢。
游標:是對查詢出來的結果集作為一個單元來有效的處理。游標可以定在該單元中的特定行,從結果集的當前行檢索一行或多行。可以對結果集當前行做修改。一般不使用游標,但是需要逐條處理數據的時候,游標顯得十分重要。
什么是存儲過程?用什么來調用?存儲過程是一個預編譯的 SQL 語句,優點是允許模塊化的設計,就是說只需創建一次,以后在該程序中就可以調用多次。如果某次操作需要執行多次 SQL,使用存儲過程比單純 SQL 語句執行要快。可以用一個命令對象來調用存儲過程。
索引的作用?和它的優點缺點是什么?索引就一種特殊的查詢表,數據庫的搜索引擎可以利用它加速對數據的檢索。它很類似于現實生活中書的目錄,不需要查詢整本書內容就可以找到想要的數據。索引可以是唯一的,創建索引允許指定單個列或者是多個列。
缺點是它減慢了數據錄入的速度,同時也增加了數據庫的尺寸大小。
如何通俗地理解三個范式?第一范式:1NF 是對屬性的原子性約束,要求屬性具有原子性,不可再分解;
第二范式:2NF 是對記錄的唯一性約束,要求記錄有惟一標識,即實體的惟一性;
第三范式:3NF 是對字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余。。
什么是基本表?什么是視圖?
基本表是本身獨立存在的表,在 SQL 中一個關系就對應一個表。
視圖是從一個或幾個基本表導出的表。視圖本身不獨立存儲在數據庫中,是一個虛表
試述視圖的優點?(1) 視圖能夠簡化用戶的操作
(2) 視圖使用戶能以多種角度看待同一數據;
(3) 視圖為數據庫提供了一定程度的邏輯獨立性;
(4) 視圖能夠對機密數據提供安全保護。
NULL 是什么意思?NULL 這個值表示 UNKNOWN (未知): 它不表示 “”(空字符串)。
對 NULL 這個值得任何比較都會生產一個 NULL 值。
您不能把任何值與一個 NULL 值進行比較,并在邏輯上希望獲得一個答案。
使用 IS NULL 來進行 NULL 判斷
主鍵、外鍵和索引的區別?定義:主鍵–唯一標識一條記錄,不能有重復的,不允許為空外鍵–表的外鍵是另一表的主鍵,外鍵可以有重復的,可以是空值索引–該字段沒有重復值,但可以有一個空值作用:主鍵–用來保證數據完整性外鍵–用來和其他表建立聯系用的索引–是提高查詢排序的速度個數:主鍵–主鍵只能有一個外鍵–一個表可以有多個外鍵索引–一個表可以有多個唯一索引
你可以用什么來確保表格里的字段只接受特定范圍里的值?Check 限制,它在數據庫表格里被定義,用來限制輸入該列的值。
說說對 SQL 語句優化有哪些方法?(選擇幾條)(1)Where 子句中:where 表之間的連接必須寫在其他 Where 條件之前,那些可以過濾掉最大數量記錄的條件必須寫在 Where 子句的末尾.HAVING 最后。
(2)用 EXISTS 替代 IN、用 NOT EXISTS 替代 NOT IN。
(3) 避免在索引列上使用計算
(4)避免在索引列上使用 IS NULL 和 IS NOT NULL
(5)對查詢進行優化,應盡量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。
(6)應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描
(7)應盡量避免在 where 子句中對字段進行表達式操作,這將導致引擎放棄使用索引而進行全表掃描
SQL 語句中‘相關子查詢’與‘非相關子查詢’有什么區別?
(1)非相關子查詢是獨立于外部查詢的子查詢,子查詢總共執行一次,執行完畢后將值傳遞給外部查詢。
(2)相關子查詢的執行依賴于外部查詢的數據,外部查詢執行一行,子查詢就執行一次。
因此非相關子查詢比相關子查詢效率高
char 和 varchar 的區別?char 是一種固定長度的類型,varchar 則是一種可變長度的類型。
區別:
char (M) 類型的數據列里,每個值都占用 M 個字節,如果某個長度小于 M,MySQL 就會在它的右邊用空格字符補足。(在檢索操作中那些填補出來的空格字符將被去掉)。
varchar (M) 類型的數據列里,每個值只占用剛好夠用的字節再加上一個用來記錄其長度的字節(即總長度為 L 1 字節)。
Mysql 的存儲引擎,MyISAM 和 innodb 的區別。
MyISAM 是非事務的存儲引擎;適合用于頻繁查詢的應用;表鎖,不會出現死鎖;不支持事務。適合小數據,小并發
innodb 是支持事務的存儲引擎;適合于插入和更新操作比較多的應用;設計合理的話是行鎖(最大區別就在鎖的級別上);適合大數據,大并發。
數據表類型有哪些?MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV 等。
MyISAM:成熟、穩定、易于管理,快速讀取。一些功能不支持(事務等),表級鎖。
InnoDB:支持事務、外鍵等特性、數據行鎖定。空間占用大,不支持全文索引等。
MySQL 數據庫作發布系統的存儲,一天五萬條以上的增量,預計運維三年,怎么優化?
(1)設計良好的數據庫結構,允許部分數據冗余,盡量避免 join 查詢,提高效率。
(2) 選擇合適的表字段數據類型和存儲引擎,適當的添加索引。
(3) 做 mysql 主從復制讀寫分離。
(4)對數據表進行分表,減少單表中的數據量提高查詢速度。
(5)添加緩存機制,比如 redis,memcached 等。
(6)對不經常改動的頁面,生成靜態頁面(比如做 ob 緩存)。
(7)書寫高效率的 SQL。比如 SELECT * FROM TABEL 改為 SELECT field_1, field_2, field_3 FROM TABLE.
對于大流量的網站,您采用什么樣的方法來解決各頁面訪問量統計問題?(1) 確認服務器是否能支撐當前訪問量。
(2) 優化數據庫訪問。
(3)禁止外部訪問鏈接(盜鏈), 比如圖片盜鏈。
(4)控制文件下載。
(5)做負載均衡,使用不同主機分流。
(6)使用瀏覽統計軟件,了解訪問量,有針對性的進行優化。
歡迎分享轉載→http://m.avcorse.com/read-212208.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖