此前我们已经有发表过Linux 面试基础问答之一、二和三共3篇文章,获得读者的好评,同时我们得到反馈,有些读者希望这种交互式学习方法能够做得更加灵活。心动不如行动,我们这就为您奉上 15个 MySQL 面试题
问题1:你如何确定 MySQL 是否处于运行状态?
答案: Debian 上运行命令 service mysql status,在RedHat 上运行命令 service mysqld status。然后看看输出即可。
01.
root@localhost:/home/avi# service mysql status
02.
03.
/usr/bin/mysqladmin Ver 8.42 Distrib 5.1.72,
for
debian-linux-gnu
on
i486
04.
Copyright (c) 2000, 2013, Oracle
and
/
or
its affiliates.
All
rights reserved.
05.
06.
Oracle
is
a registered trademark
of
Oracle Corporation
and
/
or
its
07.
affiliates. Other names may be trademarks
of
their respective
08.
owners.
09.
10.
Server version 5.1.72-2
11.
Protocol version 10
12.
Connection
Localhost via UNIX socket
13.
UNIX socket /var/run/mysqld/mysqld.sock
14.
Uptime: 1
hour
22
min
49 sec
15.
16.
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 停止服务。
01.
root@localhost:/home/avi# service mysql stop
02.
03.
Stopping MySQL
database
server: mysqld.
04.
05.
root@localhost:/home/avi# service mysql start
06.
07.
Starting MySQL
database
server: mysqld.
08.
09.
Checking
for
corrupt,
not
cleanly closed
and
upgrade needing tables..
问题3:如何通过 Shell 登入 MySQL?
答案:运行命令 mysql -u root -p
01.
root@localhost:/home/avi# mysql -u root -p
02.
Enter
password
:
03.
Welcome
to
the MySQL monitor. Commands
end
with
;
or
\g.
04.
Your MySQL
connection
id
is
207
05.
Server version: 5.1.72-2 (Debian)
06.
07.
Copyright (c) 2000, 2013, Oracle
and
/
or
its affiliates.
All
rights reserved.
08.
09.
Oracle
is
a registered trademark
of
Oracle Corporation
and
/
or
its
10.
affiliates. Other names may be trademarks
of
their respective
11.
owners.
12.
13.
Type
'help;'
or
'\h'
for
help. Type
'\c'
to
clear the
current
input statement.
14.
15.
mysql>
问题4:如何列出所有数据库?
答案:运行命令 show databases;
01.
mysql> show databases;
02.
+
--------------------+
03.
|
Database
|
04.
+
--------------------+
05.
| information_schema |
06.
| a1 |
07.
| cloud |
08.
| mysql |
09.
| 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.
5.
Database
changed
6.
mysql>
问题6:如何列出某个数据库内所有表?
答案:在当前数据库运行命令 show tables;
01.
mysql> show tables;
02.
+
----------------------------+
03.
| Tables_in_cloud |
04.
+
----------------------------+
05.
| oc_appconfig |
06.
| oc_calendar_calendars |
07.
| oc_calendar_objects |
08.
| oc_calendar_repeat |
09.
| 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.
3.
Query OK, 0
rows
affected (0.00 sec)
问题9:如何删除数据库?
答案:运行命令 drop database database-name;
1.
mysql>
drop
database
a1;
2.
3.
Query OK, 11
rows
affected (0.07 sec)
问题10:如何查看表内所有数据?
答案:运行命令 select * from table_name;
01.
mysql>
select
*
from
engines;
02.
+
------------+---------+----------------------------------------------------------------+--------------+------+------------+
03.
| ENGINE | SUPPORT | COMMENT | TRANSACTIONS | XA | SAVEPOINTS |
04.
+
------------+---------+----------------------------------------------------------------+--------------+------+------------+
05.
| InnoDB | YES | Supports transactions, row-
level
locking,
and
foreign
keys | YES | YES | YES |
06.
| MRG_MYISAM | YES | Collection
of
identical MyISAM tables |
NO
|
NO
|
NO
|
07.
| BLACKHOLE | YES | /dev/
null
storage engine (anything you write
to
it disappears) |
NO
|
NO
|
NO
|
08.
| CSV | YES | CSV storage engine |
NO
|
NO
|
NO
|
09.
| 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”;
01.
mysql>
select
create_time, engine
from
xyz
where
engine=
"MyIsam"
;
02.
03.
+
---------------------+--------+
04.
| create_time | engine |
05.
+
---------------------+--------+
06.
| 2013-12-15 13:43:27 | MyISAM |
07.
| 2013-12-15 13:43:27 | MyISAM |
08.
| 2013-12-15 13:43:27 | MyISAM |
09.
| 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-12-15 13:43:27 | 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.
| 2013-10-23 14:56:38 | MyISAM |
21.
+
---------------------+--------+
22.
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.
+
---------------+---------------------+---------------+
4.
| Id |
name
| web_address |
5.
+
---------------+---------------------+----------------+
6.
| 1173 | tecmint | tecmint.com |
7.
+
---------------+---------------------+----------------+
问题15:如何知道表内行数?
答案:运行命令 select count(*) from table_name;
1.
mysql>
select
count
(*)
from
Tables;
2.
3.
+
----------+
4.
|
count
(*) |
5.
+
----------+
6.
| 282 |
7.
+
----------+
8.
1 row
in
set
(0.01 sec)
以上是文章的全部内容。这篇‘Linux 面试题’对您有任何帮助吗?别忘了在下面留言,写出您的宝贵意见。
via: http://www.tecmint.com/basic-mysql-interview-questions-for-database-administrators/