有关于Mysql数据库的笔试题

一、请列举常见的mysql存储引擎

1.show engines

命令查看mysql使用的引擎,命令输出为


如果要想查看数据库默认使用哪个引擎,可以通过使用命令

SHOW VARIABLES LIKE 'storage_engine';


在mysql中,不需要在整个项目中使用一种引擎,根据不同的需求对每一个表使用不同的存储引擎,Suport列的值表示某种引擎是否可以使用:yes表示可以使用,no表示不可以使用,default表示默认的存储引擎

InnoDb存储引擎

innodb是事务型数据库的首选引擎,支持事务安全表(ACID),支持锁定和外键,mysql默认的是innodb,innodb主要特性有:

1.innodb给数据提供了提交,回滚和崩溃恢复的能力的事务安全存储引擎。在sql查询中可以自由的将innodb类型的表和其他mysql类型的表混合起来,甚至也可以在同一个查询中也可以混合

2.InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘的关系型数据库引擎锁不能匹敌的

3.InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键

4.InnoDB被用在众多需要高性能的大型数据库站点上

myisam存储引擎

memory存储引擎

二、请列出一些msyql数据库查询优化的技巧

1.尽量避免在where句子中使用!=或<>操作符号,或者对值进行null判断,否则引擎将放弃索引而进行全盘扫描如:

select id from t where num is null,

可以在num上设置默认值0,确保表中num列没有null值,改:

select id from t where num=0

2.避免在where中使用or来连接条件,否则将导致引擎放弃索引使用全盘扫描 如:

select  id from t where num=10 or num=20

select id from t where num=10union allselect id from t where num=20

3.in 和not in 也要慎用,否则导致全盘扫描

select id from t where num in(1,2,3)

对于连续的查询使用betw

select id from t where num between 1 and 3

4.任何地方不要使用select *from t 用具体的字段列表代替“*”,不要返回不用的任何字段

5.应尽量避免在where子句中对字段进行表达式操作,这将导致引擎放弃索引使用全盘扫描,如:

select id from t where num/2=100

改为

select id from t where num=100*2

6.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如:

select id from t where substring(name,1,3)=’abc’–name以abc开头的id

select id from t where datediff(day,createdate,’2005-11-30′)=0–’2005-11-30′生成的id

改为:

select id from t where name like ‘abc%’

select id from t where createdate>=’2005-11-30and createdate<’2005-12-1

7.尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些

8、很多时候用 exists 代替 in 是一个好的选择:

select num from a where num in(select num from b)

改为

select num from a where exists(select 1 from b where num=a.num)




三、请列举常见的http头及其作用


四、请列举常见http状态码及其意义

200请求被成功接收

301,重定向:永久跳转,完成请求还需进一步操作

302.重定向:临时跳转,完成请求还需进一步操作

304,没有修改过:请求的内容没有修改过

403:,客户端错误:没有权限,拒绝访问

404,客户端错误:所访问页面不存在,错误页面

500,服务器内部错误,服务器未能实现合法的请求


五、请简述sql注入的攻击原理及如何在代码层面sql注入

六、请简述msyql如何进行多表查询









你可能感兴趣的:(有关于Mysql数据库的笔试题)