此前我们已经有发表过Linux 面试基础问答之一、二和三共3篇文章,获得读者的好评,同时我们得到反馈,有些读者希望这种交互式学习方法能够做得更加灵活。心动不如行动,我们这就为您奉上 15个 MySQL 面试题
问题1:你如何确定 MySQL 是否处于运行状态?
答案: Debian 上运行命令 service mysql status,在RedHat 上运行命令 service mysqld status。然后看看输出即可。
root@localhost:/home/avi#service mysql status
/usr/bin/mysqladminVer8.42Distrib5.1.72,fordebian-linux-gnu on i486
Copyright(c)2000,2013,Oracleand/orits affiliates.Allrights reserved.
Oracleisa registered trademark ofOracleCorporationand/orits
affiliates.Othernames may be trademarks of their respective
owners.
Serverversion5.1.72-2
Protocolversion10
ConnectionLocalhostvia UNIX socket
UNIX socket/var/run/mysqld/mysqld.sock
Uptime:1hour22min49sec
Threads:1Questions:112138Slowqueries:1Opens:1485Flushtables:1Opentables:64Queriesper second avg:22.567.
问题2:如何开启或停止 MySQL 服务?
答案:运行命令 service mysqld start 开启服务;运行命令 service mysqld stop 停止服务。
root@localhost:/home/avi#service mysql stop
StoppingMySQLdatabase server:mysqld.
root@localhost:/home/avi#service mysql start
StartingMySQLdatabase server:mysqld.
Checkingforcorrupt,notcleanly closedandupgrade needing tables..
问题3:如何通过 Shell 登入 MySQL?
答案:运行命令 mysql -u root -p
root@localhost:/home/avi#mysql-u root-p
Enterpassword:
Welcometo theMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis207
Serverversion:5.1.72-2(Debian)
Copyright(c)2000,2013,Oracleand/orits affiliates.Allrights reserved.
Oracleisa registered trademark ofOracleCorporationand/orits
affiliates.Othernames may be trademarks of their respective
owners.
Type'help;'or'\h'forhelp.Type'\c'toclearthe current input statement.
mysql>
问题4:如何列出所有数据库?
答案:运行命令 show databases;
mysql>show databases;
+--------------------+
|Database|
+--------------------+
|information_schema|
|a1|
|cloud|
|mysql|
|phpmyadmin|
|playsms|
|sisso|
|test|
|ukolovnik|
|wordpress|
+--------------------+
10rowsinset(0.14sec)
问题5: 如何切换到某个数据库并在上面工作?
答案:运行命令 use database_name; 进入名为 database_name 的数据库。
mysql>usecloud;
Readingtable informationforcompletion of tableandcolumn names
Youcan turn offthisfeature togeta quicker startupwith-A
Databasechanged
mysql>
问题6:如何列出某个数据库内所有表?
答案:在当前数据库运行命令 show tables;
mysql>show tables;
+----------------------------+
|Tables_in_cloud|
+----------------------------+
|oc_appconfig|
|oc_calendar_calendars|
|oc_calendar_objects|
|oc_calendar_repeat|
|oc_calendar_share_calendar|
|oc_calendar_share_event|
|oc_contacts_addressbooks|
|oc_contacts_cards|
|oc_fscache|
|oc_gallery_sharing|
+----------------------------+
10rowsinset(0.00sec)
问题7:如何获取表内所有 Field 对象的名称和类型?
答案:运行命令 describe table_name;
mysql>describe oc_users;
+----------+--------------+------+-----+---------+-------+
|Field|Type|Null|Key|Default|Extra|
+----------+--------------+------+-----+---------+-------+
|uid|varchar(64)|NO|PRI|||
|password|varchar(255)|NO||||
+----------+--------------+------+-----+---------+-------+
2rowsinset(0.00sec)
问题8:如何删除表?
答案:运行命令 drop table table_name;
mysql>drop table lookup;
QueryOK,0rows affected(0.00sec)
问题9:如何删除数据库?
答案:运行命令 drop database database-name;
mysql>drop database a1;
QueryOK,11rows affected(0.07sec)
问题10:如何查看表内所有数据?
答案:运行命令 select * from table_name;
mysql>select*fromengines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
|ENGINE|SUPPORT|COMMENT|TRANSACTIONS|XA|SAVEPOINTS|
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
|InnoDB|YES|Supportstransactions,row-level locking,andforeign keys|YES|YES|YES|
|MRG_MYISAM|YES|Collectionof identicalMyISAMtables|NO|NO|NO|
|BLACKHOLE|YES|/dev/nullstorage engine(anything youwriteto it disappears)|NO|NO|NO|
|CSV|YES|CSV storage engine|NO|NO|NO|
|MEMORY|YES|Hashbased,storedinmemory,usefulfortemporary tables|NO|NO|NO|
|FEDERATED|NO|FederatedMySQLstorage engine|NULL|NULL|NULL|
|ARCHIVE|YES|Archivestorage engine|NO|NO|NO|
|MyISAM|DEFAULT|DefaultengineasofMySQL3.23withgreat performance|NO|NO|NO|
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
8rowsinset(0.00sec)
问题11:如何从表(比如 oc_users )中获取一个 field 对象(比如 uid)的所有数据?
答案:运行命令 select uid from oc_users;
mysql>select uidfromoc_users;
+-----+
|uid|
+-----+
|avi|
+-----+
1rowinset(0.03sec)
问题12:假设你有一个名为 ‘xyz’ 的表,它存在多个字段,如 ‘createtime’ 和 ‘engine’。名为 engine 的字段由 ‘Memoty’ 和 ‘MyIsam’ 两种数值组成。如何只列出 ‘createtime’ 和 ‘engine’ 这两列并且 engine 的值为 ‘MyIsam’?
答案:运行命令 select create_time, engine from xyz where engine = ”MyIsam”;
mysql>select create_time,enginefromxyzwhereengine="MyIsam";
+---------------------+--------+
|create_time|engine|
+---------------------+--------+
|2013-12-1513:43:27|MyISAM|
|2013-12-1513:43:27|MyISAM|
|2013-12-1513:43:27|MyISAM|
|2013-12-1513:43:27|MyISAM|
|2013-12-1513:43:27|MyISAM|
|2013-12-1513:43:27|MyISAM|
|2013-12-1513:43:27|MyISAM|
|2013-12-1513:43:27|MyISAM|
|2013-10-2314:56:38|MyISAM|
|2013-10-2314:56:38|MyISAM|
|2013-10-2314:56:38|MyISAM|
|2013-10-2314:56:38|MyISAM|
|2013-10-2314:56:38|MyISAM|
|2013-10-2314:56:38|MyISAM|
|2013-10-2314:56:38|MyISAM|
+---------------------+--------+
132rowsinset(0.29sec)
问题13:如何列出表 ‘xrt’ 内 name 域值为 ‘tecmint’,web_address 域值为 ‘tecmint.com’ 的所有数据?
答案:运行命令 select * from xrt where name = “tecmint” and web_address = “tecmint.com”;
mysql>select*fromxrtwherename="tecmint"andweb_address=“tecmint.com”;
+---------------+---------------------+---------------+
|Id|name|web_address|
+---------------+---------------------+----------------+
|13|tecmint|tecmint.com|
+---------------+---------------------+----------------+
|41|tecmint|tecmint.com|
+---------------+---------------------+----------------+
问题14:如何列出表 ‘xrt’ 内 name 域值不为 ‘tecmint’,web_address 域值为 ‘tecmint.com’ 的所有数据?
答案:运行命令 select * from xrt where name != "tecmint" and web_address = "tecmint.com";
mysql>select*fromxrtwherename!=”tecmint”andweb_address=”tecmint.com”;
+---------------+---------------------+---------------+
|Id|name|web_address|
+---------------+---------------------+----------------+
|1173|tecmint|tecmint.com|
+---------------+---------------------+----------------+
问题15:如何知道表内行数?
答案:运行命令 select count(*) from table_name;
mysql>select count(*)fromTables;
+----------+
|count(*)|
+----------+
|282|
+----------+
1rowinset(0.01sec)
以上是文章的全部内容。这篇‘Linux 面试题’对您有任何帮助吗?别忘了在下面留言,写出您的宝贵意见。
原文发布时间为:2014-01-05
本文来自云栖社区合作伙伴“Linux中国”