MySQL - 第1节 - MySQL数据库基础

这篇具有很好参考价值的文章主要介绍了MySQL - 第1节 - MySQL数据库基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.数据库的概念

2.主流数据库

3.基本使用

3.1.连接服务器

3.2.服务器管理

3.3.数据库服务器,数据库,表关系

3.4.使用案例

3.4.1.数据存储路径

3.4.2.创建/删除数据库

3.4.3.使用数据库

3.4.4.创建数据库表

3.4.5.表中插入数据

3.4.6.查询表中的数据

3.5.数据逻辑存储

4.MySQL架构

5.SQL分类

6.存储引擎

6.1.存储引擎概念

6.2.查看存储引擎

6.3.存储引擎对比


1.数据库的概念

数据库的狭义概念:

• 我们将数据库客户端mysql、数据库服务端mysqld、数据库数据存储目录下的所有数据(默认目录为/var/lib/mysql)合起来称为数据库。

• 也就是说数据库=mysql+mysqld+数据。

数据库的广义概念:

提供较为便捷的数据存取服务的软件集合解决方案称为数据库。

数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

虽然单纯的使用文件也可以存储数据,但会存在如下缺点:

• 安全性问题:数据误操作后无法进行回滚。
• 不利于数据的查询和管理:没有将存储的数据以某种数据结构组织起来。
• 控制不方便:数据的控制需要用户自己来完成。
• 不利于存储海量数据:数据量越大用户操控数据的成本越高。
为了解决上述问题,于是专家们设计出了更利于管理数据的数据库。

注:如果用文件存储,文件内数据内容的管理工作需要程序员自己做,数据库的本质是程序员和文件之间的一层软件层,对文件的内容提供基本的内容操作,不用程序员手动的进行数据管理,帮助程序员进行数据管理。

客户端 VS 服务器:

数据库是分为数据库服务器和数据库客户端的,以MySQL数据库为例,我们使用MySQL数据库时会先通过mysql -uroot -p命令连接MySQL服务器。如下:

MySQL - 第1节 - MySQL数据库基础

这里我们使用的mysql命令就是MySQL的客户端,而MySQL服务器可以通过ps -axj | head -1 && ps -axj | grep mysqled | grep -v grep命令进行查看。如下:

MySQL - 第1节 - MySQL数据库基础

这里查看到的mysqld就是MySQL的服务器,我们使用mysql命令实际就是在连接mysqld服务。通过 netstat -ltp 命令可以看到,MySQL服务器底层采用的是TCP6协议,目前服务器处于监听状态。如下:

MySQL - 第1节 - MySQL数据库基础

也就是说,MySQL服务器本质是一个网络服务器,我们使用mysql命令连接MySQL服务器时,本质就是MySQL客户端在向MySQL服务器发起连接请求,连接建立成功后MySQL客户端就会将用户输入的SQL语句发送给MySQL服务器,之后MySQL服务器就会根据SQL语句对数据进行对应的操作。

数据库的存储介质:

• 磁盘,比如MySQL就是一种磁盘数据库。

• 内存,比如redis就是一种内存数据库。

注:

1.数据库按存储介质可以分为磁盘数据库和内存数据库,其中内存数据库又称为主存数据库(Main Memory Database)。
2.磁盘数据库的数据主要存储在磁盘上,因此磁盘数据库在数据的持久化保存上有明显优势。但磁盘数据库为了提高数据的存储效率,也有自己对应的缓存机制,因此在某一个时刻之内,不一定所有数据都会被刷新到磁盘上。
3.内存数据库的数据主要存储在内存中,与磁盘数据库相比,内存数据库可以大大提高读取速度,减少数据库的访问时间。但内存数据库并非完全不使用磁盘,数据库的启动信息、初始数据等还是需要存储在磁盘上的,只是数据主要在内存中进行存储和运算。
4.由于内存数据库的数据存储在内存中,数据库主机掉电后数据就会丢失,因此在数据库服务关闭前通常需要把内存中的数据转储到磁盘上,甚至在内存数据库运行期间,一些数据也会持久化到磁盘存储。


