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;

这是部分存储引擎的对比

相关推荐
恒悦sunsite12 小时前
Ubuntu之apt安装ClickHouse数据库
数据库·clickhouse·ubuntu·列式存储·8123
奥尔特星云大使13 小时前
MySQL 慢查询日志slow query log
android·数据库·mysql·adb·慢日志·slow query log
来自宇宙的曹先生13 小时前
MySQL 存储引擎 API
数据库·mysql
间彧13 小时前
MySQL Performance Schema详解与实战应用
数据库
间彧13 小时前
MySQL Exporter采集的关键指标有哪些,如何解读这些指标?
数据库
weixin_4462608513 小时前
Django - 让开发变得简单高效的Web框架
前端·数据库·django
mpHH13 小时前
babelfish for postgresql 分析--todo
数据库·postgresql
zizisuo14 小时前
解决在使用Lombok时maven install 找不到符号的问题
java·数据库·maven
老苏畅谈运维14 小时前
Oracle的connect by level在MySQL中的华丽变身
mysql·oracle
程序边界15 小时前
国产之光!金仓数据库KingbaseES Oracle兼容性深度体验大赏
数据库·oracle