Mysql——初识Mysql

目录

 数据库基础

 创建数据库

服务器,数据库,表关系 

 数据逻辑存储

 MySQL架构

 SQL分类

存储引擎 


mysql服务端是一个网络服务器,采用的是TCP协议在应用层 ,mysql有自己的协议。

 数据库基础

         mysql不是数据库,是mysql的客户端,mysqld是数据库服务端。

 上图中以特定的格式保存好的文件,叫数据库(狭义上的概念)。

 mysql,mysqld和上图中的这些文件,为我们提供了较为便捷的数据的存取服务的软件的集合。

1. 什么是数据库
        存储数据用文件就可以了,为什么还要弄个数据库?
                文件保存数据有以下几个缺点:
                文件的安全性问题
                文件不利于数据查询和管理
                文件不利于存储海量数据
                文件在程序中控制不方便

        数据库的本质:对文件的内容提供基本的内容操作,不用程序员(用户)手动的进行数据管理。
        数据库存储介质:
                磁盘 内存


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

连接到服务器

mysql也有自己的服务端和客户端,并不是单机的

         mysql -h 127.0.0.1 -P 3306 -u root -p 

        -h本地IO,-P端口号,-u以哪个身份去登录,-p登录密码,这些都足以说明mysql是一套网络服务

 创建数据库

         创建一个数据库本质是在Linux上做什么?

        左边启动数据库,右边进入了数据库目录

 展示数据库 show databases;

 创建数据库 creat databases xxx;

在左侧创建了数据库,右侧就多了相应的文件

 建立数据库本质是在linux下建一个目录。

清屏:这是系统命令,不是mysql命令,system clear;

进入(使用)数据库 :use xxx;相当于linux下的cd,是mysqld进入了数据库。

如何确认当前已经使用了数据库: 

我们可以看到当前已经进入这个数据库里面了。 

         建表:create table xxx;建好表之后,右边的目录里会多出俩个文件,不同存储引擎对应的文件数不同,即创建表也是创建文件。

        查看表:show tables;

 查看表结构 desc xxx;

 

 插入数据insert into xxx...

查看插入的用户select *from xxx; 

         但是插入数据后,数据库文件中并没有新增文件,为了提高效率,我们把数据给了mysqld,mysqld不一定是立马把数据放到文件中,减少IO次数。

服务器,数据库,表关系 

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

 mysql本质就是一个client,只不过是命令行的client。

mysql的生态中,也会提供第三方库,让语言也能直接访问mysql。

客户端可通过SQL语句向服务器发出请求。

 数据逻辑存储

 

 MySQL架构

        Linux上的mysql(数据库)是客户端,mysqld是数据库服务端,类似于xshell的sshd,如果要远程登录必须启动sshd,如果没启动sshd我们就无法远程登录。

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

   

        第一层:建立连接,第二层:语法解析 。

        第三层:该层是存储引擎层,获取到上层的sql指令之后,转化为各种文件系统的函数调用,这些存储引擎也需要管理,先描述,再组织,即这些存储引擎本质是一个类。

        系统角度:前三层是应用层的代码

        网络角度:应用层协议的一种

         最下面是OS。

 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

存储引擎 

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

 查看存储引擎show engines;

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

信息安全工程师(16)密码学概况

前言 密码学是研究编制密码和破译密码的技术科学,它涵盖了加密技术和解密技术的各个方面,是现代信息安全的核心组成部分。 一、定义与基本概念 定义:密码学是研究如何隐密地传递信息的学科,主要涉及保密通信和数字签名两个方面。它…

【工具】语音朗读PDF的免费工具

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 背景介绍 看累了,不想看,能不能读给我听! 工具介绍 Natural Readers Free Text to Speech Online with Realistic…

Ubuntu 16.04安装填坑记录

一. 问题描述: (1)Ubuntu 16.04使用USB启动盘安装时,出现"try ubuntu without installation"或“install ubuntu”选择,Enter选择安装后,显示器黑屏无任何显示。 原因分析: 显示黑…

Python电能质量扰动信号分类(一)基于LSTM模型的一维信号分类

引言 本文基于Python仿真的电能质量扰动信号,先经过数据预处理进行数据集的制作和加载,然后通过Pytorch实现LSTM模型对扰动信号的分类。Python仿真电能质量扰动信号的详细介绍可以参考下文(文末附10分类数据集): Pyth…

8.11Zero Crossing Detection (零交叉检测)

