什么是数据库
文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
所以设计出了数据库,用来管理数据。
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
数据库的水平是衡量一个程序员水平的重要指标
主流数据库
SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
连接服务器
mysql -h 127.0.0.1 -P 3306 -u root -p
注意:
如果没有写 -h 127.0.0.1 默认是连接本地
如果没有写 -P 3306 默认是连接3306端口号
所以 ,MySQL服务其实是一个网络服务。
服务器,数据库,表关系
所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库。
为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
其实,在Linux下:
一个数据库表现为一个目录,而数据库中的表,则为该目录下的一个二进制文件
MySQL架构
MySQL是一个可移植的数据库,能在几乎所有的操作系统下运行。
MySQL 从整体来说还是 CS 架构,也就是由客户端(Client)和服务器端(Server)两大部分构成。
服务器端大体可以分为两部分:Server 层和存储引擎层。
Server 层主要包括连接器(Connector)、查询缓存(Cache)、分析器(Parser)、优化器(Optimizer)和执行器(Executor)等。
存储引擎(Storage Engine)层主要负责数据的存储和提取,它是直接和磁盘打交道的,以「插件」的形式存在,例如 InnoDB、MyISAM、Memory 等多种存储引擎。
链接: MySQL基本架构
从 MySQL 5.5.5 开始,InnoDB 成为了默认的存储引擎。MySQL 支持的所有存储引擎如下:
show engines;
SQL分类
DDL【data definition language】 数据定义语言,用来维护存储数据的结构,代表指令: create, drop, alter
DML【data manipulation language】 数据操纵语言,用来对数据进行操作,代表指令: insert,delete,update
DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务,代表指令: grant,revoke,commit。