面向 Linux 用户的 11 个高级 MySQL 数据库“面试问题及答案”
我们已经发表了两篇 MySQL 文章,得到了示例社区的一致好评。这是 MySQL 访谈系列的第三篇文章,也是访谈类型专栏的第十六篇文章。
我们之所以能走到今天,全赖你们的支持,我们也希望你们在未来也能给予我们同样的支持。在本文中,我们将集中讨论 MySQL 的实用方面,即与面试相关的问题。
1. 使用 SELECT 语句查找正在运行的服务器的版本并打印当前数据库的名称?
答:下面的 MySQL 命令将显示服务器版本和当前选择的数据库。
mysql> SELECT VERSION(), DATABASE(); +-------------------------+------------+ | VERSION() | DATABASE() | +-------------------------+------------+ | 5.5.34-0ubuntu0.13.10.1 | NULL | +-------------------------+------------+ 1 row in set (0.06 sec)
在数据库列中,它显示NULL值,因为我们没有选择任何数据库。因此,请按照以下命令所示选择数据库。
mysql> use Example; 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 | example | +-------------------------+------------+ 1 row in set (0.00 sec)
2. 使用 NOT 运算符 (!) 从表中选择除“SAM”之外的所有用户,例如“示例”
答:下面的语句将显示表“ Example ”中除用户“ SAM ”之外的所有用户的所有列。
mysql> SELECT * FROM Example 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. 是否可以用 NOT(!)运算符实现“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 | +---------------------+---------+---------+---------+---------+-------+
- =:表示等于
- !=:不等于
- ! :代表非运算符
在 MySQL 中,AND 和 OR 被视为连接运算符。
4. MySQL 中 IFNULL() 语句用于什么?
回答: MySQL 中的查询可以使用IFNULL()语句精确编写。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 来实现上述场景。
显示 1 条记录
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 | +----+------+------------+-------+-----------------------+------+
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 而不是 Oracle 的原因
- Mysql 是自由/开源软件。
- MySQL 是可移植的。
- MYSQL 同时支持 GUI 和命令提示符。
- MySQL 管理通过查询浏览器受支持。
7. 如何在 MySQL 中获取当前日期?
答:在 MySQL 中获取当前日期就像执行下面的 SELECT 语句一样简单。
mysql> SELECT CURRENT_DATE(); +----------------+ | CURRENT_DATE() | +----------------+ | 2014-06-17 | +----------------+
8. 如何将 MySQL 中的表导出为 XML 文件?
答:我们使用“ -e ”(导出)选项将 MySQL 表或整个数据库导出到 XML 文件中。对于大型表,我们可能需要手动执行此操作,但对于小型表,phpMyAdmin 等应用程序可以完成此工作。
MySQL 原生命令就可以做到。
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 数据库的持久连接,这意味着每次页面加载时都不会打开数据库,因此我们不能使用 MySQL_close() 来关闭持久连接。
MySQL_pconnect 和 MySQL_connect 之间的简要区别是。
与 MySQL_pconnect 不同,MySQL_connect 每次加载页面时都会打开数据库,可以使用语句 MySQL_close() 随时关闭。
10. 您需要显示数据库“mysql”中表“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 代表逗号分隔值,又称字符分隔值。CSV 表以纯文本和表格格式存储数据。它通常每行包含一条记录。
每条记录由特定分隔符(逗号、分号等)分隔,其中每条记录具有相同的字段序列。CSV 表最广泛用于存储手机联系人以供导入和导出,并且可用于存储任何类型的纯文本数据。
现在就这些了。我会再次在这里带来另一篇有趣的文章,你们一定会喜欢阅读的。在此之前,请继续关注并关注示例,别忘了在下面的评论部分向我们提供您宝贵的反馈。