目录
一、什么是数据库?
二、基本使用方法
(1)启动服务器进程
(2)连接服务器
(3)基本sql语句
三、MySQL架构
四、SQL语句分类
五、存储引擎是什么
一、什么是数据库?
数据库是指在磁盘和内存中存储特定结构组织的数据。数据库通常用于存储于某个系统、组织或应用相关的信息。和文件系统存储管理数据的方式不同,数据库以结构化的方式进行存储,比如按行列式(类似于表格)等形式。
但是你可能有疑问了,我们已经有了文件系统,为什么还需要创造一个数据库出来呢?有以下几点原因:
(1)文件系统不够安全,任何人拿到磁盘就能知道里面存放了什么数据,而数据库有用户的概念,对登陆者做了验证。
(2)数据库是一个运行在文件系统之上的应用程序,对于文件系统的操作进行了优化和封装,便于程序员管理、查询数据。
数据库按照存储类型可以分为内存型和磁盘型,我们使用的MySQL是一种磁盘型的,你可以把他理解成操作系统自带的文件系统的升级版。
主流的数据库有哪些呢?
二、基本使用方法
数据库的安装建议大家自己在网络上搜索一下,不同版本的操作系统可能兼容的数据库不一一。
(1)启动服务器进程
当我们安装好了数据库之后,一般都会自动启动MySQL服务器,即mysqld。在linux中我们可以使用这样的命令查看该进程有没有运行起来。
如果没有则可以使用systemctl start/stop mysql来启动或者关闭数据库进程。
此时我们的mysql进程已经在运行了,我们还可以通过下面的操作将该进程设置为开机自动启动,当然由于我们使用的是云服务器,他实际上是不会关机的,所有设不设置都没啥区别,如果你是虚拟机的话可以设置一下。
#开启开机⾃启动
systemctl enable mysqld
systemctl daemon-reload
(2)连接服务器
一般连接服务器是需要使用用户名和密码的形式的,由于mysql是一个网络客户端服务器的架构,所以还需要指明数据库服务器的ip地址和端口号。
mysql -h IP地址 -P 端口号 -u 用户名 -p
不过我们这里服务器和客户端在一台主机上,所以可以不用明确指出IP地址和端口号,默认就是本地环回,端口号是3306,这两个属性都是在其配置文件里面写好的,当然你也可以修改端口号来提高自己数据库的安全性,只不过是因为广泛都使用3306,所以比较知名。
mysql -u root -p
自此,你就连接上了一个服务器,可以开始输入sql指令啦。
(3)基本sql语句
创建数据库
create database helloworld;
我们说了,mysql本质就是对文件系统进行操作的封装管理,所以他仍然是将数据存储在文件中。在Ubuntu系统下,他的存储路径在/var/lib/mysql,这个是在配置文件中明确写到的。
使用数据库
use helloworld;
因为数据库中有多个database,所以在查看某个表的时候要先进入该数据库,他就像是Linux中的目录。
创建数据库表
create table student(id int,name varchar(32),gender varchar(2)
);
表中插入数据
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
查询表中的数据
select * from student;
三、MySQL架构
所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统的应用程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
MySQL的架构从上到下一般可以分为4个层次:
- 连接层:客户端通过连接层与 MySQL 服务器建立连接
- 服务层:解析SQL语句,优化查询,生成执行计划
- 存储引擎层:查询执行计划通过存储引擎 API 与相应的存储引擎交互,读取或写入数据
- 存储层:数据最终存储在文件系统中
这种分层的架构方式通常就是我们所说的解耦,能让各个模块的功能独立,方便日后优化或者增加功能。
四、SQL语句分类
DDL(data definition language) 数据定义语言,用来维护存储数据的结构代表指令: create, drop, alter
DML(data manipulation language) 数据操纵语言,用来对数据进行操作代表指令: insert,delete,update
DML中又单独分了一个DQL,数据查询语言,代表指令: selectDCL(Data Control Language) 数据控制语言,主要负责权限管理和事务代表指令: grant,revoke,commit
五、存储引擎是什么
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。我们输入的sql语句其实就是交给该搜索引擎来执行的。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。可以针对不同的应用场景,由程序员选取该使用什么搜索引擎,使得增删查改的效率更高。最常用的就是InnoDB,一般情况下他的效率还比较不错,而且提供了事务的方法。
在Linux中,可以使用下面的命令来查看当前数据库支持什么引擎。
show engines;