2.主流数据库

下面列举了几个主流的数据库:

• SQL Server:微软的产品,.Net程序员的最爱,适合中大型项目。
• MySQL:甲骨文产品,世界上最受欢迎的数据库,并发性好,但不适合做复杂的业务。主要用在电商、SNS、论坛,对简单的SQL处理效果好。
• Oracle:甲骨文产品,适合大型项目和复杂的业务逻辑,但并发一般来说不如MySQL。
• PostgreSql:加州大学伯利克分校计算机系开发的关系型数据库,无论私用,商用,还是学术研究,都可以免费使用、修改和分发。
• SQLite:一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常低,在嵌入式设备中,可能只需要几百K的内存就够了。
• H2:是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。


3.基本使用

3.1.连接服务器

连接MySQL服务器的方式如下:

MySQL - 第1节 - MySQL数据库基础

解释说明:

• -h: 表示你要连接的MySQL服务器所在的主机,127.0.0.1表示本主机。
• -P: 表示你要连接的MySQL服务器所对应的端口号,一般默认是3306。
• -u: 表示用哪一个用户连接MySQL服务器,root表示超级用户。
• -p: 表示该用户对应的密码,密码可以直接跟在-p后面,也可以回车后输入。
此外,如果要连接的是本地的MySQL服务器,那么连接时只需要指明用户名和用户密码即可。如下:

MySQL - 第1节 - MySQL数据库基础

连接到MySQL服务器后,就可以输入各种SQL语句让服务器执行了,当要退出mysql时直接输入quit或exit或\q即可。如下:

MySQL - 第1节 - MySQL数据库基础

注:mysql端口号默认3306,如果想修改mysql的端口号,可以vim /etc/my.cnf打开配置文件,在mysqld部分增加port=端口号的选项,如下图所示。此时重新启动mysql,然后使用netstat -nltp命令可以看到mysql的端口号改为3333,如下图二所示。

MySQL - 第1节 - MySQL数据库基础MySQL - 第1节 - MySQL数据库基础

3.2.服务器管理

停止服务器:

通过systemctl stop mysqld命令或service mysqld stop命令可以停止MySQL服务器。比如:

MySQL - 第1节 - MySQL数据库基础

启动服务器:

通过systemctl start mysqld命令或service mysqld start命令可以启动MySQL服务器。比如:

MySQL - 第1节 - MySQL数据库基础

重启服务器:

通过systemctl restart mysqld命令或service mysqld restart命令可以重启MySQL服务器。比如:

MySQL - 第1节 - MySQL数据库基础

3.3.数据库服务器,数据库,表关系

数据库服务器,数据库,表关系:
• 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
• 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:

MySQL - 第1节 - MySQL数据库基础

注:

1.图中的Client对应的就是mysql命令,MySQL对应的就是mysqld服务。

2.DB(database)表示的是mysqld管理的多个数据库,而每一个DB下会包含多张表。

3.4.使用案例

3.4.1.数据存储路径

数据存储路径:

通过MySQL创建的数据库和各种表结构,最终会以文件的形式存储下来,通过查看MySQL的配置文件中的datadir可以得知数据文件的存储路径。

默认MySQL配置文件的绝对路径为/etc/my.cnf,配置文件中datadir对应的值为/var/lib/mysql。如下:

MySQL - 第1节 - MySQL数据库基础

将来MySQL创建的数据库文件都会存储在该目录下,可以看到该目录下有很多MySQL相关的数据文件。如下:

MySQL - 第1节 - MySQL数据库基础

3.4.2.创建/删除数据库

创建/删除数据库:

连接MySQL服务器后,通过 create database helloworld; 语句创建一个名为helloworld的数据库。比如:

mysql的命令行写入必须以分号结尾。

MySQL - 第1节 - MySQL数据库基础

