1.1 RDBMS 和 非 RDBMS
关系型数据库绝对是 DBMS 的主流,其中使用最多的 DBMS 分别是 Oracle、 MySQL 和 SQL Server。
这些都是关系型数据库(RDBMS)。
1.1.1 关系型数据库(RDBMS)
这种类型的数据库是 最古老
的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的 二元关系 (即二维表格形式)。
关系型数据库绝对是 DBMS 的主流,其中使用最多的 DBMS 分别是 Oracle、 MySQL 和 SQL Server。
这些都是关系型数据库(RDBMS)。
这种类型的数据库是 最古老
的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的 二元关系 (即二维表格形式)。
SQL(Structured Query Language,结构化查询语言)是使用关系模型的数据库应用语言, 与数据直 接打交道 ,由 IBM 上世纪70年代开发出来。后由美国国家标准局(ANSI)开始着手制定SQL标准, 先后有 SQL-86 , SQL-89 , SQL-92 , SQL-99
等标准。
DDL(Data Definition Languages、数据定义语言)
创建、删除、修改数据库和数据表的结构
。CREATE 、 DROP 、 ALTER、TRUNCATE
等。DML(Data Manipulation Language、数据操作语言)
INSERT 、 DELETE 、 UPDATE 、 SELECT
等。DML 是SQL中最基础的,也是最为重要的
DCL(Data Control Language、数据控制语言)
GRANT 、 REVOKE 、 COMMIT 、 ROLLBACK 、 SAVEPOINT
等。函数的分类
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。
SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者 需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集 合)进行比较。
子查询其实就相当于变成语言中的嵌套FOR循环
一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。
数据库名、表名不得超过30个字符,变量名限制为29个
必须只能包含 A–Z, a–z, 0–9, _共63个字符
数据库名、表名、字段名等对象名中间不要包含空格
同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使 用`(着重号)引起来
常见数据类型的属性,如下:
整数类型一共有 5 种,包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT。
它们的区别如下表所示
M
: 表示显示宽度,M的取值范围是(0, 255)。例如,int(5):当数据宽度小于5位的时候在数字前面需要用 字符填满宽度。该项功能需要配合“ ZEROFILL ”使用,表示用“0”填满宽度,否则指定显示宽度无效。
为什么需要约束?
数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中 存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。
为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。从以下四个方面
考虑:
首先 MySQL 是典型的 C/s 架构,即 client/Server 架构,服务器端程序使用的 mysqld
不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(SOL语句)段文本,服务器进程处理后在向客户端进程发送一段文本(处理结果),
系统(客户端)访问 MySQL 服务器前,做的第一件事就是建立TCP 连接
, 经过三次握手建立连接成功后, MySQL 服务器对 TCP 传输过来的账号密码做身份认证、权限获取。
索引是存储引擎用于快速找到数据记录的一种数据结构
,就好比一本教课书的目录部分,通过目录中找到对应文章的页码,便可快速定位到需要的文章。MySQL中也是一样的道理,进行数据查找时,首先查看查询条件是否命中某条索引,符合则 通过索引査找
相关数据,如果不符合则需要 全表扫描
,即需要一条一条地查找记录,直到找到与条件符合的记录。
使用索引的目的就是为了减少磁盘IO的次数,加快查询效率
InnoDB 将数据划分为若干个页,InnoDB中页的大小默认为 16KB
以 页
作为磁盘和内存之间交豆的 基本单位
,也就是一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB内容刷新到磁盘中。也就是说,在数据库中,不论读一行,还是读多行,都是将这些行所在的页进行加载。也就是说,数据库管理存储空间的基本单位是页(Page),数据库 I/0 操作的最小单位是页。一个页中可以存储多个行记录,