php面试专题---15、MySQL数据库基础考察点

一、总结

一句话总结:

注意:只写精品

1、mysql定义int(3),那么我存1234就错了么?

不是:无影响:只会影响显示字符的个数:可以为整数类型指定宽度,例如:INT(11)、对大多数应用是没有意义的,它不会限制值的合法范围,只会影响显示字符的个数
int(3)的意义:如果我们是12,又设置了zerofill,那么mysql自动为我们填充为012

2、mysql中FLOAT、DOUBLE、DECIMAL注意 ?

1、DECIMAL可存储比BIGINT还大的整数;可以用于存储精确的小数
2、FLOAT和DOUBLE类型支持使用标准的浮点进行近似计算:比DECIMAL效率高

3、varchar存储实质?

额外字节记录长度:VARCHAR使用1或2个额外字节记录字符串的长度,列长度小于255字节,使用1个字节表示,否则用2个
截断:VARCHAR长度,如果存储内容超出指定长度,会被截断

4、char使用注意?

空格填充比较:CHAR会根据需要采用空格进行填充以方便比较
截断:CHAR长度,超出设定的长度,会被截断

CHAR是定长的,根据定义的字符串长度分配足够的空间
空格填充比较:CHAR会根据需要采用空格进行填充以方便比较
CHAR适合存储很短的字符串,或者所有值都接近同一个长度
截断:CHAR长度,超出设定的长度,会被截断

5、char比varchar好的地方?

碎片:对于经常变更的数据,CHAR比VARCHAR更好,CHAR不容易产生碎片
短串效率:对于非常短的列,CHAR比VARCHAR在存储空间上更有效率

6、BLOB/TEXT类型注意?

尽量避免使用:BLOB/TEXT类型,查询会使用临时表,导致严重的性能开销。

7、InnoDB表引擎 和 MyISAM表引擎 比较 及注意?

1、用InnoDB就对了
2、InnoDB:事务、优化、性能好、行锁
3、配置分开共享表空间:InnoDB数据存储在共享表空间,可以通过配置分开

InnoDB表引擎
默认事务型引擎,最重要最广泛的存储引擎,性能非常优秀
数据存储在共享表空间,可以通过配置分开
对主键查询的性能高于其他类型的存储引擎
内部做了很多优化,从磁盘读取数据时自动在内存构建hash索引,插入数据时自动构建插入缓冲区

通过一些机制和工具支持真正的热备份
支持崩溃后的安全恢复
支持行级锁
支持外键

MyISAM表引擎
5.1版本前,MyISAM是默认的存储引擎
拥有全文索引、压缩、空间函数
不支持事务和行级锁,不支持崩溃后的安全恢复
表存储在两个文件,MYD和MYI
设计简单,某些场景下性能很好

8、MySQL锁机制?

读锁:共享的,不堵塞,多个用户可以同时读一个资源,互不干扰
写锁:排他的,一个写锁会阻塞其他的写锁和读锁,这样可以只允许一个人进行写入,防止其他用户读取正在写入的资源。

表锁是日常开发当中常见的问题,因此也是面试当中最常见的考察点,当多个查询同一时刻进行数据修改时,就会产生并发控制的问题。

共享锁和排他锁,其实就是读锁和写锁

读锁
共享的,不堵塞,多个用户可以同时读一个资源,互不干扰

写锁
排他的,一个写锁会阻塞其他的写锁和读锁,这样可以只允许一个人进行写入,防止其他用户读取正在写入的资源。

9、行锁 和 表锁 对比?

开销小:表锁,系统性能开销最小,会锁定整张表,MyISAM使用表锁
性能好,开销大:行锁,最大程度地支持并发处理,但是也带来了最大的锁开销,InnoDB实现行级锁

锁粒度
表锁,系统性能开销最小,会锁定整张表,MyISAM使用表锁
行锁,最大程度地支持并发处理,但是也带来了最大的锁开销,InnoDB实现行级锁

10、事务处理?

同存储引擎:服务器层不管理事务,由下层的引擎实现,所以同一个事务中,使用多种存储引擎不靠谱
不提醒,不报错:在非事务的表上执行事务操作MySQL不会发出提醒,也不会报错

MySQL提供事务处理的表引擎,InnoDB

11、存储过程 实质?

一条或多条MySQL语句的集合

为以后的使用而保存的一条或多条MySQL语句的集合
存储过程就是有业务逻辑和流程的集合
可以在存储过程中创建表,更新数据,删除等等

12、存储过程 使用场景?

类似函数:通过把处理封装在容易使用的单元中,简化复杂的操作

通过把处理封装在容易使用的单元中,简化复杂的操作
保证数据的一致性
简化对变动的管理

13、触发器实质?

与表事件相关的特殊的存储过程

提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程

14、触发器 使用场景 及注意?

