MySQL知识点总结
一:概述
一、数据库系统
1. 数据库
1. 概念:数据库是“按照数据结构来组织、存储和管理数据的仓库”,是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。
2. 类型
1. 关系型数据库(SQL):数据存储的格式可以直观地反映实体间的关系。
2. 非关型数据库(NoSQL):分布式的、非关系型的、不保证遵循ACID原则的数据存储系统。
3. 两者区别
1. 存储方式不同
1. SQL数据储在数据表的行和列。
2. NoSQL数据存储在数据集中,像文档、键值对或者图结构。
2. 扩展方式不同
1. SQL数据库的高并发量比较依赖计算机性能。
2. NoSQL数据库是分布式的,可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载,性能更好。
3. 事务支持不同
1. SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。
2. NoSQL数据库操作的扩展性和大数据量处理方面优势更好。
2. 数据库管理系统
1. 概念:数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。
2. 功能
1. 数据定义:DBMS提供数据定义语言(Data Definition Language,简称DDL),供用户定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束。
2. 数据操作:DBMS提供数据操作语言(Data Manipulation Language,简称DML),供用户实现对数据的追加、删除、更新、查询等操作。
3. 维护管理:数据库系统的安全,保证事务的原子性。
3. SQL语言
1. 概念:SQL(Structured Query Language,结构化查询语言),用于存取数据以及查询、更新和管理关系数据库系统。
2. 组成
1. 数据定义语言(DDL):DROP、CREATE、ALTER 等语句
2. 数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
3. 数据查询语言(DQL):SELECT 语句。
4. 数据控制语言(DCL): GRANT、REVOKE、COMMIT、ROLLBACK 等语句。
二、MySQL
1. 概念:Mysql是目前WEB应用最好的RDBMS(Relation Database Mangement System)关系数据库管理系统之一。
2. 特点
1. 支持多种操作系统,为多种编程语言提供API。
2. 支持多种存储引擎。
3. 提供 TCP/IP、ODBC 和 JDBC 等多种数据库连接途径。
3. 存储引擎
1. MyISAM:MySQL 5.0 之前的默认引擎,拥有较高的插入,查询速度,但不支持事务。
2. InnoDB:MySQL 5.5之后的默认引擎,事务型数据库的首选,支持ACID事务,支持行级锁定。
3. BDB:源自Berkeley DB,支持Commit 和Rollback 等其他事务特性。
4. Federated:将不同的 MySQL 服务器联合起来,逻辑上组成一个完整的数据库,常适合分布式应用。
5. Cluster/NDB:高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用。
4. 架构
1. Client:提供连接MySQL服务器功能的常用工具集。
2. Server:真正提供数据存储和数据处理功能的MySQL服务器进程。
3. mysqld:mysqld是一个多线程的守护进程,允许多个会话连接,端口监听连接。
4. MySQL memory allocation:动态内存空间
5. SESSION:为每个客户端连接分配一个会话,动态分配和回收。
6. Parser:用户认证和为每条SQL语句生成SQL_ID
7. Optimizer:用户权限检查。
4. 数据结构
5. 下载安装
1. 下载(安装版)
2. 安装
1. 接受
2. 自定义安装
3. 安装服务
接下来一路默认next,直到遇到设置密码
4. 设置密码(最重要)
接下来一路默认next,就可安装完成
5. 配置环境变量(安装bin目录路径)
6. 测试
1. 本地登录:mysql -uroot -p密码
2. 远程登录:mysql -hIP -P端口 -u用户民 -p密码
二:基本应用
一、数据定义语言(DDL)
1. 操作数据库
2. 操作数据表
二、数据操作语言(DML)
三、数据查询语言(DQL)
1. 单表
1. 条件查询
1. 条件判断
2. 逻辑判断
3. 范围查找
4. 模糊查找
2. 分组
3. 排序
4. 分页
2. 多表
1. 表与表之间的关系
1. 一对一:唯一外键对应/主键对应
2. 一对多:多方创建外键对应一方的主键
3. 多对多:创建中间表,至少有两个字段分别作为外键指向多对多双方的主键。
2. 连接查询
1. 方言:过滤的笛卡尔积
2. 自然连接:属性相同的元组对
3. 内连接:等值连接
4. 外连接:注意空值
2. 子查询:嵌套查询(select中包含select)
四、数据控制语言(DCL)
五、完整性约束
1. 作用:DBMS自动按照一定的约束条件对数据进行监测,防止不符合规范的数据进入数据库,以确保数据库中存储的数据正确、有效、相容。
2. 实体完整性
1. 概念:主键的值不能为空或部分为空的约束条件称为实体完整性。
2. 作用:表示每一行数据不重复。
3. 分类
1. 主键约束(PRIMARY KEY):指定该列的值可以唯一地标识该列记录且不能为空
2. 唯一约束(UNIQUE):指定某列或者几列组合不能重复。
3. 自动增长列(AUTO-INCREMENT):主键自增
3. 域完整性
1. 概念:域完整性指列的值域的完整性。
2. 作用:保证表中某些列不能输入无效的值。
3. 分类
1. 非空约束(NOT NULL):指定某列不能为空
2. 默认约束(DEFAULT):设置默认值
4. 参照完整性
1. 概念:外键约用来在两个表之间建立连接,一对多关系中一方的主键。
2. 作用:保持数据的一致性,完整性
六、视图
1. 概念:视图是从一个或多个表中导出的一个虚拟表,用户对视图的各种操作都不会影响源数据,保障数据库系统的安全。
2. 作用:简化用户对数据的操作,屏蔽真实表结构变化的影响,保护数据库数据安全。
3. 使用
三:高级应用
一、存储过程
1. 概述
1. 概念:存储过程(Stored Procedure)是经编译后存储在数据库中的一组特定功能的SQL语句集,用户通过存储过程的名字和给定参数来调用并执行它。
2. 组成:SQL语句和控制结构组成,是一个可编程的函数
2. 特点
1. 增强SQL语言的功能和灵活性:存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。
2. 标准组件式编程:存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。
3. 较快的执行速度:如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程(预编译)要比批处理的执行速度快很多。
4. 作为一种安全机制来充分利用:通过对执行某一存储过程的权限进行限制,避免非授权用户对数据的访问,保证了数据的安全。
3. 使用
1. 参数传递
2. 变量使用
3. 结构控制语句
1. 判断
2. 循环
二、函数
1. 内置函数
1. 数学函数
2. 字符串函数
3. 日期函数
2. 聚合函数
3. 自定义函数
三、触发器
1. 概念: 触发器是在表中数据发生更改时自动触发执行的特殊的存储过程。
2. 作用
1. 安全性:可以基于数据库的值使用户具有操作数据库的某种权利。
2. 审计:可以跟踪用户对数据库的操作。
3. 实现复杂的非标准的数据库相关完整性规则:触发器可以对数据库中相关的表进行连环更新。
4. 同步实时地复制表中的数据。
5. 自动计算数据值,如果数据的值达到了一定的要求,则进行特定的处理。
3. 弊端
1. 增加程序的复杂度:有些业务逻辑在代码中处理,有些业务逻辑用触发器处理,会使后期维护变得困难。
2. 如果需要变动整个数据集而数据集数据量又较大时,触发器效果会非常低。
3. 对于批量操作并不适合使用触发器,使用触发器实现的业务逻辑在出现问题时很难进行定位。
4. 使用
五、索引
1. 概念:索引是对数据库表中一个或多个列的值进行排序的结构,加快检索表中数据的方法。
2. 特点
1. 优点
1. 加快数据的查询速度。
2. 建立索引的列可以保证行的唯一性,生成唯一的rowId。
2. 缺点
1. 创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加。
2. 当对表中的数据进行更改时,索引也需要动态的维护,降低了数据的维护速度。
3. 创建索引和维护索引需要空间成本,每一条索引都要占据数据库的物理存储空间,数据量越大,占用空间也越大。
3. 数据结构(没深挖)
1. B+树性质
1. 索引字段要尽量的小
2. 索引的最左匹配特性
2. 聚集索引:按照每张表的主键构造一个B+树
4. 使用原则
1. 为经常需要排序、分组和联合操作的字段建立索引。
2. 对经常更新的和数据量小的表要避免对其进行过多的索引。
3. 限制索引的数目,尽量的扩展索引,不要新建索引。
5. 分类
1. 普通索引:加速查询
2. 唯一索引:加速查询和唯一约束(可含NULL)
3. 主键索引:加速查询和唯一非空约束
4. 全文索引:
5. 使用