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

15个 MySQL 基础面试题,DBA 们准备好了吗?
  此前我们已经有发表过Linux 面试基础问答之、和共3篇文章,获得读者的好评,同时我们得到反馈,有些读者希望这种交互式学习方法能够做得更加灵活。心动不如行动,我们这就为您奉上 15个 MySQL 面试题
问题1:你如何确定 MySQL 是否处于运行状态?
答案: Debian 上运行命令 service mysql status,在RedHat 上运行命令 service mysqld status。然后看看输出即可。
root@localhost:/home/avi# service mysql status
/usr/bin/mysqladmin
Ver 8.42 Distrib 5.1.72, for debian-linux-gnu on i486
Copyright (c) , Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
Server version 5.1.72-2
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 1 hour 22 min 49 sec
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 停止服务。
root@localhost:/home/avi# service mysql stop
Stopping MySQL database server: mysqld.
root@localhost:/home/avi# service mysql start
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..
问题3:如何通过 Shell 登入 MySQL?
答案:运行命令 mysql -u root -p
root@localhost:/home/avi# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.
Your MySQL connection id is 207
Server version: 5.1.72-2 (Debian)
Copyright (c) , Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
Type '' or '\h' for help. Type '\c' to clear the current input statement.
问题4:如何列出所有数据库?
答案:运行命令
+--------------------+
| Database
+--------------------+
| information_schema |
| phpmyadmin
| ukolovnik
| wordpress
+--------------------+
10 rows in set (0.14 sec)
问题5: 如何切换到某个数据库并在上面工作?
答案:运行命令 use database_ 进入名为 database_name 的数据库。
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
问题6:如何列出某个数据库内所有表?
答案:在当前数据库运行命令
+----------------------------+
| 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
+----------------------------+
10 rows in set (0.00 sec)
问题7:如何获取表内所有 Field 对象的名称和类型?
答案:运行命令 describe table_
mysql& describe oc_
+----------+--------------+------+-----+---------+-------+
| Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| varchar(64)
| password | varchar(255) | NO
+----------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
问题8:如何删除表?
答案:运行命令 drop table table_
Query OK, 0 rows affected (0.00 sec)
问题9:如何删除数据库?
答案:运行命令 drop database database-
mysql& drop database a1;
Query OK, 11 rows affected (0.07 sec)
问题10:如何查看表内所有数据?
答案:运行命令 select * from table_
mysql& select *
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| SUPPORT | COMMENT
| TRANSACTIONS | XA
| SAVEPOINTS |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Supports transactions, row-level locking, and foreign keys
| MRG_MYISAM | YES
| Collection of identical MyISAM tables
| BLACKHOLE
| /dev/null storage engine (anything you write to it disappears) | NO
| CSV storage engine
| Hash based, stored in memory, useful for temporary tables
| FEDERATED
| Federated MySQL storage engine
| NULL | NULL
| Archive storage engine
| DEFAULT | Default engine as of MySQL 3.23 with great performance
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.00 sec)
问题11:如何从表(比如 oc_users )中获取一个 field 对象(比如 uid)的所有数据?
答案:运行命令 select uid from oc_
mysql& select uid from oc_
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&;
mysql& select create_time, engine from xyz where engine=&MyIsam&;
+---------------------+--------+
| create_time
| engine |
+---------------------+--------+
13:43:27 | MyISAM |
13:43:27 | MyISAM |
13:43:27 | MyISAM |
13:43:27 | MyISAM |
13:43:27 | MyISAM |
13:43:27 | MyISAM |
13:43:27 | MyISAM |
13:43:27 | MyISAM |
14:56:38 | MyISAM |
14:56:38 | MyISAM |
14:56:38 | MyISAM |
14:56:38 | MyISAM |
14:56:38 | MyISAM |
14:56:38 | MyISAM |
14:56:38 | MyISAM |
+---------------------+--------+
132 rows in set (0.29 sec)
问题13:如何列出表 &xrt& 内 name 域值为 &tecmint&,web_address 域值为 && 的所有数据?
答案:运行命令 select * from xrt where name = &tecmint& and web_address = &&;
mysql& select
* from xrt where name = &tecmint& and web_address = &&;
+---------------+---------------------+---------------+
| web_address |
+---------------+---------------------+----------------+
+---------------+---------------------+----------------+
+---------------+---------------------+----------------+
问题14:如何列出表 &xrt& 内 name 域值不为 &tecmint&,web_address 域值为 && 的所有数据?
答案:运行命令 select * from xrt where name != &tecmint& and web_address = &&;
mysql& select * from xrt where name != &tecmint& and web_address = &&;
+---------------+---------------------+---------------+
| web_address
+---------------+---------------------+----------------+
+---------------+---------------------+----------------+
问题15:如何知道表内行数?
答案:运行命令 select count(*) from table_
mysql& select count(*) from T
+----------+
| count(*) |
+----------+
+----------+
1 row in set (0.01 sec)
以上是文章的全部内容。这篇&Linux 面试题&对您有任何帮助吗?别忘了在下面留言,写出您的宝贵意见。
译者: 校对:
好文,顶一下
文章真差,踩一下
------分隔线----------------------------
把开源带在你的身边-精美linux小纪念品
初级应用->
高级应用-> |
编程开发->MySQL(4)
一、sql语句应该考虑哪些安全性?
(1)防止sql注入,对特殊字符进行转义,过滤或者使用预编译的sql语句绑定变量。
(2)最小权限原则,特别是不要用root账户,为不同的类型的动作或者组建使用不同的账户。
(3)当sql运行出错时,不要把数据库返回的错误信息全部显示给用户,以防止泄漏服务器和数据库相关信息。
二、简单描述MySQL中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响。
(1)索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
(2)普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。
(3)普通索引允许被索引的数据列包含重复的值,如果能确定某个数据列只包含彼此各不相同的值,在为这个数据索引创建索引的时候就应该用关键字UNIQE把它定义为一个唯一所以,唯一索引可以保证数据记录的唯一性。
(4)主键,一种特殊的唯一索引,在一张表中只能定义一个主键索引,逐渐用于唯一标识一条记录,是用关键字PRIMARY KEY来创建。
(5)索引可以覆盖多个数据列,如像INDEX索引,这就是联合索引。
(6)索引可以极大的提高数据的查询速度,但是会降低插入删除更新表的速度,因为在执行这些写操作时,还要操作索引文件。
三、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ?
(1)如果表的类型是MyISAM,那么是18。
因为MyISAM表会把自增主键的最大ID记录到数据文件里,重启MySQL自增主键的最大ID也不会丢失。
(2)如果表的类型是InnoDB,那么是15。
InnoDB表只是把自增主键的最大ID记录到内存中,所以重启数据库或者是对表进行OPTIMIZE操作,都会导致最大ID丢失。
四、请简述项目中优化sql语句执行效率的方法,从哪些方面。sql语句性能如何分析?
(1)尽量选择较小的列
(2)将where中用的比较频繁的字段建立索引
(3)select子句中避免使用‘*’
(4)避免在索引列上使用计算,not,in和&&等操作
(5)当只需要一行数据的时候使用limit 1
(6)保证表单数据不超过200w,适时分割表
(7)针对查询较慢的语句,可以使用explain来分析该语句具体的执行情况
五、mysql_fetch_row()和mysql_fetch_array()的区别
这两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,我们只能row[0],row[1],这样以数组下标来读取数据,而mysql_fetch_array()返回的数组既包含第一种,也包含键值对的形式,我们可以这样读取数据,(假如数据库的字段是 username,passwd):row[‘username‘],row[‘passwd‘。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8776次
排名:千里之外
原创:85篇
转载:43篇
(4)(19)(69)(36)找好工作,快人一步

我要回帖

更多关于 高级oracle dba面试题 的文章

 

随机推荐