这时/var/lib/mysql目录下,就会多出一个名为helloworld的目录。如下:

MySQL - 第1节 - MySQL数据库基础

目前helloworld目录下只有一个名为的db.opt的文件,该文件中指明了当前数据库的默认字符编码和字符校验规则。如下:

MySQL - 第1节 - MySQL数据库基础

因此我们创建数据库时,本质就是在MySQL的数据存储路径下新建了一个目录,而当我们使用 drop database helloworld; 命令将这个数据库删除后,这个目录其实也就不存在了。比如:

MySQL - 第1节 - MySQL数据库基础此时在MySQL的数据存储路径下的helloworld目录也就不存在了,因此删除数据库本质就是删除数据存储路径下对应的目录。 

MySQL - 第1节 - MySQL数据库基础

注:

1.这里创建和删除数据库是在mysql客户端进行创建和删除,创建和删除数据库的本质是mysql客户端将操作语句通过网络或本地环回发送给mysqld服务端,mysqld服务端进程收到指令后进行系统调用创建或删除某个目录。

2.在mysql命令行下想要清屏,可以使用 system clear 命令调用系统命令中的clear清屏。

3.4.3.使用数据库

使用数据库:

使用数据库之前,可以先通过 show databases; 语句查看当前都有哪些数据库,然后再通过 use helloworld; 语句使用指定的数据库。比如:

MySQL - 第1节 - MySQL数据库基础

使用数据库可以理解成,就是使用cd命令进入到该数据库对应的目录当中。 

使用命令可以看到当前在数据库中所处的目录,比如:

MySQL - 第1节 - MySQL数据库基础

3.4.4.创建数据库表

创建数据库表:

这里我们通过create语句创建一个简单的student表。比如:

MySQL - 第1节 - MySQL数据库基础

通过 show tables 命令可以查看当前数据库中的表,比如:

MySQL - 第1节 - MySQL数据库基础

通过 show create table student \G 命令可以查看创建的student表结构。比如:

MySQL - 第1节 - MySQL数据库基础

由于student表采用的存储引擎是InnoDB,因此在MySQL的数据存储路径下的helloworld目录下,就会多出两个文件,分别是student.frm和student.ibd。如下: 

MySQL - 第1节 - MySQL数据库基础

其中student.frm是表结构文件,student.ibd是表数据和索引的文件。

如果说创建数据库的本质是在数据存储路径下新建一个目录的话,那么创建表本质实际就是在特定的数据库目录下新建若干个文件(InnoDB存储引擎对应的是两个,MyISAM存储引擎对应的是三个),因此在创建表之前一定要先选择一个数据库。 

3.4.5.表中插入数据

通过desc语句可以查看对应的表结构。比如:

MySQL - 第1节 - MySQL数据库基础

通过insert语句可以向表中插入数据。比如:

MySQL - 第1节 - MySQL数据库基础

3.4.6.查询表中的数据

通过select语句可以查看表中的数据。比如:

MySQL - 第1节 - MySQL数据库基础

3.5.数据逻辑存储

表中的数据是以二维表格的形式进行呈现的,包括行和列。如下:

MySQL - 第1节 - MySQL数据库基础

其中每一行我们称之为是一条记录,而每一列都代表一个属性(属性列)。 


4.MySQL架构

MySQL架构:

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

MySQL的架构设计如下:

MySQL - 第1节 - MySQL数据库基础

MySQL架构主要可分为如下四层:

• 连接层:主要完成一些类似连接处理,授权认证及相关的安全方案。
• 服务层:在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断、SQL接口、SQL解析、SQL分析优化、缓存查询的处理以及部分内置函数执行等。各个存储引擎提供的功能都集中在这一层,如存储过程、触发器、试图等。
• 引擎层:由多种可拔插的存储引擎共同组成,真正负责MySQL中数据的存储和提取,每个存储引擎都有自己的优点和缺陷,服务层是通过存储引擎API来与它们交互的。
• 存储层:将数据存储在裸设备的文件系统之上,完成存储引擎的交互。

