MySQL——1、数据库基础

数据库基础

  • 1、安装MySQL
  • 2、什么是数据库
  • 3、数据库使用案例
  • 4、MySQL架构与SQL分类
  • 5、存储引擎

1、安装MySQL

1、更新软件包列表

sudo apt update

2、查看MySQL安装包

apt list | grep mysql-server

在这里插入图片描述

3、安装MySQL

# 默认安装最新版
sudo apt install -y mysql-server

4、启动MySQL
安装成功后我们需要启动mysql服务

sudo systemctl start mysql

然后我们查看一下是否存在一个mysqld的进程:
在这里插入图片描述

5、配置mysqld.cnf文件
在这里插入图片描述

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

提权使用vim打开该文件进行配置,在文件最后加入以下内容:
skip-grant-tables
character-set-server=utf8
default-storage-engine=innodb
在这里插入图片描述
第一行配置表示配置root免密码登录,我们后面会设置密码。第二行配置编码为utf8。第三行设置默认存储引擎为innodb。
配置好后保存退出,然后使用以下命令重启mysql服务。

sudo systemctl restart mysql

6、访问数据库服务
在这里插入图片描述
-h指明登录部署了mysql服务的主机,实际上mysql是一个网络服务。-P指明要访问的端口号。-u指明登录用户。-p指明需要输入密码。然后我们直接回车就会发现登录失败,这是因为上面配置了免密码登录导致mysql并没有成网络服务,我们使用netstat -tnlp是看不到端口号为3306的网络服务的,这个我们后面用户管理设置了密码再将配置的免密码登录删掉。

我们直接使用mysql -uroot -p登录,不需要输入密码直接回车即可。如果要退出输入quit即可。
在这里插入图片描述


2、什么是数据库

在这里插入图片描述
1、mysql是数据库服务的客户端。
2、mysqld是数据库服务的服务端。
3、mysql本质上是基于C(mysql) S(mysqld)模式的一种网络服务。

mysql是一套给我提供数据存储服务的网络程序。
数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据——将来在磁盘上存储的一套数据库方案。数据库服务——mysqld。

存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:文件的安全性问题、文件不利于数据查询和管理、文件不利于存储海量数据、文件在程序中控制不方便。数据库存储介质:磁盘、内存。
数据库本质:对数据内容存储的一套解决方案,你给我字段或者要求,我直接给你结果。

在这里插入图片描述
如图,原来我们用户是直接和磁盘上的文件打交道的,现在我们通过mysql客户端访问服务器上的mysqld服务端,然后服务端将SQL进行分析然后去操作磁盘上的数据库文件,获取到结果后再将结果返回给mysql客户端。

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

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

在这里插入图片描述


3、数据库使用案例

样例:使用mysql建立一个数据库,建立一张表结构,插入一些数据。看看数据库在Linux中是如何表现的。

1、首先登录数据库:mysql -uroot -p
在这里插入图片描述

2、查看所有数据库:show databases;
在这里插入图片描述
登入root账户,或者使用sudo提权,查看/var/lib/mysql下的文件,对比左边的数据库,我们发现数据库本质上就是在Linux下的一个目录。

3、创建一个数据库:create database helloworld;
在这里插入图片描述
建立数据库,本质上就是在Linux下创建一个目录。

4、使用数据库,相当于进入该目录:use helloworld;
在这里插入图片描述

5、创建数据库表
在这里插入图片描述
创建数据库表的语法如图左侧,首先是列的名称,然后是属性,多个列以逗号分隔开。创建后进入该数据库目录下可以看到多了一个student.ibd的文件。

6、插入数据
在这里插入图片描述
使用insert into 表名,向数据库的某个表插入数据。

7、查询表中数据
在这里插入图片描述
如图,查询的数据信息是逻辑存储结构。


4、MySQL架构与SQL分类

MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux、Windows、Mac和Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
在这里插入图片描述
首先mysql服务端的最上面是一个连接池,进行连接管理和安全验证的。然后连接池下面就是用来进行SQL语法分析解析优化的,然后将它们交给再下一次的存储引擎,存储引擎再去操作磁盘上的文件。不同的存储引擎适用于不同类型的存储数据。

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。

