收集的MySQL的面試題分享給大家

來源:互聯網
上載者:User

標籤:資料庫   mysql面試題   mysql   

1、如何登陸mysql資料庫

mysql -u username -p

2、如何開啟/關閉mysql服務

service mysql start/stop

3、查看mysql的狀態

service mysql status

4、如何顯示數所有資料庫

show databases

5、如何擷取表內所有欄位對象的名稱和類型

describe table_name;

6、MYSQL支援事務嗎?

在預設模式下,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 [email protected] WHERE type=1;
COMMIT;

7、MYSQL相比於其他資料庫有哪些特點?

MySQL是一個小型關係型資料庫管理系統,開發人員為瑞典MySQL AB公司,現在已經被Sun公司收購,支援FreeBSD、Linux、MAC、Windows等多種作業系統與其他的大型資料庫例如Oracle、DB2、SQL Server等相比功能稍弱一些
1、可以處理擁有上千萬條記錄的大型資料
2、支援常見的SQL語句規範
3、可移植行高,安裝簡單小巧
4、良好的運行效率,有豐富資訊的網路支援
5、調試、管理,最佳化簡單(相對其他大型資料庫)

8、varchar和char的區別

Char是一種固定長度的類型,varchar是一種可變長度的類型

9、資料庫事物有哪幾種?

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

10、請簡潔地描述下MySQL中InnoDB支援的四種交易隔離等級名稱,以及逐級之間的區別?

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種交易隔離等級分別表現的現象如下表:

11、mysql資料庫引擎MyISAM和InnoDB的區別

12、mysql有關許可權的表都有哪幾個

MySQL伺服器通過許可權表來控制使用者對資料庫的訪問,許可權表存放在mysql資料庫裡,由mysql_install_db指令碼初始化。這些許可權表分別user,db,table_priv,columns_priv和host。下面分別介紹一下這些表的結構和內容:
user許可權表:記錄允許串連到伺服器的使用者帳號資訊,裡面的許可權是全域級的。
db許可權表:記錄各個帳號在各個資料庫上的操作許可權。
table_priv許可權表:記錄資料表級的操作許可權。
columns_priv許可權表:記錄資料列級的操作許可權。
host許可權表:配合db許可權表對給定主機上資料庫級操作許可權作更細緻的控制。這個許可權表不受GRANT和REVOKE語句的影響。

13、mysql儲存引擎有哪些?如何修改mysql儲存引擎?

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;

14、MYSQL 資料表修複及資料恢複面試題
  1. MYSQL資料表在什麼情況下容易損壞?
    伺服器突然斷電導致資料檔案損壞。
    強制關機,沒有先關閉mysql 服務等。
  2. 資料表損壞後的主要現象是什嗎?
    從表中選擇資料之時,得到如下錯誤:Incorrect key file for table: ‘…’. Try to repair it
    查詢不能在表中找到行或返回不完全的資料。
    Error: Table ‘p’ is marked as crashed and should be repaired 。
    開啟表失敗: Can’t open file: ‘×××.MYI’ (errno: 145) 。
  3. 資料表損壞的修複方式有哪些?
    使用 myisamchk 來修複,具體步驟:
    1)修複前將mysql服務停止。
    2)開啟命令列方式,然後進入到mysql的/bin目錄。
    3)執行myisamchk –recover 資料庫所在路徑/*.MYI
    使用repair table 或者 OPTIMIZE table命令來修複,REPAIR TABLE table_name 修複表 OPTIMIZE TABLE table_name 最佳化表 REPAIR TABLE 用於修複被破壞的表。
    OPTIMIZE TABLE 用於回收閑置的資料庫空間,當表上的資料行被刪除時,所佔據的磁碟空間並沒有立即被回收,使用了OPTIMIZE TABLE命令後這些空間將被回收,並且對磁碟上的資料行進行重排(注意:是磁碟上,而非資料庫)
15、MYSQL資料庫伺服器效能分析的方法命令有哪些?

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;

16、 mysql裡記錄貨幣用什麼欄位類型好

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儲存表示那個範圍的相應的端點值。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

收集的MySQL的面試題分享給大家

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.