MySQL客户端:

MySQL服务器会收到MySQL客户端发来的SQL语句,并根据SQL语句执行对应的操作。

• 这里的MySQL客户端不仅仅指的是连接MySQL时使用的mysql命令,MySQL客户端还包括语言接口客户端。
• MySQL给各种语言提供的用于访问数据库的接口,用户通过调用这些接口也可以向MySQL服务器发送SQL语句。
mysql命令本质是一个可执行程序,通过file命令可以看到该可执行程序是采用动态链接的方式生成的,通过ldd命令可以看到该可执行程序依赖的C/C++库文件。如下:

MySQL - 第1节 - MySQL数据库基础

也就是说,mysql命令本身就是C/C++编写的,因此在编写mysql程序时,一定需要调用MySQL提供给C/C++的语言接口客户端。当然,MySQL不仅仅提供了C/C++对应的语言接口,像Python、Java、PHP等都有对应的MySQL接口。


5.SQL分类

SQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

SQL语句可分为如下三类:

• DDL(Data Definition Language)数据定义语言,用来维护存储数据的结构。比如create语句、drop语句、alter语句等。
• DML(Data Manipulation Language)数据操作语言,用来对数据进行操作。比如insert语句、delete语句、update语句等。
• DCL(Data Control Language)数据控制语言,主要负责权限管理和事务。比如grant语句、revoke语句、commit语句。
注:

1.DML中又单独分了一个DQL(Data Query Language)数据查询语言,比如select语句、from语句、where语句等。

2.数据定义语言DDL对数据库和表结构更多的是属性操作,数据操作语言DML对数据库和表结构更多的是数据内容操作。

3.数据定义语言DDL和数据操作语言DML完成了数据库的基本功能,数据控制语言DCL完成的是保证数据库的系统安全和账户管理工作。


6.存储引擎

6.1.存储引擎概念

存储引擎就是数据库管理系统如何存储数据、如何为存储的数据建立索引、如何更新数据、如何查询数据等技术的实现方法,MySQL中的存储引擎是插件式的存储引擎,它可以支持多种存储引擎。

6.2.查看存储引擎

通过 show engines; 命令可以查看MySQL支持的存储引擎。比如:

MySQL - 第1节 - MySQL数据库基础

其中MySQL底层默认使用的存储引擎是InnoDB,该存储引擎支持事务、行级锁、外键等。 

注:从上图可以看出InnoDB是默认DEFAULT支持的搜索引擎,这是因为前面我们在/etc/my.cnf配置文件中设置了默认搜索引擎为InnoDB,如下图所示。

MySQL - 第1节 - MySQL数据库基础

6.3.存储引擎对比

各个存储引擎对比如下:

MySQL - 第1节 - MySQL数据库基础

建议记忆:InnoDB存储引擎是支持事务的,而MyISAM存储引擎是不支持的。文章来源地址https://www.toymoban.com/news/detail-483399.html

