数据库基础知识
1. 为什么要使用数据库
� 数据保存在内存
优点:存取速度快
缺点:数据不能永久保存
� 数据保存在文件
优点:数据永久保存
缺点:1)速度比内存操作慢,频繁的 IO 操作。2)查询数据不方便
� 数据保存在数据库
1)数据永久保存
2)使用 SQL 语句,查询方便效率高。
3)管理数据方便
2. 什么是 SQL?
结构化查询语言(Structured Query Language)简称 SQL,是一种数
据库查询语言。
作用:用于存取数据、查询、更新和管理关系数据库系统。
3. 什么是 MySQL?
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开
发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理
系统之一,在 WEB 应用方面,MySQL 是最好的 RDBMS
(Relational Database Management System,关系数据库管理系统)
应用软件之一。在 Java 企业级开发中非常常用,因为 MySQL 是开
源免费的,并且方便扩展。
4. 数据库三大范式是什么
第一范式:每个列都不可以再拆分。
第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能
是依赖于主键的一部分。
第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于
其他非主键。
在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有
足够的理由。比如性能。事实上我们经常会为了性能而妥协数据库的
设计。
5. mysql 有关权限的表都有哪几个
MySQL 服务器通过权限表来控制用户对数据库的访问,权限表存放在
mysql 数据库里,由 mysql_install_db 脚本初始化。这些权限表分别
user,db,table_priv,columns_priv 和 host。下面分别介绍一下
这些表的结构和内容:
� user 权限表:记录允许连接到服务器的用户帐号信息,里面的
权限是全局级的。
� db 权限表:记录各个帐号在各个数据库上的操作权限。
� table_priv 权限表:记录数据表级的操作权限。
� columns_priv 权限表:记录数据列级的操作权限。
� host 权限表:配合 db 权限表对给定主机上数据库级操作权限
作更细致的控制。这个权限表不受 GRANT 和 REVOKE 语句的
影响。
6. 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 相比