# mysql知识点总结
## 第一章知识点总结
### 一、MySQL的特点:
1.运行速度:
MySQL的运行速度相当快,My5QL开发人员相信它是目前最快的数据库系统之一。你可以查询一下最近 10年来MySQL的排名,它一直在数据库开发排行榜的前三名。MySQL一直在进步,尤其是在InnoDB(它现在是默认的存储引擎)和查询优化器方面。
2.易用性:
MySQL是一个相对简单的、高性能数据库系统,与其他大型数据库系统相比,它的设置和管理都要简单很多。
3.SQL支持:
MySQL支持的结构化查询语言(Structured Query Language,SQL),是目前所有现代数据库系统都选用的标准语言。在上一小节中,我们介绍了很多主流的数据库,在这些数据库中除了MongoDB是典型的NoSQL外,其他数据库都支持SQL。因此,有很多的软件开发企业和互联网企业在招聘时通常要求应聘者“熟练使用MySQL、SQLServer、Oracle一种或多种数据库”,而不会严格要求会使用哪一种具体数据库。
4.功能性:
MySQL服务器支持多线程,因此允许多个客户端同时与它连接。每个客户端可以使用多个数据库。与MySQL进行交互的接口很多,通过他们可以输入查询命令,并查看查询结果。主要的接口类型包括命令行客户端、Web浏览器和GUI客户端等。此外,它还提供了多种语言编程接口,其中包括C、Perl、Java、PHP、Python和Ruby。也可以通过支持ODBC、JDBC和ADO.NET的应用程序来访问 MySQL。也就是说,你可以选择使用预先打包好的客户端软件,也可以编写自己的应用程序。
5.连接性与安全性:
MySQL完全支持网络化,用户可以从因特网上的任何地点来访问数据库,因此你可以与任何地方的任何人共享数据。由于MySQL拥有访问控制功能,它可以保证连接的一方完全无法看到另一方的数据。为了提供更多的安全防护,MySQL还支持使用安全套接层(Secure Sockets Layer,SSL)协议加密的连接。
6.可移植性:
MySQL除了可以运行在Windows系统上以外,还可以运行在各种版本的Unix和Linux系统上。可以运行MySQL硬件包括各种类似路由器和个人电脑那样的小型设备,也包括那些拥有多个CPU和大容量内存的高端服务器。
7. 可用性和成本:
Mvsau是一个开源项目,有多种许可条款可供选择。首先,可以选择GNU通用公共许可(Senerel Public License,GPLy).这意味着SL对于大部分内部使用都是免费的。其次,对于那些愿意接受或者需要正规服务的组织,以及那些不想受到GPL许可约束的机构,可以选择商业许可。
8. 公开发行和源代码:
获取MySQL的方法很简单,只需要使用浏览器即可。如果对某些工作原理有不太明白的地方,或者对某个算法感到好奇,或者想要进行安全审查,你可以获取它的源代码,并
对它进行检查。 # 第二章知识点总结
### 一、设计数据库的必要性
数据库中创建的数据表的结构,以及数据实体之间的复杂关系是决定数据库系统工作效率的重要因素。
1.糟糕的数据库设计具有以下不足。
*效率低下
*更新和检索数据会出现异常
良好的数据库设计具有以下优点。
1.效率高
2.便于进一步扩展
3.使得应用程序的开发变得更容易。
### 二、数据库设计的步骤
数据库设计分为6个阶段。
1.需求分析阶段
准确了解与分析用户需求,是整个设计过程的基础,也是最困难、最耗费时间的阶段。
2.概念结构设计阶段
这一阶段是整个数据库设计的关键,通过对用户需求进行综合、归纳及抽象,形成一个独立于具体DBMS的概念模型,同时在这个阶段绘制E-R模型图。
3.逻辑结构设计阶段
将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。
4.数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
5.数据库实施阶段
运用DBMS提供的数据语言、工具,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库并进行试运行。
6.数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行。在运行过程中必须不断地对其进行评价、调整及修改。
无论数据库的复杂程度如何,在进行数据库分析设计时,都需要执行收集信息、标识实体、标识实体的属性及标识实体的关系4个步骤。
### 三、实施数据完整性
1.域完整性(主键约束、唯一约束、标识列)
2.列完整性(非空约束、默认约束)
3.引用完整性(主外键关系)
4.自定义完整性
### 四、简单熟悉数据库范式
第一范式(1NF):字段值具有原子性,不能再分(所有关系型数据库系统都满足第一范式);
例如:姓名字段,其中姓和名是一个整体,如果区分姓和名那么必须设立两个独立字段;
第二范式(2NF):一个表必须有主键,即每行数据都能被唯一的区分;
备注:必须先满足第一范式;
第三范式(3NF):一个表中不能包涵其他相关表中非关键字段的信息,即数据表不能有沉余字段;
备注:必须先满足第二范式;
数据库的三范式:
①字段不可分。
②有主键,非主键字段依赖主键。
③非主键字段不能互相依赖。
备注:往往我们在设计表中不能遵守第三范式,因为合理的沉余字段将会给我们减少join的查询;
例如:相册表中会添加图片的点击数字段,在相册图片表中也会添加图片的点击数字段;