到了这里,关于MySQL - 第1节 - MySQL数据库基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【MySQL】:探秘主流关系型数据库管理系统及SQL语言

    【MySQL】:探秘主流关系型数据库管理系统及SQL语言

    🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 在现代信息技术领域中,数据库管理系统扮演着至关重要的角色。本文将介绍数据库、数据库管理系统和SQL等概念,并深入探讨主流的关系型数据库管理系统以及关系型数据库的数据模

    2024年01月20日
    浏览(19)
  • 三个主流数据库(Oracle、MySQL和SQL Server)的“单表造数

    三个主流数据库(Oracle、MySQL和SQL Server)的“单表造数

    预设游标10000(必要时)  模拟新增10万条数据    1.1 oracle一条sql数据生成100万条数据   创建测试表 创建测试表 模拟新增3万条数据 开发过程中经常需要测试 SQL 在大量数据集时候的执行效率,这就需要我们在表中插入大量的测试数据,下面介绍如何使用存储过程插入大量的

    2024年02月14日
    浏览(12)
  • mysql数据库数据如何迁移目录

    mysql数据库数据如何迁移目录

    默认位置 C:ProgramDataMySQLMySQL Server 8.0 步骤2中Data文件夹就是mysql存放数据的位置 这里举例移动到E盘下 原来my.ini文件不要修改文件位置,如果修改需要另行学习

    2024年02月07日
    浏览(45)
  • Mysql实现Linux下数据库目录迁移

    Centos中迁移Mysql的数据目录,一般是硬盘满了不够用,然后挂载了新的数据盘,那么就可以将Mysql数据迁移到新的数据盘。 可以查看pid后kill停止,可以进入目录stop,可以变量停止 复制当前目录到新目录 更改mysql数据存储路径

    2024年02月12日
    浏览(14)
  • 头歌MySQL数据库实训答案 有目录

    头歌MySQL数据库答案 特别感谢黄副班、小青提供代码,有问题联系公众号【学思则安】留言更正 其他作业链接 数据库1-MySQL数据定义与操作实战 MySQL数据库 - 初识MySQL MySQL数据库 - 数据库和表的基本操作(一) MySQL数据库 - 数据库和表的基本操作(二) MySQL数据库 - 单表查询

    2024年04月28日
    浏览(169)
  • 数据库基础概念

    数据库基础概念

    数据库是一类软件,作用是管理数据,内部应用了许多数据结构。但是我们还可以用文档储存数据,为什么要出现数据库? 文件保存数据的弊端 文件的安全性问题 文件不利于数据查询和管理 文件不利于存储海量数据 文件在程序中控制不方便 为了解决上述问题,专家们设计

    2024年02月07日
    浏览(9)
  • 【MySQL】1、MySQL数据库的基本概念

    【MySQL】1、MySQL数据库的基本概念

    数据库的基本概念 1.数据 2.表         将不同的记录组织在一起;用来存储具体数据 3.数据库         表的集合,是存储数据的仓库;以一定的组织方式存储的相互有关的数据集合 4.数据库管理系统         是实现对数据库资源有效组织、管理和存取的系统软件

    2024年02月11日
    浏览(10)
  • MySQL的基本概念(数据库类、数据模型、服务启动与连接)

    MySQL的基本概念(数据库类、数据模型、服务启动与连接)

    目录 数据库基础 DB和DBMS 数据库的类型 RDBMS的结构 Windows系统下MySQL的服务启动与连接 服务启动 客户端连接 Linux下MySQL的安装和配置 安装MySQL并启动服务 通过远程连接此数据库 什么是DB 将大量的数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合就成为数据库

    2024年02月15日
    浏览(23)
  • 初识mysql数据库之索引概念与磁盘效率问题

    初识mysql数据库之索引概念与磁盘效率问题

    目录 一、索引的概念及作用 二、实际看看索引的效率提升 三、认识磁盘 1. 简单了解磁盘 2. 数据库文件存储位置 3. 定位扇区 4. 数据读取效率问题 5. 磁盘随机访问与磁盘连续访问 5.1 随机访问 5.2 连续访问 四、mysql与磁盘的交互 五、建立共识  索引,其实就是用于 提高数据

    2024年02月16日
    浏览(11)
  • MyBatis查询数据库之一(概念+创建项目+基础交互)

    MyBatis查询数据库之一(概念+创建项目+基础交互)

    目录 1.MyBatis是什么? 2.为什么学习MyBatis? 3. 怎么学 MyBatis 4.第⼀个MyBatis查询 4.1 添加MyBatis框架支持 4.1.1老项目添加MyBatis 4.1.2 新项目添加MyBatis 4.2 配置连接字符串和MyBatis 4.2.1 配置连接字符串 4.2.2 配置 MyBatis 中的 XML 路径 5. 使用 MyBatis 的操作模式操作数据库 5.1 添加实体类

    2024年02月13日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包