一、数据库概念
数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内、有组织的、可共享的、统一管理的大量数据的集合
虽然单纯的使用文件也可以存储数据,但会存在如下缺点:
安全性问题:数据误操作后无法进行回滚
不利于数据的查询和管理:没有将存储的数据以某种数据结构组织起来
控制不方便:数据的控制需要用户自行完成
不利于存储海量数据:数据量越大用户操控数据的成本越高
为了解决上述问题,于是专家们设计出了更利于管理数据的数据库
客户端 && 服务器
数据库管理系统分为服务器和客户端,以MySQL为例,使用MySQL时会先通过 mysql命令 连接MySQL服务器
mysql命令就是MySQL客户端,而MySQL服务器可以通过 ps命令 进行查看
查看到的mysqld就是MySQL服务器,使用mysql命令实际就是在连接mysqld服务。通过netstat命令可以看到,MySQL服务器底层采用的是TCP6协议,目前服务器处于监听状态
MySQL本质是一套网络服务,使用mysql命令连接MySQL服务器时,本质就是MySQL客户端在向MySQL服务器发起连接请求,连接建立成功后MySQL客户端就会将用户输入的SQL语句发送给MySQL服务器,之后MySQL服务器就会根据SQL语句进行对应的操作
数据库存储介质
磁盘,如MySQL就是一种磁盘数据库
内存,如redis就是一种内存数据库
说明一下:
数据库按存储介质可以分为磁盘数据库和内存数据库,其中内存数据库又称为主存数据库(Main Memory Database)
磁盘数据库的数据主要存储在磁盘上,因此磁盘数据库在数据的持久化保存上有明显优势。但磁盘数据库为了提高数据的存储效率,也有对应的缓存机制,因此在某一个时刻之内,不一定所有数据都会落盘
内存数据库的数据主要存储在内存中,与磁盘数据库相比,内存数据库可以大大提高读取速度,减少数据库的访问时间。但内存数据库并非完全不使用磁盘,数据库的启动信息、初始数据等还是需要存储在磁盘上的,只是数据主要在内存中进行存储和运算
由于内存数据库的数据存储在内存中,数据库主机掉电后数据就会丢失,因此在数据库服务关闭前通常需要把内存中的数据转储到磁盘上,甚至在内存数据库运行期间,一些数据也会持久化到磁盘存储
二、主流数据库
SQL Server:微软的产品,.Net程序员的最爱,适合中大型项目
MySQL:甲骨文产品,世界上最受欢迎的数据库,并发性好,但不适合做复杂的业务。主要用在电商、SNS、论坛,对简单SQL处理效果好
Oracle:甲骨文产品,适合大型项目和复杂的业务逻辑,但并发一般来说不如MySQL
PostgreSql:加州大学伯利克分校计算机系开发的关系型数据库,无论私用,商用,还是学术研究,都可以免费使用、修改和分发
SQLite:一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用,占用资源非常低,在嵌入式设备中,可能只需要几百K的内存即可
H2:用Java开发的嵌入式数据库,本身只是一个类库,可以直接嵌入到应用项目中
三、基本使用
3.1 连接服务器
-h: 表示要连接的MySQL服务器所在的主机,127.0.0.1表示本主机,连接本机时该选项可忽略
-P: 表示要连接的MySQL服务器所对应的端口号,一般默认是3306
-u: 表示用哪一个用户连接MySQL服务器,root表示超级用户
-p: 表示该用户对应的密码,密码可直接跟在-p后,也可回车后输入
连接到MySQL服务器后,就可输入各种SQL语句让服务器执行,当要退出mysql时输入 quit 、exit或 \q 即可
3.2 服务器管理
停止服务器
通过 systemctl stop mysqld 命令或 service mysqld stop 命令可以停止MySQL服务器
启动服务器
通过 systemctl start mysqld 命令或 service mysqld start 命令可以启动MySQL服务器
重启服务器
通过 systemctl restart mysqld 命令或 service mysqld restart 命令可以重启MySQL服务器