11 面向 Linux 用户的高级 MySQL 数据库“面试问答”
我们已经发表了两篇MySQL文章,受到Howtoing社区的高度赞赏。这是 MySQL 面试系列的第三篇文章,也是面试类型专栏中的第 16 篇文章。
我们能走到今天这一切都是因为您的支持,我们也希望您的未来也能如此。在这篇文章中,我们将集中讨论 MySQL 的实践方面,即与面试方面相关的问题。
1.使用SELECT语句查找您正在运行的服务器的版本并打印当前数据库的名称?
Ans: 下面的 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 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. 使用 NOT 运算符 (!) 从“Tecmint”表中选择除“SAM”之外的所有用户
Ans: 下面的语句将显示表 'Tecmint' 中除用户 'SAM 之外的所有用户的所有列'。
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. 是否可以用 NOT (!) 运算符实现“AND”。
Ans: 使用 (=) 时使用 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 |
+---------------------+---------+---------+---------+---------+-------+
- = :表示等于
- != : 不等于
- ! : 代表 NOT 运算符
AND 和 OR 在 MySQL 中被视为连接运算符。
4. MySQL中IFNULL()语句的用途是什么?
Ans: 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. 您只想从结果集的开头或结尾查看结果集中的某些行。你会怎么做?
Ans: 我们需要使用 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。哪一个以及为什么?
Ans: 两者都有其优点和缺点。随着时间的推移,我更喜欢 MySQL。
选择 MySQL 而不是 Oracle 的原因
- Mysql是源码。
- MySQL 是可移植的。
- MYSQL 支持 GUI 和命令提示符。
- 通过查询浏览器支持 MySQL 管理。
7. 如何获取 MySQL 中的当前日期?
Ans: 在 MySQL 中获取当前日期就像执行下面的 SELECT 语句一样简单。
mysql> SELECT CURRENT_DATE();
+----------------+
| CURRENT_DATE() |
+----------------+
| 2014-06-17 |
+----------------+
8. 如何在 MySQL 中将表导出为 XML 文件?
Ans: 我们使用“-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 有何不同?
Ans: MySQL_pconnect() 打开一个与 MySQL 数据库持久的连接,这仅仅意味着数据库不会在每次页面加载时打开,因此我们不能使用 MySQL_close() 关闭持久连接。
MySQL_pconnect 和 MySQL_connect 之间的一个简短区别是。
与 MySQL_pconnect 不同,MySQL_connect – 每次加载页面时都会打开数据库,可以使用语句 MySQL_close() 随时关闭数据库。
10. 您需要显示数据库“mysql”的“user”表中定义的所有索引。您将如何实现这一目标?
Ans:以下命令将显示表“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 表?
Ans: CSV 代表逗号分隔值,也称为字符分隔值。 CSV 表以纯文本和表格格式存储数据。它通常每行包含一个记录。
每条记录由特定的分隔符(逗号、分号……)分隔,其中每条记录具有相同的字段序列。 CSV 表最广泛用于存储要导入和导出的电话联系人,并且可用于存储任何类型的纯文本数据。
目前为止就这样了。我将再次在这里发表另一篇有趣的文章,你们一定会喜欢阅读的。在此之前,请继续关注并联系 Tecmint,不要忘记在下面的评论部分向我们提供您的宝贵反馈。