15个 MySQL 基础面试题,DBA 们准备好了吗?

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

此前我们已经有发表过Linux 面试基础问答之共3篇文章,获得读者的好评,同时我们得到反馈,有些读者希望这种交互式学习方法能够做得更加灵活。心动不如行动,我们这就为您奉上 15个 MySQL 面试题

问题1:你如何确定 MySQL 是否处于运行状态?

答案: Debian 上运行命令 service mysql status,在RedHat 上运行命令 service mysqld status。然后看看输出即可。


 
 
  1. root@localhost:/home/avi# service mysql status
  2. /usr/bin/mysqladmin Ver 8.42 Distrib 5.1.72, for debian-linux-gnu on i486
  3. Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
  4. Oracle is a registered trademark of Oracle Corporation and/or its
  5. affiliates. Other names may be trademarks of their respective
  6. owners.
  7. Server version 5.1.72-2
  8. Protocol version 10
  9. Connection Localhost via UNIX socket
  10. UNIX socket /var/run/mysqld/mysqld.sock
  11. Uptime: 1 hour 22 min 49 sec
  12. Threads: 1 Questions: 112138 Slow queries: 1 Opens: 1485 Flush tables: 1 Open tables: 64 Queries per second avg: 22.567.

问题2:如何开启或停止 MySQL 服务?

答案:运行命令 service mysqld start 开启服务;运行命令 service mysqld stop 停止服务。


 
 
  1. root@localhost:/home/avi# service mysql stop
  2. Stopping MySQL database server: mysqld.
  3. root@localhost:/home/avi# service mysql start
  4. Starting MySQL database server: mysqld.
  5. Checking for corrupt, not cleanly closed and upgrade needing tables..

问题3:如何通过 Shell 登入 MySQL?

答案:运行命令 mysql -u root -p


 
 
  1. root@localhost:/home/avi# mysql -u root -p
  2. Enter password:
  3. Welcome to the MySQL monitor. Commands end with ; or \g.
  4. Your MySQL connection id is 207
  5. Server version: 5.1.72-2 (Debian)
  6. Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
  7. Oracle is a registered trademark of Oracle Corporation and/or its
  8. affiliates. Other names may be trademarks of their respective
  9. owners.
  10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  11. mysql>

问题4:如何列出所有数据库?

答案:运行命令 show databases;


 
 
  1. mysql> show databases;
  2. +--------------------+
  3. | Database |
  4. +--------------------+
  5. | information_schema |
  6. | a1 |
  7. | cloud |
  8. | mysql |
  9. | phpmyadmin |
  10. | playsms |
  11. | sisso |
  12. | test |
  13. | ukolovnik |
  14. | wordpress |
  15. +--------------------+
  16. 10 rows in set (0.14 sec)

问题5: 如何切换到某个数据库并在上面工作?

答案:运行命令 use database_name; 进入名为 database_name 的数据库。


 
 
  1. mysql> use cloud;
  2. Reading table information for completion of table and column names
  3. You can turn off this feature to get a quicker startup with -A
  4. Database changed
  5. mysql>

问题6:如何列出某个数据库内所有表?

答案:在当前数据库运行命令 show tables;


 
 
  1. mysql> show tables;
  2. +----------------------------+
  3. | Tables_in_cloud |
  4. +----------------------------+
  5. | oc_appconfig |
  6. | oc_calendar_calendars |
  7. | oc_calendar_objects |
  8. | oc_calendar_repeat |
  9. | oc_calendar_share_calendar |
  10. | oc_calendar_share_event |
  11. | oc_contacts_addressbooks |
  12. | oc_contacts_cards |
  13. | oc_fscache |
  14. | oc_gallery_sharing |
  15. +----------------------------+
  16. 10 rows in set (0.00 sec)

问题7:如何获取表内所有 Field 对象的名称和类型?

答案:运行命令 describe table_name;


 
 
  1. mysql> describe oc_users;
  2. +----------+--------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +----------+--------------+------+-----+---------+-------+
  5. | uid | varchar(64) | NO | PRI | | |
  6. | password | varchar(255) | NO | | | |
  7. +----------+--------------+------+-----+---------+-------+
  8. 2 rows in set (0.00 sec)

问题8:如何删除表?

答案:运行命令 drop table table_name;


 
 
  1. mysql> drop table lookup;
  2. Query OK, 0 rows affected (0.00 sec)

问题9:如何删除数据库?

答案:运行命令 drop database database-name;


 
 
  1. mysql> drop database a1;
  2. Query OK, 11 rows affected (0.07 sec)

