【MySQL学习】认识MySQL数据库
目录
- 一、什么是数据库
- 二、主流数据库
- 三、MySQL数据库的基本使用
- 3.1 MySQL的安装
- 3.2 MySQL服务器管理
- 3.3 连接MySQL服务器
- 3.4 MySQL服务器,数据库与表之间的关系
- 3.5 使用案例
- 3.6 数据存储
- 四、MySQL架构
- 五、SQL分类
- 六、存储引擎
- 6.1 定义
- 6.2 查看存储引擎
- 6.3 存储引擎对比
一、什么是数据库
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库作为最重要的基础软件,是确保计算机系统稳定运行的基石。
数据库的概念实际包括两层意思:
- 数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。
- 数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。
虽然存储数据也可以使用文件,但是利用文件保存数据存在以下缺点:
- 文件的安全性问题
- 文件不利于数据的查询和管理
- 文件不利于存储海量数据
- 文件在程序中不方便控制
因此为了解决数据的存储和管理问题,设计出来更加利于管理数据的数据库,它能够有效的管理数据。同时对数据库的掌握水平也是衡量一个程序员水平的重要指标。
二、主流数据库
- SQL Server:Microsoft 公司推出的关系型数据库管理系统,具有使用方便可伸缩性好与相关软件集成程度高等优点。
- Oracle:甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
- MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务,对简单的SQL处理效果好。
- PostgreSQL:是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。
- SQLite:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
- H2:是一个Java编写的关系型数据库,它可以被嵌入Java应用程序中使用,或者作为一个单独的数据库服务器运行。
三、MySQL数据库的基本使用
3.1 MySQL的安装
- MySQL在Linux系统中的安装
3.2 MySQL服务器管理
启动服务器:
systemctl start mysqld
重启服务器:
systemctl restart mysqld
关闭服务器:
systemctl stop mysqld
设置服务器随系统启动:
systemctl enable mysqld
3.3 连接MySQL服务器
mysql -h 127.0.0.1 -P 3306 -u root -p
说明:
- -h:指定主机地址,如果没有则默认的本地地址
- -P:指定MySQL服务器的端口号,如果没有则默认为3306
- -u:指定登录MySQL的用户
- -p:指定通过密码登录
3.4 MySQL服务器,数据库与表之间的关系
- 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
- 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
MySQL服务器,数据库与表之间的关系图如下:
3.5 使用案例
- 创建数据库
create database db_test;
- 使用数据库
usedb_test;
- 创建数据库表
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;
3.6 数据存储
数据逻辑存储:
当使用select * from student
语句进行查询的时候,我们会发现数据好像是存放在一张表结构当中的,这其实就是数据的逻辑存储。
数据实际存储:
MySQL创建的数据库和各种表结构实际都是文件的形式存放到磁盘上的,通过MySQL的配置文件/etc/mu.cnf
就可以找到数据库中数据实际的存储路径:
可以发现,数据实际上是默认存放在/var/lib/mysql
目录下的,可以发现该目录中存放这许多数据库相关的文件:
其中db_test
就是刚才创建的数据库,实际在文件系统中也表现为一个目录。继续查看该目录:
其中db.opt
文件实际上是指明当前数据库的默认字符编码以及字符校验规则。
而student.frm
文件存放的是表结构数据,student.ibd
文件存放的是表的内容以及索引数据。它们都是以二进制的方式进行存放的,因此只有使用MySQL数据库才能查看到实际的内容。
表结构:
表内容:
四、MySQL架构
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
MySQL架构主要分为四层:
1.连接层
主要提供与MySQL服务器的连接的支持,支持Java,C,Python等连接MySQL服务器。
2.服务层
服务层是MySQL的核心,主要包括系统管理和控制工具、连接池、SQL接口、解析器、查询优化器、缓存六个部分。
- 系统管理和控制工具:例如备份恢复、安全管理、集群管理等。
- 连接池:负责存储和管理客户端与数据库的连接,一个线程负责管理一个连接。
- SQL接口:用于接收客户端发出的各种SQL命令,并且返回用户需要的查询结果,比如DML,DDL,存储过程,触发器,视图等。
- 解析器:负责将SQL请求转换成一个SQL解析树,然后根据MySQL的规则校验SQL是否合法。
- 查询优化器:当解析树通过解析器语法检查之后,将交由优化器转化成执行计划与存储引擎层交互。
- 缓存:缓存机制是由一系列小缓存组成,比如表缓存,记录缓存,权限缓存,引擎缓存等。如果查询缓存有命中的结果,则直接返回缓存的数据。
3.存储引擎层
存储引擎负责MySQL中的数据存储与提取,与底层系统文件进行交互。MySQL存储引擎是插件式的,可插拔。服务器中的查询存储引擎通过接口与存储引擎进行通信,接口屏蔽了不同存储引擎之间的差异,现在有多种存储引擎,各有各种特点,常见的是MyISAM和InnoDB。
4.系统文件层
系统文件层主要负责将数据和日志存储的文件系统上,并完成与存储引擎层的交互,是文件的物理存储层。主要包括日志文件,数据文件,配置文件,pid文件,socket文件等。
五、SQL分类
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL语句可分为以下三类:
- DDL(Data Definition Language)数据定义语言,用来维护存储数据的结构。比如create语句、drop语句、alter语句等。
- DML(Data Manipulation Language)数据操作语言,用来对数据进行操作。比如insert语句、delete语句、update语句等。
- DCL(Data Control Language)数据控制语言,主要负责权限管理和事务。比如grant语句、revoke语句、commit语句。
说明以下,DML中又单独分了一个DQL(Data Query Language)数据查询语言,比如select语句、from语句、where语句等。
六、存储引擎
6.1 定义
存储引擎就是数据库管理系统如何存储数据、如何为存储的数据建立索引、如何更新数据、如何查询数据等技术的实现方法,MySQL中的存储引擎是插件式的存储引擎,它可以支持多种存储引擎。
6.2 查看存储引擎
通过show engines
语句可以查看MySQL支持的存储引擎。比如:
其中MySQL底层默认使用的存储引擎是InnoDB
,该存储引擎支持事务、行级锁、外键等。
6.3 存储引擎对比
【MySQL学习】认识MySQL数据库相关推荐
- MySQL学习(二)——MySQL多表
MySQL学习(二)--MySQL多表 分页操作:使用limit(参数1,参数2)起始位置(参数1)=(第几页-1)*每页显示的条数(参数2)1.分类表 create table category(c ...
- Mysql学习(二)创建数据库和表
MySQL简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的 ...
- MySql 学习笔记-Mysql架构介绍与查询sql执行流程
最近花了99元大洋在极客时间 买了 MySQL 实战45讲.学习的同时留下点笔记.该内容仅仅是个人总结笔记,如有涉及版权还请告知. MySql 的简介 MySQL是一个关系型数据库管理系统,由瑞典My ...
- MySQL学习之MySQL引擎
MySQL 的几个重要特性 连通性 MySQL 是在假定的大部分应用都运行在TCP/IP协议的基础上而设计的. SQL 结构化查询语言 数据完整性 通过使用主键和外键约束,MySQL 支持引擎级的数据 ...
- mysql学习-初识mysql
一.数据库的作用和分类 1 数据库的作用 数据存储 2 数据库的优势 规范.查询速度快 3 数据库的分类 关系型数据库:oracle.mysql.mysql server 非关系型数据库:mongo ...
- mysql学习笔记---mysql的安装--rpm安装
安装mysql rpm安装(以mysql 5.7.29为例) 1,在mysql官方网站下载rpm包,将文件传输到linux里 [root@localhost ~]# ls anaconda-ks.cf ...
- Mysql学习笔记——mysql服务在win上安装与启动
1.先去下载服务包 https://dev.mysql.com/downloads/mysql/ 2.下载完成后,解压在D盘 3.添加一个配置文件,先创建文本,填写内容后改名:my.ini 内容为: ...
- mysql学习之旅-数据库自动备份-测试环境搭建
#终于知道什么叫不会走先会跑了,刚开始接触第一个case就是数据库自动备份,我可是都没安装过啊?! 发完牢骚开始干活 首先,因为业务已经上线,不能随便动,先搭建测试环境吧 规划一下 版本:mysq ...
- MySQL学习笔记——显示数据库信息
show privileges 显示可用的系统权限清单. View Code mysql> show privileges;+-------------------------+-------- ...
- mysql创建全外连接的视图_「MySql学习」Mysql学习系列之常用数据库查询语句
一.简单查询 简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的表或视图.以及搜索条件等.10.5pt;font-family:"A ...
最新文章
- 25Interpreter(解析器)模式
- 图像配准代码(包含matlab/opencv C++)
- 2019春第十周作业
- centos安装 TA-Lib
- zabbix JMX监控 tomcat
- Elasticsearch 监控和优化(持续)
- graphviz安装及使用
- 工作总结10:毕业这一年的收获
- Google Cloud Platform
- androidnbsp;软件apk
- 情感分析之PMI互信息
- 人世间最纯净的友情只存在于孩童时代
- 自动化构建工具Grunt、Gulp
- Pasqal首席技术官:模拟量子计算率先为工业带来量子优势
- 码云上最棒的Java管理后台系统
- 条码软件如何添加图片
- csi-provisioner源码分析
- linux--load解释
- aix 安装oracle smit install_latest,Oracle 9i在AIX5L系统上的详细安装过程
- Bugtags 与其它产品的区别
热门文章
- Win10《芒果TV》送7天免费会员,邀您抢先看萌心自制《妈妈是超人3》
- PAT1026 程序运行时间 (15 分)(C语言)
- Git Failed to connect to 127.0.0.1 port 1080: Connection refused 解决
- hadoop在windows下安装
- 05_锅炉压力案例_java实现
- excel一列求和_excel功能小技巧:自动求和的注意事项
- Android应用启动白屏处理
- 亚马逊云科技 BuildOn - 基于AmazonServerless构建零售创新应用感受心得
- netsarang官网访问不到解决方案
- UE4离线开发环境部署(UE4 + VS + VIVE + SteamVR)