之前挖的坑,现在来填。好久没复习和学习关于数据库的知识,之前觉得,准备面试,只需要了解写写常见的select语句就可以。现实却是,人家常见的增删改查都不怎么问,直接来外连接,内连接,索引如何优化,数据库的优化等这样的问题。所以,现在尝试把这个MySQL的基础系列补齐,在一定基础的积累之上,才会遇到和思考为什么要去优化。下面通过复习几个概念来展开MySQL基础的学习。
1. 什么是数据库?
数据库通俗讲就是能够存储的容器或者仓库。专业的定义是高效的存储和处理数据的介质。介质主要是硬盘和内存两种。
2. 数据库的分类
数据库基于存储介质的不同主要分两类:关系型数据库(SQL)和非关系型数据库(NoSQL: Not Only SQL)。中文定义习惯把不是关系型的数据库都叫非关系型数据库。
3.不同数据库的阵营的产品
关系型数据库:
大型(重量级):Oracle,DB2(IBM)
中型:SQL-SERVER,MySQL
小写:Access等
非关系型数据库:
Memcached
Mongodb
Redis
三种都是运行在内存上,最早的产品是memcached,然后是mongodb慢慢流行起来,现在最流行的是Redis, 其中memcached和mongodb容易丢失数据,Redis可以做到不丢数据,是由于Redis采用了一个把数据从内存备份到磁盘的技术。
4.关系型数据库和非关系型数据库的区别
关系型数据库:安全(保存在磁盘基本不会丢失),容易理解和掌握,比较浪费磁盘空间
非关系型数据库:不安全(断电数据会丢失),效率高(运行在内存上比磁盘效率要高)
5.什么是关系型数据库
关系型数据库:是一种建立在关系模型(数学模型)上的数据库。
6.什么是关系模型
关系模型:一种建立在关系上的模型(感觉这定义没有技术含量,废话)。这样,我们通过以下三个方面来理解关系模型。
数据结构:主要解决数据存储方式,用二维表来存储,就是excel看到的表格那样,有行和列结构。
完整性约束:表内数据约束(字段与字段),表与表之间约束(外键)
操作指令集合:主要是SQL
7. 关系型数据库的设计标准
从需要存储的数据中去分析,如果是一类数据(实体)应该设计成一张二维表。表是由表头(字段名:用来规定数据的名称)和数据(实际存储的部分)部分组成。例如下面这个表。
表头 | 字段1 | 字段2 |
数据单元 | 数据1 | 数据2 |
8.关键字说明
数据库:database,或者简称DB
数据库管理系统:DBMS(Database Management System),专门用来管理数据库的
数据库系统:DBS(Database System) DBS =DBMS + DB
数据库管理员:DBA(Database Administrator)
行:row,表中一行,从结构角度出发定义
记录:record,一条数据是一个记录,从数据角度出发。
列:column,一列
字段:field
上面行和记录本质是一个东西,同样列和字段也是本质是一个东西。都是从不同角度来描述的。