MySQL面试题——数据库基础知识

文章目录

      • 1.为什么要使用数据库
      • 2.什么是SQL
      • 3.数据库的三大范式是什么
      • 3.MySQL有关权限的表都有哪几个
      • 4.MySQL的Binlog

1.为什么要使用数据库

数据库保存在内存中时:

  • 优点:存取速度快
  • 缺点:数据不能永久保存

数据库保存在文件中时

  • 优点:数据永久保存
  • 缺点:速度比内存操作慢,频繁的IO操作,查询数据不方便

数据保存在数据库中时:

  • 优点:数据永久保存
  • 缺点:使用SQL语句,查询方便效率高

2.什么是SQL

SQL就是结构化查询语言,是一种数据库查询语言,用于存取数据、查询、更新、管理关系数据库系统

3.数据库的三大范式是什么

第一范式:每个列都不可再拆分,强调的是列的原子性:即列不能够再分成几列,在任何一个关系型数据库中,第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系数据库

第二范式:满足第二范式必须先满足第一范式,第二范式在第一范式的基础之上更进一层,第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(这个主要针对联合主键而言)
比如要设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库的联合主键,这样就产生一个问题:这个表中是以订单编号和商品编号作为联合主机那。这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关,所以这里违反了第二范式的设计原则:
MySQL面试题——数据库基础知识_第1张图片
第三范式:满足第三范式必须先满足第二范式,第三范式要求:任何非主属性不依赖于其他非主属性,在2NF基础上消除传递依赖

3.MySQL有关权限的表都有哪几个

MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在MySQL数据库里,由mysql_install_db脚本初始化

  • user权限表:记录允许连接到服务器的用户账号信息,里面的权限是全局的
  • db权限表:记录各个账号在各个数据库上的操作权限
  • table_priv权限表:记录数据表级的操作权限
  • columns_priv权限表:记录数据库列级的操作权限
  • host权限表:配合db权限表对给定主机上数据库操作权限作更细致的控制

在MySQL数据库中,权限分配是按照user表>db表>table_priv表>columns_priv表的顺序来分配的

4.MySQL的Binlog

binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE……)以及表数据修改(INSERT、UPDATE、DELETE……)的二进制日志,Binlog不会记录SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改
MySQL的binlog有三种录入格式:

  • statement模式下每一条修改数据的SQL都会记录在binlog中,不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高了性能。
  • row级别下,不记录SQL语句上下文相关信息,仅保存哪条记录被修改。记录单元为每一行的改动,这种模式的文件保存的信息太多,日志量太大
  • mixed,一种折中的方案,普通操作使用statement,当无法使用statement的时候使用row

你可能感兴趣的:(MySQL面试题——数据库基础知识)