数据库基础概念
为什么要使用数据库==数据库系统的优点
- 数据结构化存储,记录的数据之间的关系由数据库进行维护,从而减轻程序员的工作量
- 数据的共享性高,冗余度低且方便扩展。数据共享包括多个用户、多个应用可以同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库中的数据,同时,数据库实现数据共享大大减少了数据冗余。
- 数据独立性高。数据独立性包括数据的物理独立性和逻辑独立性,即用户的应用程序与数据库中数据的物理存储和数据的逻辑结构均相互独立。
- 数据由数据库管理系统统一管理和控制:利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系,同时数据库管理系统提供了以下几个方面的数据控制功能,以解决数据共享带来的安全隐患。
(1)数据的安全性保护:保护数据以防止不合法使用造成的数据泄密和破坏
(2)数据的完整性检查:保证数据的正确性、有效性和相容性(数据中的相容性是指表示同一事实的两个数据应相同,或者满足某一约束关系的一组数据不应发生互斥);
(3)并发控制:使在同一周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用(例如,当多个用户的并发进程同时存取、修改数据库时,可能会发生相互干扰而得到错误的结果或使得数据库的完整性遭到破坏)
(4)数据库恢复:数据库管理系统能及时发现故障,并将数据库从错误状态恢复到某一已知的正确状态。
MYSQL相比于其他数据库有哪些特点?/什么是Mysql?
MySQL数据库是基于Linux操作系统开发出来的数据库,Linux是开放源码的操作系统,MySQL数据库也是开放源码的免费数据库,这也是MySQL数据库的优点之一。
其主要优点
- 支持Linux、Mac OS、Solaris、Windows等多种操作系统。
- 为C、C++、Python、Java、Perl等多种编程语言提供了API接口。
- 支持多线程等充分利用CPU资源
- 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
- 软件体积小,安装使用简单,并且易于维护,安装及维护成本低。
什么是SQL?
结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。
作用:用于存取数据、查询、更新和管理关系数据库系统。
数据库三大范式是什么?
- 第一范式:每个列都不可以再拆分。
- 第二范式:在第一范式的基础上,每列完全依赖于主键(与主键相关),而不能是依赖于主键的一部分。例如商品名称依赖于商品编号,而不是(商品编号,订单编号)的联合索引
- 第三范式:在第二范式的基础上,确保数据表中的每一列数据都和主键直接相关,而不能间接相关
在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。比如性能。事实上我们经常会为了性能而妥协数据库的设计。例如比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。如下面这两个表所示的设计就是一个满足第三范式的数据库表。
Mysql基础架构
MySQL可以分为Server层和存储引擎层两部分。
Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。现在最常用的存储引擎是InnoDB,它从MySQL 5.5.5版本开始成为了默认存储引擎。
连接器:负责跟客户端建立连接、获取权限、维持和管理连接。
查询缓存:MySQL拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。之前执行过的语句及其结果可能会以key-value对的形式,被直接缓存在内存中。key是查询的语句,value是查询的结果。
分析器:先做“词法分析”。你输入的是由多个字符串和空格组成的一条SQL语句,MySQL需要识别出里面的字符串分别是什么,代表什么。然后做语法分析,判断识别后的SQL语句是否符合语法规则。
优化器:优化器是在表里面有多个索引的时候,决定使用哪个索引;或者多表关联的情况下如何做查询,决定该如何执行SQL语句
执行器:执行SQL语句前会鉴别权限判断你对这个表是否有操作权限,如果有执行器就会根据表的引擎定义,去使用这个引擎提供的接口。
mysql权限控制
Mysql通过权限表来控制用户对数据库的访问,
- user权限表&