数据库decimal对应java什么类型_阿⾥⾯试官必问的12个
MySQL数据库基础知识,。。。
数据库基础知识
1、为什么要使⽤数据库
(1)数据保存在内存
优点: 存取速度快
缺点: 数据不能永久保存
(2)数据保存在⽂件
优点: 数据永久保存
缺点:
1)速度⽐内存操作慢,频繁的IO操作。
长寿歌2)查询数据不⽅便
(3)数据保存在数据库
1)数据永久保存
2)使⽤SQL语句,查询⽅便效率⾼。
3)管理数据⽅便
2、什么是SQL?
结构化查询语⾔(Structured Query Language)简称SQL,是⼀种数据库查询语⾔。
作⽤:⽤于存取数据、查询、更新和管理关系数据库系统。
3、什么是MySQL?
MySQL是⼀个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流⾏的关系型数据库管理系统之⼀,在 WEB 应⽤⽅⾯,MySQL是最好的 RDBMS (Relational Databa Management System,关系数据库管理系统) 应⽤软件之⼀。在Java企业级开发中⾮常常
⽤,因为 MySQL 是开源免费的,并且⽅便扩展。
4、数据库三⼤范式是什么
第⼀范式:每个列都不可以再拆分。
第⼆范式:在第⼀范式的基础上,⾮主键列完全依赖于主键,⽽不能是依赖于主键的⼀部分。
第三范式:在第⼆范式的基础上,⾮主键列只依赖于主键,不依赖于其他⾮主键。
在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有⾜够的理由。⽐如性能。事实上我们经常会为了性能⽽妥协数据库的设计。
5、MySQL有关权限的表都有哪⼏个
MySQL服务器通过权限表来控制⽤户对数据库的访问,权限表存放在mysql数据库⾥,由mysql_install_db脚本初始化。这些权限表分别ur,db,table_priv,columns_priv和host。下⾯分别介绍⼀下这些表的结构和内容:
ur权限表:记录允许连接到服务器的⽤户帐号信息,⾥⾯的权限是全局级的。
db权限表:记录各个帐号在各个数据库上的操作权限。
table_priv权限表:记录数据表级的操作权限。
columns_priv权限表:记录数据列级的操作权限。
host权限表:配合db权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。
学期总结300字6、MySQL的binlog有有⼏种录⼊格式?分别有什么区别?
有三种格式,statement,row和mixed。
statement模式下,每⼀条会修改数据的sql都会记录在binlog中。不需要记录每⼀⾏的变化,减少了binlog⽇志量,节约了IO,提⾼性能。由于sql的执⾏是有上下⽂的,因此在保存的时候需要保存相关的信息,同时还有⼀些使⽤了函数之类的语句⽆法被记录复制。
row级别下,不记录sql语句上下⽂相关信息,仅保存哪条记录被修改。记录单元为每⼀⾏的改动,基本是可以全部记下来但是由于很多操作,会导致⼤量⾏的改动(⽐如alter table),因此这种模式的⽂件保存的信息太多,⽇志量太⼤。
mixed,⼀种折中的⽅案,普通操作使⽤statement记录,当⽆法使⽤statement的时候使⽤row。
此外,新版的MySQL中对row级别也做了⼀些优化,当表结构发⽣变化的时候,会记录语句⽽不是逐⾏记录。
7.数据类型
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存储。
看到这⾥,这道真题是不是就⽐较容易回答了。
引擎
1、MySQL存储引擎MyISAM与InnoDB区别
存储引擎Storage engine:MySQL中的数据、索引以及其他对象是如何存储的,是⼀套⽂件系统的实现。
常⽤的存储引擎有以下:
Innodb引擎:Innodb引擎提供了对数据库ACID事务的⽀持。并且还提供了⾏级锁和外键的约束。它的设计的⽬标就是处理⼤数据容Innodb引擎
量的数据库系统。
MyIASM引擎(原本Mysql的默认引擎):不提供事务的⽀持,也不⽀持⾏级锁和外键。
MyIASM引擎
画展策划书MEMORY引擎
迎国庆资料MEMORY引擎:所有的数据都在内存中,数据的处理速度快,但是安全性不⾼。
2、MyISAM与InnoDB区别圆寂打一成语
3、MyISAM索引与InnoDB索引的区别?秋甲虫
InnoDB索引是聚簇索引,MyISAM索引是⾮聚簇索引。
紧逼裤
InnoDB的主键索引的叶⼦节点存储着⾏数据,因此主键索引⾮常⾼效。
MyISAM索引的叶⼦节点存储的是⾏数据地址,需要再寻址⼀次才能得到数据。
人工智能的好处InnoDB⾮主键索引的叶⼦节点存储的是主键和其他带索引的列数据,因此查询时做到覆盖索引会⾮常⾼效。
4、InnoDB引擎的4⼤特性
插⼊缓冲(inrt buffer)
⼆次写(double write)
⾃适应哈希索引(ahi)
预读(read ahead)
5、存储引擎选择
如果没有特别的需求,使⽤默认的Innodb即可。
MyISAM:以读写插⼊为主的应⽤程序,⽐如博客系统、新闻门户⽹站。
Innodb:更新(删除)操作频率也⾼,或者要保证数据的完整性;并发量⾼,⽀持事务和外键。⽐如OA⾃动化办公系统。