給linux使用者的11個高階MySQL資料庫面試問題和答案
我們已經發表了兩篇MySQL的文章,非常感謝Tecmint社群的大力支援。這是MySQL面試系列的第三篇文章,並且在面試專欄中排第16。
因為有大家的支援,我們才能做到現在,感謝你們這一路上對我們的支援.在這篇文章中,我們將主要針對MySQL的實用技巧,講講面試中相關的問題.
1. 如何使用SELECT語句找到你正在執行的伺服器的版本並列印出當前資料庫的名稱?
答:下面的語句的結果會顯示伺服器的版本和當前的資料庫名稱
mysql> SELECT VERSION(), DATABASE(); +-------------------------+------------+ | VERSION() | DATABASE() | +-------------------------+------------+ | 5.5.34-0ubuntu0.13.10.1 | NULL | +-------------------------+------------+ 1 row in set (0.06 sec)
在Database一列中顯示NULL是因為我們當前沒有選擇任何資料庫。因此,使用下面的語句先選擇一個資料庫,就能看到相應的結果。
mysql> use Tecmint; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
mysql> select VERSION(), DATABASE(); +-------------------------+------------+ | VERSION() | DATABASE() | +-------------------------+------------+ | 5.5.34-0ubuntu0.13.10.1 | tecmint | +-------------------------+------------+ 1 row in set (0.00 sec)
2. 使用非運算子(!)從表"Tecmint"中列出除了"SAM"以外的所有user記錄
答:使用下面的語句
mysql> SELECT * FROM Tecmint WHERE user !=SAM; +---------------------+---------+---------+---------+---------+-------+ | date | user | host | root | local | size | +---------------------+---------+---------+---------+---------+-------+ | 2001-05-14 14:42:21 | Anthony | venus | barb | venus | 98151 | | 2001-05-15 08:50:57 | TIM | venus | phil | venus | 978 | +---------------------+---------+---------+---------+---------+-------+
3. ‘AND’運算子有可能帶著非運算子(!)一起用嗎?
答:當我們使用‘=’號時用‘AND’連線,用‘!=’時用‘OR’連線,下面是‘=’和AND運算子一起用的例子
mysql> SELECT * FROM mail WHERE user = SAM AND root = phil
‘!=’和OR運算子的例子
mysql> SELECT * FROM mail WHERE user != SAM OR root != phil +---------------------+---------+---------+---------+---------+-------+ | date | user | host | root | local | size | +---------------------+---------+---------+---------+---------+-------+ | 2001-05-14 14:42:21 | Anthony | venus | barb | venus | 98151 | +---------------------+---------+---------+---------+---------+-------+
- = : 等於
- != : 不等於
- ! : 代表“非”的運算子
AND和OR在MySQL中被看作連線運算子
4. IFNULL()當打在MySQL中有什麼作用?
答:使用IFNULL()方法能使MySQL中的查詢更加精確。IFNULL()方法將會測試它的第一個引數,若不為NULL則返回該引數的值,否則返回第二個引數的值
mysql> SELECT name, IFNULL(id,'Unknown') AS 'id' FROM taxpayer; +---------+---------+ | name | id | +---------+---------+ | bernina | 198-48 | | bertha | Unknown | | ben | Unknown | | bill | 475-83 | +---------+---------+
5. 如果你只想知道從一個結果集的開頭或者結尾開始的特定幾條記錄,該如何實現?
答:我們需要把LIMIT語句接在ORDER BY語句後使用,以達到上述效果。
顯示一行記錄
mysql> SELECT * FROM name LIMIT 1; +----+------+------------+-------+----------------------+------+ | id | name | birth | color | foods | cats | +----+------+------------+-------+----------------------+------+ | 1 | Fred | 1970-04-13 | black | lutefisk,fadge,pizza | 0 | +----+------+------------+-------+----------------------+------+
顯示5行記錄
mysql> SELECT * FROM profile LIMIT 5; +----+------+------------+-------+-----------------------+------+ | id | name | birth | color | foods | cats | +----+------+------------+-------+-----------------------+------+ | 1 | Fred | 1970-04-13 | black | lutefisk,fadge,pizza | 0 | | 2 | Mort | 1969-09-30 | white | burrito,curry,eggroll | 3 | | 3 | Brit | 1957-12-01 | red | burrito,curry,pizza | 1 | | 4 | Carl | 1973-11-02 | red | eggroll,pizza | 4 | | 5 | Sean | 1963-07-04 | blue | burrito,curry | 5 | +----+------+------------+-------+-----------------------+------+
顯示按照ORDER BY排序後的第一條記錄
mysql> SELECT * FROM profile ORDER BY birth LIMIT 1; +----+------+------------+-------+----------------+------+ | id | name | birth | color | foods | cats | +----+------+------------+-------+----------------+------+ | 9 | Dick | 1952-08-20 | green | lutefisk,fadge | 0 | +----+------+------------+-------+----------------+------+
6. Oracle 和 MySQL該如何選擇,為什麼?
答:它們都有各自的優點和缺點。考慮到時間因素,我傾向於MySQL。
選擇MySQL而不選orcale的原因
- MySQL開源
- MySQL輕便快捷
- MySQL對命令列和圖形介面的支援都很好
- MySQL支援通過Query Browser進行管理
7. MySQL中如何得到當前日期?
答:在MySQL中獲取當前日期就是如下的SELECT語句這麼簡單。
mysql> SELECT CURRENT_DATE(); +----------------+ | CURRENT_DATE() | +----------------+ | 2014-06-17 | +----------------+
8. MySQL中如何將表匯出為XML檔案?
答:我們可以使用'-e'(export)選項來把MySQL表或整個資料庫匯出到XML檔案。當處理大型表的時候我們可能需要手動匯出,不過對於小表的話可以直接使用想phpMyAdmin等這樣的工具。
mysql -u USER_NAME -xml -e 'SELECT * FROM table_name' > table_name.xml
上面的例子中USER_NAME是資料庫的使用者名稱,table_name是待匯出為xml檔案的表名,table_name.xml是存放資料的xml檔案
9. MySQL_pconnect是什麼? 它和MySQL_connect有什麼區別?
答:MySQL_pconnect()開啟一個持久的資料庫連線,這意味著資料庫不是在每次頁面載入的時候被開啟一個新連線,因此我們不能使用MySQL_close()來關閉一個持久的連線。
MySQL_pconnect和MySQL_connect最簡要的區別是:
與MySQL_pconnect不同,MySQL_connect在每次頁面被載入的時候開啟連線,這個連線可以使用MySQL_close()語句來關閉。
10. 當你需要檢視一個名為'mysql'的資料庫中'user'表中的所有索引時,你會如何做?
答:下面的命令將會顯示出‘user’表中所有的索引
mysql> show index from user; +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | user | 0 | PRIMARY | 1 | Host | A | NULL | NULL | NULL | | BTREE | | | | user | 0 | PRIMARY | 2 | User | A | 4 | NULL | NULL | | BTREE | | | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 2 rows in set (0.00 sec)
11. 什麼是CSV表?
答:CSV是逗號分隔值(Comma-Separated Values)或也被稱為字元分隔值(Character-Separated Values)的縮寫。CSV表以純文字和表格形式來儲存資料。
每一條記錄都使用特定的分隔符隔開(如逗號,分號,...),並且每條記錄都有著順序相同的列。CSV表最廣泛地被用來儲存用於匯入和匯出的電話聯絡人,並能夠用來儲存任何型別的純文字資料。
以上就是這次要講的全部內容。我還會帶來其他你們應該會喜歡的有趣的文章。到那時敬請關注並訪問Tecmint,不要忘了在下方的評論欄中留下你們的寶貴意見。
via: http://www.tecmint.com/mysql-advance-interview-questions/ 譯者:GOLinux 譯文:linux.cn
相關文章
- 11個高階MySQL資料庫面試問題和答案MySql資料庫面試
- Java高階面試題及答案Java面試題
- 面試常問的20個資料庫高頻面試題詳解!資料庫面試題
- 經典的八個PHP高階工程面試題(附答案)PHP面試題
- 40個Java集合面試問題和答案Java面試
- 10個有用的Linux命令面試問題及答案Linux面試
- 最全MySQL面試題和答案(三)MySql面試題
- 最全MySQL面試題和答案(四)MySql面試題
- 資料庫習題高階資料庫
- 關於 Linux 核心的10個面試問題與答案Linux面試
- 超詳細MySQL入門教程,這11個MySQL資料庫的高階特性你知道嗎?MySql資料庫
- 面試必備,Linux面試題和答案!Linux面試題
- 40個Java集合面試問題和答案,面試奇葩問題,你掌握了嗎?Java面試
- 最全MySQL面試20題和答案(一)MySql面試
- 最全MySQL面試20題和答案(二)MySql面試
- 高階前端程式設計師面試問題與答案【精選9道】前端程式設計師面試
- Python高階 -- 07 MySQL資料庫PythonMySql資料庫
- 高階Java開發面試解答,Java開發面試題及答案Java面試題
- 24個必須掌握的資料庫面試問題~資料庫面試
- 資料庫面試時常見的26個問題資料庫面試
- 115個Java面試題和答案——終極列表(上)Java面試題
- 115個Java面試題和答案——終極列表(下)Java面試題
- ABAP 面試問題及答案(一):資料庫更新及更改 SAP Standard (轉)面試資料庫
- 高階工程師面試大全- 資料庫篇工程師面試資料庫
- 面試問題記錄 二 (資料庫、Linux、Redis)面試資料庫LinuxRedis
- (四) BAT面試的20道高頻資料庫面試題BAT資料庫面試題
- SQL崗位30個面試題,SQL面試問題及答案SQL面試題
- SAP面試問題答案面試
- python資料庫-MySQL資料庫高階查詢操作(51)Python資料庫MySql
- 大資料數倉高階面試題整理《一》大資料面試題
- 25 個最基本的 JavaScript 面試問題及答案JavaScript面試
- 25個最基本的JavaScript面試問題及答案JavaScript面試
- 最常見的 20 個 jQuery 面試問題及答案jQuery面試
- 最常見的20個jQuery面試問題及答案jQuery面試
- 月薪20+的程式設計師面試都問這些高階技術題(含答案+面試指導)程式設計師面試
- 面試還問這些?甩手就給個讓他僵住的答案!面試
- 資料庫面試簡答、30道高頻面試題資料庫面試題
- 資料庫sql的優化問題的面試題資料庫SQL優化面試題