问题10:如何查看表内所有数据?

答案:运行命令 select * from table_name;


 
 
  1. mysql> select * from engines;
  2. +------------+---------+----------------------------------------------------------------+--------------+------+------------+
  3. | ENGINE | SUPPORT | COMMENT | TRANSACTIONS | XA | SAVEPOINTS |
  4. +------------+---------+----------------------------------------------------------------+--------------+------+------------+
  5. | InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
  6. | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
  7. | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
  8. | CSV | YES | CSV storage engine | NO | NO | NO |
  9. | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
  10. | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
  11. | ARCHIVE | YES | Archive storage engine | NO | NO | NO |
  12. | MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
  13. +------------+---------+----------------------------------------------------------------+--------------+------+------------+
  14. 8 rows in set (0.00 sec)

问题11:如何从表(比如 oc_users )中获取一个 field 对象(比如 uid)的所有数据?

答案:运行命令 select uid from oc_users;


 
 
  1. mysql> select uid from oc_users;
  2. +-----+
  3. | uid |
  4. +-----+
  5. | avi |
  6. +-----+
  7. 1 row in set (0.03 sec)

问题12:假设你有一个名为 ‘xyz’ 的表,它存在多个字段,如 ‘createtime’ 和 ‘engine’。名为 engine 的字段由 ‘Memoty’ 和 ‘MyIsam’ 两种数值组成。如何只列出 ‘createtime’ 和 ‘engine’ 这两列并且 engine 的值为 ‘MyIsam’?

答案:运行命令 select create_time, engine from xyz where engine = ”MyIsam”;


 
 
  1. mysql> select create_time, engine from xyz where engine="MyIsam";
  2. +---------------------+--------+
  3. | create_time | engine |
  4. +---------------------+--------+
  5. | 2013-12-15 13:43:27 | MyISAM |
  6. | 2013-12-15 13:43:27 | MyISAM |
  7. | 2013-12-15 13:43:27 | MyISAM |
  8. | 2013-12-15 13:43:27 | MyISAM |
  9. | 2013-12-15 13:43:27 | MyISAM |
  10. | 2013-12-15 13:43:27 | MyISAM |
  11. | 2013-12-15 13:43:27 | MyISAM |
  12. | 2013-12-15 13:43:27 | MyISAM |
  13. | 2013-10-23 14:56:38 | MyISAM |
  14. | 2013-10-23 14:56:38 | MyISAM |
  15. | 2013-10-23 14:56:38 | MyISAM |
  16. | 2013-10-23 14:56:38 | MyISAM |
  17. | 2013-10-23 14:56:38 | MyISAM |
  18. | 2013-10-23 14:56:38 | MyISAM |
  19. | 2013-10-23 14:56:38 | MyISAM |
  20. +---------------------+--------+
  21. 132 rows in set (0.29 sec)

问题13:如何列出表 ‘xrt’ 内 name 域值为 ‘tecmint’,web_address 域值为 ‘tecmint.com’ 的所有数据?

答案:运行命令 select * from xrt where name = “tecmint” and web_address = “tecmint.com”;


 
 
  1. mysql> select * from xrt where name = "tecmint" and web_address = tecmint.com”;
  2. +---------------+---------------------+---------------+
  3. | Id | name | web_address |
  4. +---------------+---------------------+----------------+
  5. | 13 | tecmint | tecmint.com |
  6. +---------------+---------------------+----------------+
  7. | 41 | tecmint | tecmint.com |
  8. +---------------+---------------------+----------------+

问题14:如何列出表 ‘xrt’ 内 name 域值不为 ‘tecmint’,web_address 域值为 ‘tecmint.com’ 的所有数据?

答案:运行命令 select * from xrt where name != "tecmint" and web_address = "tecmint.com";


 
 
  1. mysql> select * from xrt where name != tecmint and web_address = tecmint.com”;
  2. +---------------+---------------------+---------------+
  3. | Id | name | web_address |
  4. +---------------+---------------------+----------------+
  5. | 1173 | tecmint | tecmint.com |
  6. +---------------+---------------------+----------------+

问题15:如何知道表内行数?

答案:运行命令 select count(*) from table_name;


 
 
  1. mysql> select count(*) from Tables;
  2. +----------+
  3. | count(*) |
  4. +----------+
  5. | 282 |
  6. +----------+
  7. 1 row in set (0.01 sec)

以上是文章的全部内容。这篇‘Linux 面试题’对您有任何帮助吗?别忘了在下面留言,写出您的宝贵意见。

