int类型存小数 mysql_2020年最新版MySQL面试题(一)
数据库基础知识
一、为什么要使用数据库
1.数据保存在内存
- 优点:存取速度快
- 缺点:数据不能永久保存
2.数据保存在文件
- 优点:数据永久保存
- 缺点:①速度比内存操作慢,频繁的IO操作;②查询数据不方便。
3.数据保存在数据库
①数据永久保存;②使用SQL语句,查询方便效率高;③管理数据方便。
二、什么是SQL?
定义:结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。
作用:用于存取数据、查询、更新和管理关系数据库系统。
三、什么是MySQL?
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。在PHP企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展。
四、数据库三大范式是什么?
- 第一范式:每个列都不可以再拆分。
- 第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。
- 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。
在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。比如性能。事实上我们经常会为了性能而妥协数据库的设计。
五、mysql有关权限的表都有哪几个?
MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。
下面分别介绍一下这些表的结构和内容:
- user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。
- db权限表:记录各个帐号在各个数据库上的操作权限。
- table_priv权限表:记录数据表级的操作权限。
- columns_priv权限表:记录数据列级的操作权限。
- host权限表:配合db权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。
六、MySQL的binlog有有几种录入格式?分别有什么区别?
有三种格式,statement,row和mixed。
- statement模式下,每一条会修改数据的sql都会记录在binlog中。不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。由于sql的执行是有上下文的,因此在保存的时候需要保存相关的信息,同时还有一些使用了函数之类的语句无法被记录复制。
- row级别下,不记录sql语句上下文相关信息,仅保存哪条记录被修改。记录单元为每一行的改动,基本是可以全部记下来但是由于很多操作,会导致大量行的改动(比如alter table),因此这种模式的文件保存的信息太多,日志量太大。
- mixed,一种折中的方案,普通操作使用statement记录,当无法使用statement的时候使用row。
此外,新版的MySQL中对row级别也做了一些优化,当表结构发生变化的时候,会记录语句而不是逐行记录。
数据类型
一、mysql有哪些数据类型?
1.整数类型,包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。
- 分别表示1字节、2字节、3字节、4字节、8字节整数。任何整数类型都可以加上UNSIGNED属性,表示数据是无符号的,即非负整数。
- 长度:整数类型可以被指定长度。例如:INT(11)表示长度为11的INT类型。长度在大多数场景是没有意义的,它不会限制值的合法范围,只会影响显示字符的个数,而且需要和UNSIGNED ZEROFILL属性配合使用才有意义。
- 例子。假定类型设定为INT(5),属性为UNSIGNED ZEROFILL,如果用户插入的数据为12的话,那么数据库实际存储数据为00012。
2.实数类型,包括FLOAT、DOUBLE、DECIMAL。
- DECIMAL可以用于存储比BIGINT还大的整型,能存储精确的小数。
- 而FLOAT和DOUBLE是有取值范围的,并支持使用标准的浮点进行近似计算。
- 计算时FLOAT和DOUBLE相比DECIMAL效率更高一些,DECIMAL你可以理解成是用字符串进行处理。
3.字符串类型,包括VARCHAR、CHAR、TEXT、BLOB。
- VARCHAR用于存储可变长字符串,它比定长类型更节省空间。
- VARCHAR使用额外1或2个字节存储字符串长度。列长度小于255字节时,使用1字节表示,否则使用2字节表示。
- VARCHAR存储的内容超出设置的长度时,内容会被截断。
- CHAR是定长的,根据定义的字符串长度分配足够的空间。
- CHAR会根据需要使用空格进行填充方便比较。
- CHAR适合存储很短的字符串,或者所有值都接近同一个长度。
- CHAR存储的内容超出设置的长度时,内容同样会被截断。
使用策略:
对于经常变更的数据来说,CHAR比VARCHAR更好,因为CHAR不容易产生碎片。
对于非常短的列,CHAR比VARCHAR在存储空间上更有效率。
使用时要注意只分配需要的空间,更长的列排序时会消耗更多内存。
尽量避免使用TEXT/BLOB类型,查询时会使用临时表,导致严重的性能开销。
4.枚举类型(ENUM),把不重复的数据存储为一个预定义的集合。
- 有时可以使用ENUM代替常用的字符串类型。
- ENUM存储非常紧凑,会把列表值压缩到一个或两个字节。
- ENUM在内部存储时,其实存的是整数。
- 尽量避免使用数字作为ENUM枚举的常量,因为容易混乱。
- 排序是按照内部存储的整数
5.日期和时间类型,尽量使用timestamp,空间效率高于datetime,用整数保存时间戳通常不方便处理。
- 如果需要存储微妙,可以使用bigint存储。
- 看到这里,这道真题是不是就比较容易回答了。
引擎
一、MySQL存储引擎MyISAM与InnoDB区别
存储引擎Storage engine:MySQL中的数据、索引以及其他对象是如何存储的,是一套文件系统的实现。
常用的存储引擎有以下:
- Innodb引擎:Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。
- MyIASM引擎(原本Mysql的默认引擎):不提供事务的支持,也不支持行级锁和外键。
- MEMORY引擎:所有的数据都在内存中,数据的处理速度快,但是安全性不高。
二、MyISAM与InnoDB区别
三、MyISAM索引与InnoDB索引的区别?
- InnoDB索引是聚簇索引,MyISAM索引是非聚簇索引。
- InnoDB的主键索引的叶子节点存储着行数据,因此主键索引非常高效。
- MyISAM索引的叶子节点存储的是行数据地址,需要再寻址一次才能得到数据。
- InnoDB非主键索引的叶子节点存储的是主键和其他带索引的列数据,因此查询时做到覆盖索引会非常高效。
四、InnoDB引擎的4大特性
- 插入缓冲(insert buffer)
- 二次写(double write)
- 自适应哈希索引(ahi)
- 预读(read ahead)
五、存储引擎选择
如果没有特别的需求,使用默认的Innodb即可。
- MyISAM:以读写插入为主的应用程序,比如博客系统、新闻门户网站。
- Innodb:更新(删除)操作频率也高,或者要保证数据的完整性;并发量高,支持事务和外键。比如OA自动化办公系统。
来源:https://blog.csdn.net/ThinkWon/article/details/104778621
int类型存小数 mysql_2020年最新版MySQL面试题(一)相关推荐
- int类型存小数 mysql_MySQL面试题-数据类型
mysql有哪些数据类型 · 1.整数类型,包括TINYINT.SMALLINT.MEDIUMINT.INT.BIGINT,分别表示1字节.2字节.3字节.4字节.8字节整数.任何整数类型都可以加上U ...
- int类型存小数 mysql_MySQL基本数据类型
1)整形 1.介绍 分类:tinyint , smallint , mediumint , int , bigint 应用场景:存储年龄,等级,id,各种号码等 典型存储范围介绍: https://i ...
- int类型存小数 mysql_存入mysql小数
MySQL学习笔记之数据类型详解 注:以下内容针对MySQL5.0及以上版本 MySQL的数据类型非常多,选择正确的数据类型对于获得高性能至关重要,本文是我结合网上看到的一些blog加上<高性能 ...
- php如何对 mysql 中text类型拆分存入一个数组_PHP、Mysql笔试题
PHP&MySQL 笔试题 一.选择题 1. php代表什么意思?() A.Hypertext Preprocessor(超文本预处理器) B.Hyperlink Preprocessor(超 ...
- 设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五人运算的表达式是: A) n=(n*100+0.5)/100.0 B)m=n*100+0.5
设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五人运算的表达式是: A) n=(n100+0.5)/100.0 B)m=n100+0.5 ,n= m ...
- Android 两个int类型的数相除结果应该是有小数的,但是为什么结果为0?
先看个例子: int i=4; double num=3/i; 输入结果为 :num=0.0 很奇怪..我们应该是需要0.75才对啊 .这是怎么回事.原来.除数i是int类型,用3相除得到结果 ...
- float取整数部分_一步一步学Python3(小学生也适用) 第六篇: 变量及整数(int)类型...
上一篇中我们把数字或字符串赋值给了一个变量,那么这一篇我们将先介绍一下变量变量可以看成一个抽屉,用来存放程序中的数据.在一个程序中每个变量都拥有独有的名字,通过变量的名字就能找到变量中(抽屉)的数据. ...
- mysql数据库中的int类型_MySQL中int(M)和tinyint(M)数值类型中M值的意义
在一开始接触MySQL数据库时,对于int(M)及tinyint(M)两者数值类型后面的M值理解是最多能够插入数据库中的值不能大于M: 后来工作后,也是一边学习一边使用,之后的理解是其中的M的意思是插 ...
- python列表各元素修改为int类型
import numpy as np action = np.trunc(action).astype(int).tolist() 函数去掉小数,但元素本身并不是整数.( 例1. 或者 2. 没有小数 ...
最新文章
- web前端开发怎么学,web教程资源
- ui设计现状与意义_学UI设计到底好不好?
- 关于DRAM、SRAM、cache、cpu、寄存器、主存之间的联系与区别
- LiveVideoStackCon技术培训 限量买1赠1
- java泛型程序设计——泛型类型的继承原则
- ThinkPHP6项目基操(13.实战部分 项目中的自定义异常处理总结 错误页面API错误)
- 3-2 :eq(index)过滤选择器
- Python爬虫十六式 - 第三式:Requests的用法
- 海量存储之十九--一致性和高可用专题
- window环境下Redies安装和服务启用
- 12306 终于随随便便撑起洪峰流量了,全面拥抱Redis 6.x!
- Pandas requires version ‘2.0.1‘ or newer of ‘xlrd‘ (version ‘1.2.0‘ currently installed).
- STM32 printf 输出到usart1
- 【原创】更相减损术 stein算法 欧几里得算法 拓展欧几里得算法 扩展欧几里得算法 逆元的计算与筛法 解模线性方程
- 乌镇互联网大会发布15项世界领先科技成果
- Leetcode跳跃游戏
- Android魅族等手机下拉刷新有留白(下拉悬停)
- 18亿像素火星全景超高清NASA放出,非常震撼
- shell编程中文件安全性的保证
- 全国计算机理论知识,全国计算机等级考试理论知识(冲刺练习)
热门文章
- 截取小数点_五年级上册系列| 小数点位置变化名师微课+课本+学案,暑假预科,很香!...
- pcb成型板aoi检测_缺陷检测 | PCB AOI质量检测之自动定位核选取算法
- Angular CLI版本问题(Your global Angular CLI version (12.2.7) is greater than your local version (9.0.3))
- python如何顺序执行多个文件/程序?
- python matplotlib二维平面等高线的绘制, plt.contour 与 plt.contourf, plt.clabel和plt.colorbar, plt.xticks([])
- pytorch的梯度计算以及backward方法
- php中的isset函数和empty函数
- c语言编程后总有一个错误,C语言编程,之后出现错误,请大神帮忙看下什么问题?...
- Logstash 使用http output处理数据
- linux安装libfastcommon+fastdfs+nginx