1.为什么要使用数据库
- 数据保存在内存
- 优点: 存取速度快
- 缺点: 数据不能永久保存
- 数据保存在文件
- 优点: 数据永久保存
- 缺点:
- 速度比内存操作慢,频繁的IO操作。
- 查询数据不方便
数据保存在数据库
user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。
- db权限表:记录各个帐号在各个数据库上的操作权限。
- table_priv权限表:记录数据表级的操作权限。
- columns_priv权限表:记录数据列级的操作权限。
- host权限表:配合db权限表对给定主机上数据库级操作权限作更细致的控制。
3.MySQL的binlog有有几种录入格式?分别有什么区别?
有三种格式,statement,row和mixed。
- statement模式下
每一条会修改数据的sql都会记录在binlog中。不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。由于sql的执行是有上下文的,因此在保存的时候需要保存相关的信息,同时还有一些使用了函数之类的语句无法被记录复制。
- row级别下
不记录sql语句上下文相关信息,仅保存哪条记录被修改。记录单元为每一行的改动,基本是可以全部记下来但是由于很多操作,会导致大量行的改动 (比如alter table),因此这种模式的文件保存的信息太多,日志量太大。
- mixed
一种折中的方案,普通操作使用statement记录,当无法使用 statement的时候使用row。
4.mysql有哪些数据类型
1、整数类型
包括TINYINT、SMALLINT、MEDIUMINT、INT、 BIGINT,分别表示1字节、2字节、3字节、4字节、8字节整数。任何整数类型都可以加上UNSIGNED属性,表示数据是无符号的,即非负整数。
2、实数类型
包括FLOAT、DOUBLE、DECIMAL。 DECIMAL可以用于存储比BIGINT还大的整型,能存储精确的小数。 而FLOAT和DOUBLE是有取值范围的,并支持使用标准的浮点进行近似计算。 计算时FLOAT和DOUBLE相比DECIMAL效率更高一些。
3、字符串类型
包括VARCHAR、CHAR、TEXT、BLOB VARCHAR用于存储可变长字符串,它比定长类型更节省空间。 VARCHAR使用额外1或2个字节存储字符串长度。列长度小于255字节时,使用 1字节表示,否则使用2字节表示。
- VARCHAR存储的内容超出设置的长度时,内容会被截断。
- CHAR是定长的,根据定义的字符串长度分配足够的空间。
- CHAR会根据需要使用空格进行填充方便比较。
- CHAR适合存储很短的字符串,或者所有值都接近同一个长度。
- CHAR存储的内容超出设置的长度时,内容同样会被截断。
4、枚举类型
把不重复的数据存储为一个预定义的集合。有时可以使用ENUM代替常用的字符串类型。 ENUM存储非常紧凑,会把列表值压缩到一个或两个字节。 ENUM在内部存储时,其实存的是整数。 尽量避免使用数字作为ENUM枚举的常量,因为容易混乱。 排序是按照内部存储的整数
5、时间和日期类型
尽量使用timestamp,空间效率高于datetime, 用整数保存时间戳通常不方便处理。

