MySQL——数据库基础

1、什么是数据库

或许我们会想,存储数据用文件不就行了,为什么还要数据库?

其实,文件保存数据也不是任何情况下都适用的

(1)首先文件的安全性就存疑

(2)而且文件仅仅是保存数据,实在是不利于数据的查询,更不要说整理了

(3)还有就是文件不利于存储海量数据

综上,文件还是有一些缺陷的,所以为了解决上述问题,就设计出了更加利于管理数据的东西,这就是数据库

2、主流数据库

SQL Sever:微软的产品,主要适用于中大型项目

Qracle:甲骨文产品,适合大型项目,并发一般来说不如MySQL

MySQL:当今世界上最受欢迎的开源数据库,属于甲骨文,并发性好,但是不适合做复杂的业务

PostgreSQL:加州伯克利大学分校计算机系开发的关系型数据库,可以免费使用

SQLite:一款轻量级的数据库,占用资源非常低,比较适合嵌入式产品

H2:一个用Java开发的数据库,本身是个类库,可以直接嵌入到应用项目中

3、连接数据库

回归正题,讲讲MySQL的使用

首先是连接数据库

输入

sql 复制代码
mysql -u root -p

然后输入你当初设置的密码,就可以成功连接,关于数据库的下载与安装会在另一篇文章中提到

4、服务器,数据库,表关系

所谓的安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般的开发人员只会针对每一个应用创建一个数据库。

为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。

数据库服务器数据库和表的关系如下图:

所以其实当我们在数据库客户端中输入创建库的指令后,服务器就会收到这个指令,然后在相关目录下帮我们创建数据库,创建表也是如此,表面上看来是用户创建了库,但其实是数据库服务器帮我们在磁盘上创建的,创建出的库其实是一个目录,创建的表则是一个二进制文件

eg:

这是一个在LInux系统下的MySQL数据库存储文件的地方

现在进入数据库,然后在数据库中创建一个库

当然,创建库的指令是

sql 复制代码
create database 库名;

查看数据库的指令

sql 复制代码
show databases;

在提一嘴:这里的指令写成大写和小写都是可以的,建议统一风格,要不然看起来不美观

框住的就是现在已经有的数据库分号不能少,原谅我上面两个语句都忘写分号了

然后再来看看右边有没有新增目录

可以看到,确实 新增了一个目录,那么试试创建一个表呢?

创建表的指令是

sql 复制代码
create table 表名(
    (表内的各种表头) 名字 类型,
    (表内的各种表头) 名字 类型,
    (表内的各种表头) 名字 类型,
    (表内的各种表头) 名字 类型
);

哦对了,创建表之前还有一件事,就是指定数据库,不然那么多数据库,我们到底要给哪个库创建表呢

使用库的语句

sql 复制代码
use 库名;

这样就是给Hello库里创建了一个student表,至于所谓的类型,后面会说

然后我们看看,Hello里究竟会不会新增什么文件

还真有,两个student文件,至于其他的就不深究了。

5、其他指令

上面我们也就大概了解了MySQL数据库究竟是怎么个事

现在继续看看其他指令

接着是插入指令

sql 复制代码
insert into (表头,表头,表头) values (参数,参数,参数);

这个只是插入的一种指令

现在我们给刚刚的数据库插入几条数据

然后查询一下表中插入的数据

sql 复制代码
select * from 表名;

看来咱们的张三同学学习有点不太好啊~

6、MySQL架构

MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。

对于一个MysQL服务来讲,它主要的功能有三层

1、连接池:在连接建立的过程中,帮助我们做链接管理和鉴别用户的合法身份

2、中间这一层主要是对客户端下达的SQL指令,进行语法分析,甚至可能会对语句进行一定的优化 ,然后再根据MySQL协议将语句下发给下一层

3、第三层则是一个个具体的存储引擎,收到上面传过来的语句后再将这语句进行解释,再去访问指定的文件或者指定的表结构,对数据进行增删查改,说白了他们就是执行这个语句的模块

但是为什么会有这么多引擎呢?

其实是因为数据也有不同的类型,有的是文档型的有的是二进制类型的,或者其他别的类型。针对这些不同的数据,数据库也会采用不同的方案,效率也会有所差别,所以MySQL就提供了各种各样的引擎,比如第一个引擎就适合存储大文件,第二个引擎就有丰富的索引,适合进行查找,在使用时会具体问题具体分析

而且这些存储引擎是插件式的,能即插即用。

7、SQL分类

DDL【data definition language】 数据定义语言,用来维护存储数据的结构

代表指令: create, drop, alter
DML【data manipulation language】 数据操纵语言,用来对数据进行操作

代表指令: insert,delete,update

DML中又单独分了一个DQL,数据查询语言,代表指令: select
DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务

代表指令: grant,revoke,commit

8、存储引擎

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

的实现方法。

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

查看存储引擎

sql 复制代码
show engines;

这是部分存储引擎的对比

相关推荐
张3蜂2 小时前
MongoDB BI Connector 详细介绍与使用指南(手动安装方式,CentOS 7 + MongoDB 5.0.5)
数据库·mongodb·centos
春时似衿里3 小时前
jmeter配置数据库连接步骤
数据库·jmeter
喵喵爱自由3 小时前
Ubuntu 24.04 Server 版系统安装及配置
数据库·ubuntu
hzzzzzo03 小时前
微服务保护全攻略:从雪崩到 Sentinel 实战
数据库·微服务·sentinel
J.Kuchiki3 小时前
【PostgreSQL内核学习:表达式】
数据库·postgresql
TDengine (老段)3 小时前
TDengine 特殊函数 MODE() 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
没学上了3 小时前
数据库的连接_qt
数据库
好名字更能让你们记住我3 小时前
MYSQL数据库初阶 之 MYSQL用户管理
linux·数据库·sql·mysql·adb·数据库开发·数据库架构
网硕互联的小客服3 小时前
Mysql服务无法启动,显示错误1067如何处理?
数据库·mysql