初级mysql面试题汇总

本人学习了解了一些mysql的知识,也曾面试过mysql的数据库管理员,现与大家分享一些mysql初级的面试题。
Mysql的存储引擎,myisam与innodb的区别。
答:
1.myisam是非事务的存储引擎,适合用于频繁查询的应用。表锁,不会出现死锁,适合小数据,小并发。
2.innodb是支持事务的存储引擎,适合插入和更新操作比较多的应用,设计合理的话是行锁(最大区别就在锁的级别上),适合大数据,大并发。

数据表类型有哪些?
答:
myisam:成熟,稳定,易于管理,快速读取。一些功能不支持(事务等),表级锁。
innodb:支持事务,外件等特性、行级锁。占用空间答,不支持全文索引等。
mysql数据库发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
答:
1.设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。
2.选择合适的表字段数据类型和存储引擎,适当的添加索引。
3.mysql主从读写分离。
4.找规律分表,减少单表中的数据量,提高查询速度。
5.添加缓存机制,比如memcached,apc等。
6.不经常改动的页面,生成静态页面。
7.书写高效率的SQL。比如select * from table 改为 select field_1,field_2,field_3 from table 。

对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?
答:
1.确认服务器是否能支撑当前访问量。
2.优化数据库访问。
3.禁止外部访问链接(盗链),比如图片盗链。
4.控制文件下载。
5.使用不同主机分流。
6.使用浏览统计软件,了解访问量有针对性的进行优化。
简单描述mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)。
答:
索引是一种特殊的文件(innodb数据表上的索引是表空间的一个组成部分),他们包含着对数据表里所有记录的引用指针。
普通索引(有关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。
普通索引允许被索引的数据列包含重复的值,如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据创建索引的时候就应该用关键字UNIQUE,把他定义为一个唯一索引。也就是说,唯一索引可以保证数据记录的唯一性。
主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字PRIMARY KEY 来创建。
索引可以堵盖多个数据列,乳香INDEX(cloumnA,cloumnB)索引,这就是联合索引。索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时。还会操作索引文件。
数据库中的事务是什么?
答:
事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,及时只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。ACID四大特性,原子性、隔离性、一致性、持久性。
了解XSS攻击吗?如何防止?
答:
XSS是跨站脚本攻击,首先是利用跨站脚本漏洞以一个特权模式去执行攻击者构造的脚本,然后利用不安全的Activex控件执行恶意的行为。
使用htmlspeciachars()函数对提交的内容进行过滤,是字符串里面的特殊符号实体化。
什么是视图,游标是什么?
答:
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增删改查操作,视图通常是有一个表或多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,想必多表查询。
游标:是对上查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元的特定行,从结果集的当前哼行检索一行或多行。可以对结果集当前行做修改。一般不适用光标,但是需要逐条处理数据的时候,游标显得十分重要。
什么是存储过程,用什么来调用?
答:
存储过程是一个预编译的SQL语句,有点事允许模块化的设计。就是说只需创建一次,以后再该程序中就可调用多次,如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。
索引的作用,它的优点和缺点是什么?
答:
索引是一种特殊的表记录,数据库的搜索引擎可以利用它加速对数据的检索,它哼类似于现实生活中书的目录,不需要查询整本书就可以找到想要的数据,索引可以是惟一的,创建索引允许指定单个类或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
现有数据如下:
xm xueke fenshu
张三 语文 79
张三 数学 83
李四 语文 66
李四 数学 77
王五 语文 82
王五 数学 83
王五 英语 76
问:
1.如何使用一条SQL命令查出所有学科分数都超过80分的学生名字?
2.假如学科为语数英,如何使用一条SQL命令查出哪个学生有没考的学科,哪个学生全考了。

自身知识有限,所以就只给大家分享这些,写的对的请采纳,不对之处请多谅解,也可微信(2313717286)私聊我,指出错误,大家一起共同进步,共同学习。

你可能感兴趣的:(mysql)