原文发布时间为:2014-01-05

本文来自云栖社区合作伙伴“Linux中国”

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
29天前
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
3月前
|
SQL 关系型数据库 MySQL
大厂面试官:聊下 MySQL 慢查询优化、索引优化?
MySQL慢查询优化、索引优化,是必知必备,大厂面试高频,本文深入详解,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验分享。
大厂面试官:聊下 MySQL 慢查询优化、索引优化?
|
11天前
|
SQL 关系型数据库 MySQL
京东面试:MySQL MVCC是如何实现的?如何通过MVCC实现读已提交、可重复读隔离级别的?
1.请解释什么是MVCC,它在数据库中的作用是什么? 2.在MySQL中,MVCC是如何实现的?请简述其工作原理。 3.MVCC是如何解决读-写和写-写冲突的? 4.在并发环境中,当多个事务同时读取同一行数据时,MVCC是如何保证每个事务看到的数据版本是一致的? 5.MVCC如何帮助提高数据库的并发性能?
京东面试:MySQL MVCC是如何实现的?如何通过MVCC实现读已提交、可重复读隔离级别的?
|
4月前
|
存储 关系型数据库 MySQL
阿里面试:为什么要索引?什么是MySQL索引?底层结构是什么?
尼恩是一位资深架构师,他在自己的读者交流群中分享了关于MySQL索引的重要知识点。索引是帮助MySQL高效获取数据的数据结构,主要作用包括显著提升查询速度、降低磁盘I/O次数、优化排序与分组操作以及提升复杂查询的性能。MySQL支持多种索引类型,如主键索引、唯一索引、普通索引、全文索引和空间数据索引。索引的底层数据结构主要是B+树,它能够有效支持范围查询和顺序遍历,同时保持高效的插入、删除和查找性能。尼恩还强调了索引的优缺点,并提供了多个面试题及其解答,帮助读者在面试中脱颖而出。相关资料可在公众号【技术自由圈】获取。
|
1月前
|
存储 SQL 关系型数据库
MySQL 面试题
MySQL 的一些基础面试题
|
3月前
|
SQL 缓存 关系型数据库
美团面试:Mysql 有几级缓存? 每一级缓存,具体是什么?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴因未能系统梳理MySQL缓存机制而在美团面试中失利。为此,尼恩对MySQL的缓存机制进行了系统化梳理,包括一级缓存(InnoDB缓存)和二级缓存(查询缓存)。同时,他还将这些知识点整理进《尼恩Java面试宝典PDF》V175版本,帮助大家提升技术水平,顺利通过面试。更多技术资料请关注公号【技术自由圈】。
美团面试:Mysql 有几级缓存? 每一级缓存,具体是什么?
|
3月前
|
SQL 算法 关系型数据库
面试:什么是死锁,如何避免或解决死锁;MySQL中的死锁现象,MySQL死锁如何解决
面试:什么是死锁,死锁产生的四个必要条件,如何避免或解决死锁;数据库锁,锁分类,控制事务;MySQL中的死锁现象,MySQL死锁如何解决
|
3月前
|
SQL 关系型数据库 MySQL
美团面试:Mysql如何选择最优 执行计划,为什么?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴面试美团时遇到了关于MySQL执行计划的面试题:“MySQL如何选择最优执行计划,为什么?”由于缺乏系统化的准备,小伙伴未能给出满意的答案,面试失败。为此,尼恩为大家系统化地梳理了MySQL执行计划的相关知识,帮助大家提升技术水平,展示“技术肌肉”,让面试官“爱到不能自已”。相关内容已收录进《尼恩Java面试宝典PDF》V175版本,供大家参考学习。
|
4月前
|
SQL 关系型数据库 MySQL
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?
尼恩,一位40岁的资深架构师,通过其丰富的经验和深厚的技術功底,为众多读者提供了宝贵的面试指导和技术分享。在他的读者交流群中,许多小伙伴获得了来自一线互联网企业的面试机会,并成功应对了诸如事务ACID特性实现、MVCC等相关面试题。尼恩特别整理了这些常见面试题的系统化解答,形成了《MVCC 学习圣经:一次穿透MYSQL MVCC》PDF文档,旨在帮助大家在面试中展示出扎实的技术功底,提高面试成功率。此外,他还编写了《尼恩Java面试宝典》等资料,涵盖了大量面试题和答案,帮助读者全面提升技术面试的表现。这些资料不仅内容详实,而且持续更新,是求职者备战技术面试的宝贵资源。
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?

热门文章

最新文章