MySQL常用的面試題

2021-08-02 12:39:05 字數 4870 閱讀 5839

mysql -u username -p

service mysql start/stop

service mysql status

show databases

describe table_name;

在預設模式下,mysql是autocommit模式的,所有的資料庫更新操作都會即時提交,所以在預設情況下,mysql是不支援事務的。 

但是如果你的mysql表型別是使用innodb tables 或 bdb tables的話,你的mysql就可以使用事務處理,使用set autocommit=0就可以使mysql允許在非autocommit模式,在非autocommit模式下,你必須使用commit來提交你的更改,或者用rollback來回滾你的更改。 

示例如下:

start transaction; 

select @a:=sum(salary) from table1 where type=1; 

update table2 set summmary=@a where type=1; 

commit;

mysql是乙個小型關係型資料庫管理系統,開發者為瑞典mysql ab公司,現在已經被sun公司收購,支援freebsd、linux、mac、windows等多種作業系統與其他的大型資料庫例如oracle、db2、sql server等相比功能稍弱一些 

1、可以處理擁有上千萬條記錄的大型資料 

2、支援常見的sql語句規範 

3、可移植行高,安裝簡單小巧 

4、良好的執行效率,有豐富資訊的網路支援 

5、除錯、管理,優化簡單(相對其他大型資料庫)

char是一種固定長度的型別,varchar是一種可變長度的型別

隔離性、持續性、一致性、原子性

sql標準定義的四個隔離級別為:

read uncommited:讀取未提交內容 

read committed:讀取提交內容 

repeatable read:可重讀 

serializable:可序列化 

詳細解釋如下:

read uncommitted(讀取未提交內容)

在該隔離級別,所有事務都可以看到其他未提交事務的執行結果。本隔離級別很少用於實際應用,因為它的效能也不比其他級別好多少。讀取未提交的資料,也被稱之為髒讀(dirty read)。 

read committed(讀取提交內容)

這是大多數資料庫系統的預設隔離級別(但不是mysql預設的)。它滿足了隔離的簡單定義:乙個事務只能看見已經提交事務所做的改變。這種隔離級別也支援所謂的不可重複讀(nonrepeatable read),因為同一事務的其他例項在該例項處理其間可能會有新的commit,所以同一select可能返回不同結果。 

repeatable read(可重讀)

這是mysql的預設事務隔離級別,它確保同一事務的多個例項在併發讀取資料時,會看到同樣的資料行。不過理論上,這會導致另乙個棘手的問題:幻讀(phantom read)。簡單的說,幻讀指當使用者讀取某一範圍的資料行時,另乙個事務又在該範圍內插入了新行,當使用者再讀取該範圍的資料行時,會發現有新的「幻影」 行。innodb和falcon儲存引擎通過多版本併發控制(mvcc,multiversion concurrency control 間隙鎖)機制解決了該問題。注:其實多版本只是解決不可重複讀問題,而加上間隙鎖(也就是它這裡所謂的併發控制)才解決了幻讀問題。 

serializable(可序列化)

這是最高的隔離級別,它通過強制事務排序,使之不可能相互衝突,從而解決幻讀問題。簡言之,它是在每個讀的資料行上加上共享鎖。在這個級別,可能導致大量的超時現象和鎖競爭。 

對於不同的事務,採用不同的隔離級別分別有不同的結果。不同的隔離級別有不同的現象。主要有下面3種現在: 

1、髒讀(dirty read):乙個事務可以讀取另乙個尚未提交事務的修改資料。 

2、非重複讀(nonrepeatable read):在同乙個事務中,同乙個查詢在t1時間讀取某一行,在t2時間重新讀取這一行時候,這一行的資料已經發生修改,可能被更新了(update),也可能被刪除了(delete)。 

3、幻像讀(phantom read):在同一事務中,同一查詢多次進行時候,由於其他插入操作(insert)的事務提交,導致每次返回不同的結果集。 

不同的隔離級別有不同的現象,並有不同的鎖定/併發機制,隔離級別越高,資料庫的併發性就越差,4種事務隔離級別分別表現的現象如下表:

mysql伺服器通過許可權表來控制使用者對資料庫的訪問,許可權表存放在mysql資料庫裡,由mysql_install_db指令碼初始化。這些許可權表分別user,db,table_priv,columns_priv和host。下面分別介紹一下這些表的結構和內容: 

user許可權表:記錄允許連線到伺服器的使用者帳號資訊,裡面的許可權是全域性級的。 

db許可權表:記錄各個帳號在各個資料庫上的操作許可權。 

