MySql面试题精选

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/C_jian/article/details/53000008

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‘。

你如何确定 MySQL 是否处于运行状态?

答案:在Debian 上运行命令 service mysql status,然后看输出即可。

在 RedHat 或者 centos 上运行命令 service mysqld status,然后看看输出即可。

如何开启或停止 MySQL 服务?

答案:运行命令 service mysqld start 开启服务;

运行命令 service mysqld stop 停止服务。

如何通过 Shell 登入 MySQL?

答案:运行命令 mysql -u用户名 -p登陆密码

如何删除数据库?

答案:运行命令 drop database 数据库名;

查看数据库版本及当前登录用户是什么。 

答案:

select version();

mysql> select user();

MYSQL相比于其他数据库有哪些特点?

答案:

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司,现在已经被Sun公司收购,支持FreeBSD、Linux、MAC、Windows等多种操作系统与其他的大型数据库例如Oracle、DB2、SQL Server等相比功能稍弱一些

1、可以处理拥有上千万条记录的大型数据

2、支持常见的SQL语句规范

3、可移植行高,安装简单小巧

4、良好的运行效率,有丰富信息的网络支持

5、调试、管理,优化简单(相对其他大型数据库)

varchar和char的区别

答案:

Char是一种固定长度的类型,varchar是一种可变长度的类型

如何解决MYSQL数据库中文乱码问题?

视图的作用,视图可以更改么?

答案:

视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询;不包含任何列或数据。使用视图可以简化复杂的sql操作,隐藏具体的细节,保护数据;视图创建后,可以使用与表相同的方式利用它们。

视图不能被索引,也不能有关联的触发器或默认值,如果视图本身内有order by 则对视图再次order by将被覆盖。

创建视图:create view XXX as XXXXXXXXXXXXXX;

对于某些视图比如未使用联结子查询分组聚集函数Distinct Union等,是可以对其更新的,对视图的更新将对基表进行更新;但是视图主要用于简化检索,保护数据,并不用于更新,而且大部分视图都不可以更新。

mysql中myisam与innodb的区别,至少5点。

答:1、存储成本不一样,存储限制不一样;

  2、CPU使用成本不一样,innodb缓存数据和索引;

  3、锁粒度不一样,支持MVCC;

  4、缓存机制不一样(buffer_pool和key_buffer)

  5、事务支持;

  6、索引支持:全文索引(myisam),外键(innodb),hash(innodb)

  7、读写速度;

  8、备份;

猜你喜欢

转载自blog.csdn.net/C_jian/article/details/53000008