为什么要使用数据库呢?我们知道Linux是有文件系统的,为什么不使用文件系统呢?
因为OS只负责把我们交给它的数据存储起来,存到某个文件中,它并不负责管理数据的具体内容,也就是说,我们交给OS什么东西,它压根不管(就是说文件没有提供非常号的数据管理的能力)。
并且文件保存数据有如下的几个缺点:
1.文件的安全性问题,比如并发访问会导致数据不一致的问题
2.文件不利于数据查询和管理
3.文件不利于存储海量数据
4.文件在程序中控制不方便
这就导致我们想要获取文件中的一些具体内容时还需要编码把文件中的数据读出来并提取出我们想要的内容
这样就显得麻烦了很多,那么有没有一种服务可以具体的管理文件中的数据呢?就用到了我们这篇博客要说的数据库
我们在安装好MySQL并且启动之后,首先要看看服务有没有启动:
可以看到有mysqld这样的守护进程正在运行,其实d就表示daemon(守护进程),这个就是mysql的服务端
因为mysql是基于tcp的网络服务,我们还可以用下面的指令查查mysql
知道mysql已经运行了之后,要做的就是登录,可以用下面的指令进行登录
mysql -h 127.0.0.1 -P 3306 -u root -p
之后我们需要输入我们设置好的密码即可登录进去,输入quit;就可以退出来
其实上面的h就代表host,要选择哪台主机;P就是port,MySQL服务默认的端口号就是3306,这个是在配置文件(Ubuntu下配置文件默认在
/etc/mysql/mysql.conf.d/mysqld.cnf
路径下)中配好的;u就是user,表示以谁的身份登录,p就是password。
上面的大部分内容其实都是默认确定的,我们其实只用输入下面的内容即可
mysql -u root -p
下面我们来简单用几个MySQL语句:
查看当前都有哪些数据库
所以到底什么是数据库呢?可以说是第一段讲到的,一套用于解决上面问题的解决方案。为什么数据库可以高效的插入或查询数据肯定是离不开数据库具体是如何架构的,它采用了什么样的方式。
也可以说就是上面图片中展示的具体的一个个的数据库(在磁盘或内存中存储的特定结构组织的数据),这里说的数据库肯定是以文件的形式存在的,通常在下面的路径下
ls /var/lib/mysql
确实是有名叫d1 d2 d3的目录的
创建名为helloworld的数据库
使用数据库并且在helloworld数据库中创建名为country的表
向表中插入数据并且查看表中的内容
经过上面简单的演示,可以看出一个数据库服务可以有多个database(数据库),一个database可以有多个table(表)
上面就是一些最基本的操作,下面我们再来跟深入的了解一下什么是MySQL
首先mysql是数据库服务的客户端(只有有用户登录时才会有客户端进程),而上面查到的mysqld是数据库服务的服务端,所以mysql本质就是基于C(client)S(server)模式的一种提供数据存取的服务的网络服务
SQL(Structured Query Language,结构化查询语言),可以分为如下的三类:
1.DDL(Data Definition Language,数据定义语言),用来维护存储数据的结构
代表指令:create,drop,alter
2.DML(Data Manipulation Language,数据操纵语言),用来对数据进行操作
代表指令:insert,delete,updata
3.DCL(Data Control Language,数据控制语言),主要负责权限管理和事务
代表指令:grant,revoke,commit
MySQL的大体架构可以分为三层,第一层负责管理与用户的连接;第二层负责对用户输入的语句进行语法分析并优化,第三层负责让存储引擎去真正的管理数据
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法
MySQL的核心就是插件式存储引擎,支持多种存储引擎(就是存储引擎分成不同的几个,想用哪个直接引入)
可以用下面的指令查看都有什么存储引擎
show engines \G
其中用的最多的就是MyISAM和InnoDB