5、存储引擎

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

在这里插入图片描述
使用show engines \G可以查看当前数据库支持的存储引擎。或者使用show engines。
在这里插入图片描述
虽然存储引擎这么多,但是我们主要使用的还是InnoDB和MyISAM这两种存储引擎。我们在最初配置的存储引擎也是InnoDB。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/905636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ET MailBoxComponent类(实体) 分析

MailBoxComponent 作用是,用来接收Actor消息,处理Actor消息。这个没有存储能,收到消息后立即就处理了。ParentInstanceId 是MailBox所在的实体InstanceIdMailBoxType MailBox类型MailBoxInvoker 分发消息的包装Add 方法,看名字是…

Weblogic SSRF漏洞复现(CVE-2014-4210)【vulhub靶场】

漏洞概述: Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件。 漏洞形成原因: WebLogic Server 的 UDDI 组件(uddiexplorer.war)中的 SearchPublicR…

js应用opencv

思路&#xff1a; 第一步&#xff1a;直方图 第二步&#xff1a;获得直方图的波峰 第三步&#xff1a;波峰胜负10&#xff0c;高于或低于变红色 1.引用import cv from ‘techstark/opencv-js’; 2.vue代码 <div class"historyLeft2"><div style"relat…

用Python代码绘制动态3D爱心效果

引言 介绍Python在创意编程中的应用&#xff0c;特别是如何通过简单的代码实现视觉上的美感。引出本文将分享的爱心代码&#xff0c;并简要说明其实现原理。 爱心代码的基本实现 展示一个简单的Python代码示例&#xff0c;使用字符画的方式在控制台中绘制一个爱心图案。 pr…

使用Python开发经典俄罗斯方块游戏

使用Python开发经典俄罗斯方块游戏 在这篇教程中&#xff0c;我们将学习如何使用Python和Pygame库开发一个经典的俄罗斯方块游戏。这个项目将帮助你理解游戏开发的基本概念&#xff0c;包括图形界面、用户输入处理、碰撞检测等重要内容。 项目概述 我们将实现以下功能&…

兼顾长、短视频任务的无人机具身理解!AirVista-II:面向动态场景语义理解的无人机具身智能体系统

作者&#xff1a;Fei Lin 1 ^{1} 1, Yonglin Tian 2 ^{2} 2, Tengchao Zhang 1 ^{1} 1, Jun Huang 1 ^{1} 1, Sangtian Guan 1 ^{1} 1, and Fei-Yue Wang 2 , 1 ^{2,1} 2,1单位&#xff1a; 1 ^{1} 1澳门科技大学创新工程学院工程科学系&#xff0c; 2 ^{2} 2中科院自动化研究所…

【蓝桥杯省赛真题49】python偶数 第十五届蓝桥杯青少组Python编程省赛真题解析

python偶数 第十五届蓝桥杯青少组python比赛省赛真题详细解析 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解

鸿蒙(HarmonyOS)应用开发入门教程

目录 第一章:鸿蒙系统简介 1.1 什么是鸿蒙系统? 1.2 鸿蒙系统架构 第二章:开发环境搭建 2.1 安装DevEco Studio 步骤1:下载与安装 步骤2:首次配置 步骤3:设备准备 2.2 创建第一个项目 第三章:鸿蒙应用开发基础 3.1 核心概念:Ability与AbilitySlice 示例代码…

VM中 ubuntu 网卡不显示

1.添加网卡配置 #sudo nano /etc/netplan/01-netcfg.yaml network:version: 2renderer: networkdethernets:ens33:dhcp4: trueens37:dhcp4: trueens38:dhcp4: true#保存后 sudo netplan apply2.查看网络状态 sudo systemctl start systemd-networkd sudo systemctl status sy…

阿克曼-幻宇机器人系列教程3- 机器人交互实践(Message)

上一篇文章介绍了如何通过topic操作命令实现与机器人的交互&#xff0c;本篇我们介绍如何通过Message&#xff08;即topic的下一级&#xff09;实现与机器人的交互。 和topic一样&#xff0c;首先在一个终端通过ssh命令登录机器人、启动机器人&#xff0c;然后打开另外一个终端…