table_priv許可權表:記錄資料表級的操作許可權。 

columns_priv許可權表:記錄資料列級的操作許可權。 

host許可權表:配合db許可權表對給定主機上資料庫級操作許可權作更細緻的控制。這個許可權表不受grant和revoke語句的影響。

myisam indexed sequential access method (有索引的順序訪問方法) 

myisam 具有檢查和修復**的大多數工具。**可以被壓縮,而且支援全文收索 

不是事務安全的,而且不支援外來鍵。 

memory 也是以前的(heap) 該型別表儲存在記憶體中,表的索引是雜湊分布的。 

merge 這些表為了查詢目的,把myisam 表集合作為單個表,因此你可以在某些作業系統中避開最大檔案大小的限制。 

archive 這種型別的表只支援,insert ,select 不支援delete,update,replace ,不使用索引。 

csv 這些表儲存在伺服器的單個檔案中,它包含了用逗號間隔的資料。

innodb 這種表是事務安全的。提供了commit(提交) rollback(實務回滾)支援外來鍵,比myisam慢。 

修改mysql儲存引擎alter table tablename type = innodb;

1、mysql資料表在什麼情況下容易損壞?

2、資料表損壞後的主要現象是什麼?

show status 

一些值得監控的變數值: 

bytes_received和bytes_sent 

和伺服器之間來往的流量。 

com_*伺服器正在執行的命令。 

created_*在查詢執行期限間建立的臨時表和檔案。 

handler_*儲存引擎操作。 

select_*不同型別的聯接執行計畫。 

sort_*幾種排序資訊。 

show session status like 『select』; 

show profiles 

set profiling=1; 

show profiles\g 

show profile;

numeric和decimal型別被mysql實現為同樣的型別,這在sql92標準允許。他們被用於儲存值,該值的準確精度是極其重要的值,例如與金錢有關的資料。當宣告乙個類是這些型別之一時,精度和規模的能被(並且通常是)指定;

例如:

salary decimal(9,2) 

在這個例子中,9(precision)代表將被用於儲存值的總的小數字數,而2(scale)代表將被用於儲存小數點後的位數。因此,在這種情況下,能被儲存在salary列中的值的範圍是從-9999999.99到9999999.99。在ansi/iso sql92中,句法decimal(p)等價於decimal(p,0)。同樣,句法decimal等價於decimal(p,0),這裡實現被允許決定值p。mysql當前不支援decimal/numeric資料型別的這些變種形式的任一種。這一般說來不是乙個嚴重的問題,因為這些型別的主要益處得自于明顯地控制精度和規模的能力。 

decimal和numeric值作為字串儲存,而不是作為二進位制浮點數,以便儲存那些值的小數精度。乙個字元用於值的每一位、小數點(如果scale>0)和「-」符號(對於負值)。如果scale是0,decimal和numeric值不包含小數點或小數部分。 

decimal和numeric值得最大的範圍與double一樣,但是對於乙個給定的decimal或numeric列,實際的範圍可由制由給定列的precision或scale限制。當這樣的列賦給了小數點後面的位超過指定scale所允許的位的值,該值根據scale四捨五入。當乙個decimal或numeric列被賦給了其大小超過指定(或缺省的)precision和scale隱含的範圍的值,mysql儲存表示那個範圍的相應的端點值。

常用面試題

一 mybatis防止sql注入 1 預編譯語句,盡量使用 而不是使用 2 使用儲存過程,用的不多,推薦使用第一種。二 arraylist和linkedlist的區別 1.arraylist是實現了基於動態陣列的資料結構,linkedlist基於鍊錶的資料結構。2.對於隨機訪問get和set,arr...

mysql 不用怕面試題 MySQL 面試題

資料庫事務的四個特性及含義原子性 atomicity 一致性 correspondence 隔離性 isolation 永續性 durability 原子性 整個事務中的所有操作,要麼全部完成,要麼全部不完成。事務在執行過程中發生錯誤,會被回滾 rollback 到事務開始前的狀態,就像這個事務從來...

mysql資料結構面試題 MySQL 面試題

mysql 的一些面試題,有的是平時聊到的,有的是聽別人說的,有的是工作中遇到的,特此彙總一下,有問有答。一條 sql 查詢語句執行流程?1 聯結器。客戶端和伺服器 tcp 握手後,驗證使用者名稱密碼。使用者名稱密碼通過後,聯結器會到許可權表中查詢你擁有的許可權。之後這個連線裡面的許可權判斷邏輯,都...