数据库基础

什么是数据库

数据的管理和存储一般都有相关的函数或者类,比如C++中就有文件流类,而既然数据的保存有文件存在了,那为什么还有数据库存在呢?

这是因为文件保存数据有以下的缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于海量数据存储
  • 文件在程序控制中不方便

因此,大佬们就研究了数据库,用来对数据进行处理,更加有效的管理数据库。

当程序员对数据有各种需求时,通过mysql客户端向mysqld服务器端发送请求,mysqld会自行在磁盘中找到文件并进行相应处理,然后返回数据给mysql,十分方便。 

数据库存储介质:磁盘、内存

见一见数据库

首先我们需要登录数据库。

通过 mysql -h 127.0.0.1 -P 3306 -u root -p 登录数据库

  • -h:表示数据库服务端的ip地址,mysql也是一种网络服务,不过这里我是本机测试,所以ip地址是本地环回。
  • -P:表示mysqld采用的端口号,一般默认是 3306,也可以在 /etc/my.cnf 中修改
  • -u:表示采用的是什么用户登录,这里是 root 用户
  • -p:表示需要输入密码

 登录后才能使用mysql服务。

在 /etc/my.cnf 文件中,我们能够查看到mysql的环境配置,我们可以看到,默认mysql的存储目录是在 /var/lib/mysql 中的,我们进入其中。

进入该目录下,我们查看后发现里面有各种文件,我们先不管,然后我们创建一个数据库。

                                         create database helloworld;

 然后再查看一下/var/lib/mysql 目录,我们发现,该目录下多出了一个 helloworld 目录。

这也说明了,数据库实际上就是一个目录,或者说一个文件

然后我们在该数据库中创建一个表。

通过 use helloworld 表示我要使用 helloworld 数据库

然后再通过 create table student ( id int, name varchar(32),gender varchar(2)); 来创建一个student表。

然后我们进入helloworld 表内,发现创建了一个 student.ibd 文件。之后我们试着向表中插入数据

通过 insert into student (id,name,gender) values (1,'张三','男'); 向student表插入数据,然后通过 select * from student; 来查看插入的数据。

  

通过见一见数据库,我们能够了解到,实际上数据库也是一种文件。只不过我们需要通过mysql客户端来向mysqld服务端发送请求,然后服务端从磁盘上获取数据罢了。 

mysql/mysqld/数据库以及表的关系

client表示mysql客户端,MySQL表示mysqld服务端,而后面的DB以及表统称数据库。 

mysql架构

  • mysql一共可以分为三层,最上层是mysql客户端,也就是我们在linux上用来访问数据库的工具。
  • 然后就是mysql服务器端,也就是mysqld,由于mysql实际上也是一个网络服务,因此需要管理很多接口,因此服务端含有连接池,用来管理链接,或者鉴权,或者安全访问都是在这一层完成。
  • 其次就是各种各样的接口,解析器和优化器,这一层的工作类似编译器,会对你的各种操作进行语法分析或者优化,然后再发送给下一层。
  • 最后的存储引擎部分就是根据收到的语句进行对应的动作,比如增删查改,而不同的存储引擎针对不同的文件类型具有不同的优势,用户可以根据需求来使用引擎。
  • 最底下一层就是文件系统,引擎会对文件进行各种操作,比如读取,删除,增加等。

SQL语句分类

  • DDL(数据定义语言):用来维护存储数据的结构,比如create,drop,alter之类的。
  • DML(数据操纵语言):用来对数据进行操作的语言,比如insert,delete,update之类的,
    • DQL(数据查询语言):用来对数据进行查询的原因,比如select。
  • DCL(数据控制语言):负责权限管理和事务管理,比如grant,revoke,commit。

mysql存储引擎

存储引擎是:数据库管理系统如何存储数据,如何为存储的数据建立索引和如何更新,查询数据等技术的实现方法。

mysql的核心就插件式的存储引擎,支持多种存储引擎。

可以通过 show engines; 指令查看存储引擎。 

虽然引擎很多,但是实际上使用的就是 innodb 引擎,如果有特殊要求再自己选择引擎。

总结

本次我们了解了mysql实际上是一种网络服务,通过mysql客户端像mysqld发送请求,然后mysqld从数据库中获取数据,明白了数据库实际上就是一种目录,表实际上是一种文件,只不过需要通过mysql登录访问并结合mysqld的引擎才能访问,也了解了mysql的架构,sql的语句分类和存储引擎是什么。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值