博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql面试
阅读量:5272 次
发布时间:2019-06-14

本文共 1298 字,大约阅读时间需要 4 分钟。

    1. sql语句应该考虑哪些安全性?

      答:
      (1)防止sql注入,对特殊字符进行转义,过滤或者使用预编译的sql语句绑定变量。
      (2)最小权限原则,特别是不要用root账户,为不同的类型的动作或者组建使用不同的账户。
      (3)当sql运行出错时,不要把返回的错误信息全部显示给用户,以防止泄漏服务器和数据库相关信息。

    2. 简单描述中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响。

      答:
      (1)索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
      (2)普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。
      (3)普通索引允许被索引的数据列包含重复的值,如果能确定某个数据列只包含彼此各不相同的值,在为这个数据索引创建索引的时候就应该用关键字UNIQE把它定义为一个唯一所以,唯一索引可以保证数据记录的唯一性。
      (4)主键,一种特殊的唯一索引,在一张表中只能定义一个主键索引,逐渐用于唯一标识一条记录,是用关键字PRIMARY KEY来创建。
      (5)索引可以覆盖多个数据列,如像INDEX索引,这就是联合索引。
      (6)索引可以极大的提高数据的查询速度,但是会降低插入删除更新表的速度,因为在执行这些写操作时,还要操作索引文件。

    3. 一张表,里面有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丢失。

      1. 请简述项目中优化sql语句执行效率的方法,从哪些方面。sql语句性能如何分析?
        答:
        (1)尽量选择较小的列
        (2)将where中用的比较频繁的字段建立索引
        (3)select子句中避免使用‘*’
        (4)避免在索引列上使用计算,not,in和<>等操作
        (5)当只需要一行数据的时候使用limit 1
        (6)保证表单数据不超过200w,适时分割表
        (7)针对查询较慢的语句,可以使用explain来分析该语句具体的执行情况
    4. mysql_fetch_row()和mysql_fetch_array()的区别

      答:这两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,我们只能row[0],row[1],这样以数组下标来读取数据,而mysql_fetch_array()返回的数组既包含第一种,也包含键值对的形式,我们可以这样读取数据,(假如数据库的字段是 username,passwd):row[username],row[‘passwd‘。

转载于:https://www.cnblogs.com/demolzhi/p/6108927.html

你可能感兴趣的文章
NYOJ-626-intersection set(二分查找)
查看>>
项目管理之路(1):初步踏入项目管理
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
echarts饼图显示百分比
查看>>
JMS消息
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>
php上传文件及头像预览
查看>>
大四java实习生的一些经历
查看>>
线程池的概念
查看>>
Oracle_Statspack性能诊断工具
查看>>
转获取sql维护的表关系
查看>>
Java 序列化
查看>>
Java 时间处理实例
查看>>
Java 多线程编程
查看>>
Java 数组实例
查看>>
mysql启动过程
查看>>
2017前端面试题总结
查看>>
Http GetPost网络请求
查看>>
SWIFT国际资金清算系统
查看>>
Sping注解:注解和含义
查看>>