高級(jí)MySQL數(shù)據(jù)庫(kù)面試問(wèn)題 附答案
因?yàn)橛写蠹业闹С?,我們才能做到現(xiàn)在,感謝你們這一路上對(duì)我們的支持.在這篇文章中,我們將主要針對(duì)MySQL的實(shí)用技巧,講講面試中相關(guān)的問(wèn)題.
1. 如何使用SELECT語(yǔ)句找到你正在運(yùn)行的服務(wù)器的版本并打印出當(dāng)前數(shù)據(jù)庫(kù)的名稱(chēng)?
答:下面的語(yǔ)句的結(jié)果會(huì)顯示服務(wù)器的版本和當(dāng)前的數(shù)據(jù)庫(kù)名稱(chēng)
mysql> SELECT VERSION(), DATABASE(); +-------------------------+------------+ | VERSION() | DATABASE() | +-------------------------+------------+ | 5.5.34-0ubuntu0.13.10.1 | NULL | +-------------------------+------------+ 1 row in set (0.06 sec)
在Database一列中顯示NULL是因?yàn)槲覀儺?dāng)前沒(méi)有選擇任何數(shù)據(jù)庫(kù)。因此,使用下面的語(yǔ)句先選擇一個(gè)數(shù)據(jù)庫(kù),就能看到相應(yīng)的結(jié)果。
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. 使用非運(yùn)算符(!)從表”Tecmint”中列出除了”SAM”以外的所有user記錄
答:使用下面的語(yǔ)句
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'運(yùn)算符有可能帶著非運(yùn)算符(!)一起用嗎?
答:當(dāng)我們使用‘='號(hào)時(shí)用‘AND'連接,用‘!='時(shí)用‘OR'連接,下面是‘='和AND運(yùn)算符一起用的例子
mysql> SELECT * FROM mail WHERE user = SAM AND root = phil
‘!='和OR運(yùn)算符的例子
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 | +---------------------+---------+---------+---------+---------+-------+
= : 等于
!= : 不等于
! : 代表“非”的運(yùn)算符
AND和OR在MySQL中被看作連接運(yùn)算符
4. IFNULL()當(dāng)打在MySQL中有什么作用?
答:使用IFNULL()方法能使MySQL中的查詢(xún)更加精確。IFNULL()方法將會(huì)測(cè)試它的第一個(gè)參數(shù),若不為NULL則返回該參數(shù)的值,否則返回第二個(gè)參數(shù)的值
mysql> SELECT name, IFNULL(id,'Unknown') AS 'id' FROM taxpayer; +---------+---------+ | name | id | +---------+---------+ | bernina | 198-48 | | bertha | Unknown | | ben | Unknown | | bill | 475-83 | +---------+---------+
5. 如果你只想知道從一個(gè)結(jié)果集的開(kāi)頭或者結(jié)尾開(kāi)始的特定幾條記錄,該如何實(shí)現(xiàn)?
答:我們需要把LIMIT語(yǔ)句接在ORDER BY語(yǔ)句后使用,以達(dá)到上述效果。
顯示一行記錄
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該如何選擇,為什么?
答:它們都有各自的優(yōu)點(diǎn)和缺點(diǎn)。考慮到時(shí)間因素,我傾向于MySQL。
選擇MySQL而不選orcale的原因
MySQL開(kāi)源
MySQL輕便快捷
MySQL對(duì)命令行和圖形界面的支持都很好
MySQL支持通過(guò)Query Browser進(jìn)行管理
7. MySQL中如何得到當(dāng)前日期?
答:在MySQL中獲取當(dāng)前日期就是如下的SELECT語(yǔ)句這么簡(jiǎn)單。
mysql> SELECT CURRENT_DATE(); +----------------+ | CURRENT_DATE() | +----------------+ | 2014-06-17 | +----------------+
8. MySQL中如何將表導(dǎo)出為XML文件?
答:我們可以使用'-e'(export)選項(xiàng)來(lái)把MySQL表或整個(gè)數(shù)據(jù)庫(kù)導(dǎo)出到XML文件。當(dāng)處理大型表的時(shí)候我們可能需要手動(dòng)導(dǎo)出,不過(guò)對(duì)于小表的話可以直接使用想phpMyAdmin等這樣的工具。
上面的例子中USER_NAME是數(shù)據(jù)庫(kù)的用戶(hù)名,table_name是待導(dǎo)出為xml文件的表名,table_name.xml是存放數(shù)據(jù)的xml文件
9. MySQL_pconnect是什么? 它和MySQL_connect有什么區(qū)別?
答:MySQL_pconnect()打開(kāi)一個(gè)持久的數(shù)據(jù)庫(kù)連接,這意味著數(shù)據(jù)庫(kù)不是在每次頁(yè)面加載的時(shí)候被打開(kāi)一個(gè)新連接,因此我們不能使用MySQL_close()來(lái)關(guān)閉一個(gè)持久的連接。
MySQL_pconnect和MySQL_connect最簡(jiǎn)要的區(qū)別是:
與MySQL_pconnect不同,MySQL_connect在每次頁(yè)面被加載的時(shí)候打開(kāi)連接,這個(gè)連接可以使用MySQL_close()語(yǔ)句來(lái)關(guān)閉。
10. 當(dāng)你需要查看一個(gè)名為'mysql'的數(shù)據(jù)庫(kù)中'user'表中的所有索引時(shí),你會(huì)如何做?
答:下面的命令將會(huì)顯示出‘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是逗號(hào)分隔值(Comma-Separated Values)或也被稱(chēng)為字符分隔值(Character-Separated Values)的縮寫(xiě)。CSV表以純文本和表格形式來(lái)存儲(chǔ)數(shù)據(jù)。
每一條記錄都使用特定的分隔符隔開(kāi)(如逗號(hào),分號(hào),…),并且每條記錄都有著順序相同的列。CSV表最廣泛地被用來(lái)存儲(chǔ)用于導(dǎo)入和導(dǎo)出的電話聯(lián)系人,并能夠用來(lái)存儲(chǔ)任何類(lèi)型的純文本數(shù)據(jù)。
以上就是本文的全部?jī)?nèi)容,小編還會(huì)帶來(lái)其他你們應(yīng)該會(huì)喜歡的有趣的文章,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
mysql截取json對(duì)象特定數(shù)據(jù)的場(chǎng)景示例詳解
這篇文章主要為大家介紹了mysql中截取json對(duì)象特定數(shù)據(jù)的場(chǎng)景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
mysql通過(guò)binlog日志復(fù)制主從同步的實(shí)現(xiàn)
本文主要介紹了mysql通過(guò)binlog日志復(fù)制主從同步的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05
sql中替換函數(shù)replace()用法與實(shí)例總結(jié)
這篇文章主要給大家介紹了關(guān)于sql中替換函數(shù)replace()用法與實(shí)例的相關(guān)資料,在SQL中REPLACE函數(shù)用于替換一個(gè)字符串中的一部分為另一個(gè)字符串,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
MySQL與PHP的基礎(chǔ)與應(yīng)用專(zhuān)題之?dāng)?shù)據(jù)查詢(xún)
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL?AB?公司開(kāi)發(fā),屬于?Oracle?旗下產(chǎn)品。MySQL?是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,本系列將帶你掌握php與mysql的基礎(chǔ)應(yīng)用,本篇從數(shù)據(jù)的查詢(xún)開(kāi)始2022-02-02
MySQL中json_extract函數(shù)說(shuō)明及使用方式
今天看mysql中的json數(shù)據(jù)類(lèi)型,涉及到一些使用,使用到了函數(shù)json_extract來(lái),下面這篇文章主要給大家介紹了關(guān)于MySQL中json_extract函數(shù)說(shuō)明及使用方式的相關(guān)資料,需要的朋友可以參考下2022-08-08

