Linux中國

給linux用戶的11個高級MySQL資料庫面試問題和答案

因為有大家的支持,我們才能做到現在,感謝你們這一路上對我們的支持.在這篇文章中,我們將主要針對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 校對:ReiNoir

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國