Python 调试扩展版本兼容问题解决纪实

在 Python 开发中&#xff0c;调试工具的正常使用对效率至关重要。近期在公司项目中&#xff0c;便遇到了 Python 调试扩展与版本不兼容的问题。公司 ERP 服务器采用 Ubuntu 18.04 系统&#xff0c;其标配 Python 版本为 3.6&#xff0c;而常用的 Python Debugger 扩展对版本有…

React 第四十二节 Router 中useLoaderData的用途详解

一、前言 useLoaderData&#xff0c;用于在组件中获取路由预加载的数据。它通常与路由配置中的 loader 函数配合使用&#xff0c;用于在页面渲染前异步获取数据&#xff08;如 API 请求&#xff09;&#xff0c;并将数据直接注入组件&#xff0c;从而简化数据流管理。 二、us…

Linux——mysql主从复制与读写分离

目录 一&#xff0c;理解什么是mysql主从复制 1&#xff0c;mysql支持的复制类型 2&#xff0c;mysql主从复制的工作流程 二&#xff0c;配置mysql主从复制 三&#xff0c;配置mysql主主复制 四&#xff0c;mysql读写分离 1&#xff0c;了解什么是mysql读写分离 2&…

MongoDB数据库深度解析:架构、特性与应用场景

在现代应用程序开发中&#xff0c;数据存储技术的选择至关重要。在众多的数据库管理系统中&#xff0c;MongoDB以其灵活性和强大的功能迅速崛起&#xff0c;成为NoSQL数据库中的佼佼者。本文将深入解析MongoDB的架构、核心特性、性能优化及其在实际应用中的最佳实践&#xff0c…

3D曲面上的TSP问题(一):曲面上点集距离求解

3D曲面上&#xff0c;两点的距离求解不能采用欧式距离&#xff0c;而需要计算测地线距离。 代码使用CGAL 5.6.2 OpenCV 4.11.0 版本实现 #include "cgal_utils.h" #include <CGAL/AABB_tree.h> #include <CGAL/AABB_traits.h> #include <CGAL/AABB_…

【歌曲结构】2:小节与歌曲结构信息整合

歌曲小节与结构信息整合 我将为您整合小节信息与歌曲结构,创建一个更加详细的JSON数据结构。 处理方法 将小节时间与歌曲结构段落进行匹配为每个小节添加所属段落信息为小节添加格式化的时间戳为小节添加对应时间范围内的歌词{"song_title": "财神庙前许三亿…

C语言:深入理解指针(3)

目录 一、数组名的理解 二、用指针访问数组 三、一维数组传参的本质 四、冒泡排序 五、二级指针 六、指针数组 七、指针数组模拟二维数组 八、结语 一、数组名的理解 数组名其实就是首元素的地址 int arr[3] {1,2,3}; printf("arr :%p\n" ,arr); printf(…

Spring MVC 接口的访问方法如何设置

RequestMapping 是 Spring 框架中用于映射 HTTP 请求到控制器方法的注解。它支持以下 HTTP 方法访问类型&#xff0c;通过 method 属性指定&#xff1a; GET&#xff1a;用于获取资源POST&#xff1a;用于提交数据PUT&#xff1a;用于更新资源DELETE&#xff1a;用于删除资源PA…

linux libdbus使用案例

以下是一个基于 Linux libdbus 的详细指南,包含服务端和客户端的完整代码示例,涵盖 方法调用、信号发送 和 异步消息处理。libdbus 是 D-Bus 的底层 C 库,直接操作 D-Bus 协议,适合需要精细控制的场景。 1. libdbus 的核心机制 连接管理:通过 dbus_bus_get 连接系统总线或…

Day118 | 灵神 | 二叉树 | 删点成林

Day118 | 灵神 | 二叉树 | 删点成林 1110.删点成林 1110. 删点成林 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 最直接的思路就是看当前结点的值是不是在要删除的列表中&#xff0c;在的话删除当前结点并把左右孩子加入res中 很可惜这样是错的&#xff0c;…