基本概念 零交叉检测是一种基于二阶导数的边缘检测方法,它通过查找二阶导数过零点来定位边缘。 注意: OpenCV没有直接提供这种检测方法,但可以通过结合其他函数来实现。 在OpenCV中,基于C的Zero Crossing Detection(零交叉检测&…

项目第一弹:RabbitMQ介绍

RabbitMQ介绍 一、前言1. 回顾生产者消费者模型2.忙闲不均与负载均衡3.改造线程池使其支持负载均衡4.MQ的引入 二、MQ的介绍1.应用/模块解耦,且提高容错性2.异步处理3.流量削峰填谷4.分布式事务1.两阶段提交协议(2PC协议)2.事务消息&#xff…

《动手学深度学习》笔记2.1——神经网络从基础→进阶 (层和块 - 自定义块)

目录 0. 前言 原书正文(第五章) 第五章 - 第一节 - 层和块 - 自定义块 1. Sequential() PyTorch高级API 2. MLP() 无传入参数 3. MySequential() 传入任意层(块) 4. FixedHiddenMLP() 无传入参数-固定隐藏层 5. NestMLP() 传入嵌套块-多次嵌套 …

【目标检测】隐翅虫数据集386张VOC+YOLO

隐翅虫数据集:图片来自网页爬虫,删除重复项后整理标注而成 数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):386 标注…

C++核心编程和桌面应用开发 第五天(new delete malloc 静态成员 静态成员函数 单例)

目录 1.new运算符 1.1开批数组 2.delete运算符 3.malloc和new的区别 4.万能指针接收new对象 5.静态成员 6.静态成员函数 7. 单例 7.1概念 7.2常见场景 1.new运算符 C中用new进行动态内存分配,new会在调用构造函数之前,成功进行内存分配&#x…

利用F.interpolate()函数进行插值操作

函数简介 功能: 利用插值方法,对输入的张量数组进行上\下采样操作,换句话说就是科学合理地改变数组的尺寸大小,尽量保持数据完整。 torch.nn.functional.interpolate(input, sizeNone, scale_factorNone, modenearest, align_c…

RabbitMQ是什么?RabbitMQ简介

一:技术背景 假如我们有一个支付服务,支付服务的业务逻辑是:首先支付扣减余额,更新支付单状态,更新订单状态,发短信,给这个用户增加积分。在这个场景下,如果我们使用同步调用通信&am…

vscode将c++项目打包exe进行反汇编练习

vscode将c&c项目打包成控制台exe全过程,进行c反汇编练习,反汇编只有不断的练习才能巩固、积累经验。 一、打包exe 创建新项目,选择c,Windows桌面向导 直接点击创建 直接点确定 直接点击运行即可,可以看到我的exe…

15 跨组件通信依赖注入provide和inject

Provide / Inject 通常,当我们需要从父组件向子组件传递数据时,我们使用 props。想象一下这样的结构:有一些深度嵌套的组件,而深层的子组件只需要父组件的部分内容。在这种情况下,如果仍然将 prop 沿着组件链逐级传递…

ROS2 技术及分布式介绍

PC端开发环境搭建 WSL环境搭建 https://www.guyuehome.com/46574 In Windows 11 builds that support wslg: 1. Open up powershell and enter wsl --install ROS2系统安装 方法一 • 设置编码 Bash $ sudo apt update && sudo apt install loca…

EffcientNetV2(2021):更快、更强、效率更高的EffcientNet!

EffcientNetV2: Smaller Models and Faster Training EfficientNetV2:更小的模型和更快的训练 论文地址: https://arxiv.org/abs/2104.00298 本文介绍了 EfficientNetV2,这是一个新的卷积网络系列,与以前的模型相比,它…

HDFS_API文件和文件夹

代码: Beforepublic void init() throws URISyntaxException, IOException {URI uri new URI("hdfs://master:9000");// 创建一个配置文件Configuration entries new Configuration();// 获取到了客户端对象 // entries.set("dfs.replicat…

【嵌入式linux开发】SPI设备文件读取ICM-40609D传感器

【嵌入式linux开发】SPI设备文件操作ICM-40609D传感器 前言一、数据手册浅读二、linux系统下使用SPI设备文件操作ICM-40609-D三、ros1发布imu数据3.1、创建ros1工作空间3.2、数据发布节点代码 前言 在本篇博客中,将从ICM-40609-D传感器的数据手册出发,简…

公安局软件管理平台建设方案和必要性,论文-3-———未来之窗行业应用跨平台架构

三、平台功能设计 四、技术架构 1. 前端界面 - 采用简洁、易用的设计风格,适应不同终端设备的访问。 - 基于 HTML5、CSS3 和 JavaScript 构建。 2. 后端服务 - 选择主流的 Web 开发框架,如 未来之窗跨平台架构,VUE。 - 数据库…

Github Webhook触发Jenkins自动构建

1.功能说明 Github Webhook可以触发Jenkins自动构建,通过配置Github Webhook,每次代码变更之后(例如push操作),Webhook会自动通知Jenkins服务器,Jenkins会自动执行预定义的构建任务(如Jenkins …

Redis-认识与应用(从ChatGpt的角度看Redis)

问题:您好,我的项目是在线教育平台,用springboot3搭建,我现在想学redis,请问redis能在我的项目中有什么应用场景呢 问题:就是我项目能应用上具体什么场景,请给我例子,并给我具体代码…