级联更改:可通过数据库中的相关表实现级联更改
实时监控:实时监控某张表中的某个字段的更改而需要做出相应的处理
滥用维护困难:滥用会造成数据库及应用程序的维护困难

可通过数据库中的相关表实现级联更改
实时监控某张表中的某个字段的更改而需要做出相应的处理
某些业务编号的生成等
滥用会造成数据库及应用程序的维护困难

二、内容在总结中

 

php面试专题---15、MySQL数据库基础考察点的更多相关文章

  1. PHP面试 MySQL数据库基础

    MySQL数据库基础 MySQL数据类型 整数类型:TINYINT   SMALLINT   MEDIUMINT   INT   BIGINT 属性:UNSIGNED 长度:可以为整数类型指定宽度,列 ...

  2. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  3. MySQL数据库--基础简述

    MySQL数据库--基础简述 1.15.1 MySQL简介 Mysql是最流行的RDBMS(Relational Database Management System:关系数据库管理系统),特别是在W ...

  4. mysql数据库基础的简单操作指南

    最近在学习mysql,本文是做的关于mysql学习的笔记,跟大家分享一下,希望对大家学习mysql知识有所助益.mysql现在几乎已经成了网站建设的主流数据库,很多php网站系统都采用了mysql数据 ...

  5. MySQL数据库基础

    MySQL数据库基础 本文的所有操作是基于CMD环境,MySQL通过在命令行中输入SQL语句对数据库进行操作.配置问题可参考<打通MySQL的操作权限>中的内容,该文算是针对前期的环境配置 ...

  6. Mysql数据库基础操作

    Mysql数据库基础操作 在mysql数据库中开启使用tab键补全功能 1)修改主配置文件/etc/mysql/my.cnf(mysql和mariadb目录有些不同) vim /etc/mysql/m ...

  7. mysql数据库基础-2019-9-10(随堂笔记)

    mysql数据库基础 在cmd情况下启动mysql数据库:(配置path环境变量后可忽略) 运行mysql1. 进入mysql路径2. 执行:mysql -uroot -p,安装时的密码 1.数据库& ...

  8. php面试专题---14、Linux基础考点

    php面试专题---14.Linux基础考点 一.总结 一句话总结: php考linux其实也考不了很难 1.系统定时任务? crontab命令和 at命令 crontab命令 crontab -e ...

  9. php面试专题---13、AJAX基础内容考点

    php面试专题---13.AJAX基础内容考点 一.总结 一句话总结: ajax对提升用户速度,缓解服务器压力方面也是很有可取之处的,毕竟传递的数据少了 1.AJAX基础概念? Asynchronou ...

随机推荐

  1. unity不规则按钮解决方案

    一种是alpha检测 一种是设置collider 参考: https://zhuanlan.zhihu.com/p/34204396 下面给出第二种方案代码 ///按钮多边形点击方案,注意Canvas ...

  2. 在使用spring中的ContextConfiguration、test注解时出现的错误

    错误: 在使用测试注解时出现ContextConfiguration注解和test注解无法正常导包使用的编译异常,如图: 解决办法: 将pom.xml文件中以下依赖管理 中的<scope> ...

  3. Git 本地创建分支并提交远程分支

    在本地git checkout -b xxx 创建分支之后 想要提交分支到远程, 直接git push是不行的, 除非原来的分支里面就有这个分支. 需要先使用:git push origin  xxx ...

  4. markDown 生成带侧边栏的目录

    1.首先安装马克飞象 2.第二步安装 npm install -g i5ting_toc 3.进入 md 文件所在的文件夹后, 输入命令:   i5ting_toc -f sample.md -o s ...

  5. 用户权限管理数据库设计(RBAC)

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...

  6. C# 同步调用 异步调用 异步回调 多线程的作用

    同步调用   : 委托的Invoke方法用来进行同步调用.同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行. 异步调用  :同步调用会阻塞线程,如果是要调用一项繁重的 ...

  7. JavaScript基础4——省市联动

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. SwiftUI 实战:从 0 到 1 研发一个 App

    心得感悟 起初看到 WWDC 上的演示 SwiftUI 时,我就觉得 SwiftUI 有种陌生的熟悉感(声明式语法),所以体验下,看看有没有什么启发. 先说下整体项目完成下来的感受: 用 Swift ...

  9. JSP学习(5)

    JSP学习(5) 保存用户状态的两大机制 session对象 Cookie Cookie简介 是Web服务器保存在客户端的一系列文本信息 典型应用 判断注册用户是否已经登录 购物车处理 作用 对特定对 ...

  10. break语句、continue语句、goto语句的用法辨析

    1.break语句 break语句常使用在switch语句.循环体以及if语句中,它的作用是跳出循环,而且只能跳出一层循环. for (i = 0; i < 10; ++j) { for (j ...