「MySQL-01」MySQL基础

news2024/12/29 14:18:34

目录

一、数据库概念

1. 什么是数据库

2. 为什么要有数据库?

3. 数据库将数据存在哪里?

二、知名数据库介绍

1.知名数据库介绍

2.为什么要学习MySQL

三、MySQL的基本使用

0. 安装MySQL

1. 数据库客户端链接服务端

2. Windows下的MySQL服务端管理

3. 数据库的本质 及 服务器,数据库,表关系

4.数据库的物理存储和逻辑存储

「拓」对数据库的简单操作

四、MySQL架构

1. MySQL 是一个可移植的数据库

2. 这是怎么做到的呢?

3. MySQL服务端插件层的设计思想

五、存储引擎

六、SQL语句分类


一、数据库概念

1. 什么是数据库

1.1 从狭义层面上讲

        a.从服务端来讲:有没有启动数据库,这里的数据库就是指数据库的服务端,即mysqld

(我们安装的MySQL是一套网络服务,既有客户端也有服务端,这意味着我们在A主机上的MySQL服务端可以被B主机上的MySQL客户端访问。启动数据库服务端后我们才能通过数据库的客户端访问服务端,对数据进行增删改查。)

        b.从数据层面来讲:创建一个数据库,这里指的是创建一个数据库文件,即保存在在路径/var/lib/mysql的文件。

1.2 从宏观层面来讲

        为用户提供数据管理的软件集合(程序+数据)。

2. 为什么要有数据库?

2.1 存储数据用文件就可以了,为什么还要弄个数据库?

  • 文件和数据库都可以用来存储数据,但我们使用文件存储数据,数据的管理工作要我们自己做,如对文件里数据的查询和修改,需要我们自己设计程序完成。
  • 为了解决上述问题,专家们在用户和文件之间添加一个更加利于管理数据的应用层软件——数据库,它能帮助用户管理文件中的数据。(所以数据库也可以说是对文件内容进行管理的"文件系统")
  • 所以数据库的优势在于:数据库在存储数据的同时还管理着数据,对外提供基本的数据操作(增删查改),不用程序员手动进行数据管理。

2.2 对比数据库,单纯用文件保存数据有以下几个缺点:

文件不利于海量数据查询和管理
文件的安全性问题 (误删数据如何恢复?)

文件在程序中控制不方便 (要先将文件中的所有内容加载到内存中,才能获取其中某行内容)

3. 数据库将数据存在哪里?

磁盘 或 内存 (数据库存储数据也要创建文件,并将其保存在磁盘或内存中。)

二、知名数据库介绍

1.知名数据库介绍

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

2.为什么要学习MySQL

        因为MySQL开源,使用成本低,生态好,社区活跃,而且在不断迭代更新下现在MySQL的效率并不差,对于百万、千万级别的数据完全hold住,所以互联网公司一般都会使用MySQL,所以MySQL水平是衡量一个程序员水平的重要指标


三、MySQL的基本使用

0. 安装MySQL

关于Linux上MySQL的安装请看博主这篇文章:「MySQL-00」MySQL在Linux上的安装

1. 数据库客户端链接服务端

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

-h : 主机,由于MySQL默认禁止跨网络服务,现在先本地回环127.0.0.1
-P : 端口号,MySQL服务端的端口号默认为3306
-u : 以哪个用户登录
-p : 用户密码

「拓1」如何更改MySQL服务端的默认端口号?

        使用vim打开MySQL配置文件 :  vim /etc/my.cnf
        然后在最后一行之前加上 : port=修改后端口号即可
        最后重启MySQL客户端 : systemctl restart mysqld

        在工作中建议修改,如果仅是练习就没有必要修改了。

「拓2」如何查看MySQL服务端的默认端口号?

        在Linux输入命令 netstat -nltp 进行查询。

2. Windows下的MySQL服务端管理

执行 win+r 输入 services.msc 打开服务管理器

通过下图左侧停止,暂停,重启动按钮进行服务管理

3. 数据库的本质 及 服务器,数据库,表关系

3.1 创建一个数据库的本质:

        在mysql中,建立一个数据库create database XXX,本质在linux下是建立了一个目录!


3.2 在数据库中建表的本质:

        在mysql中,建立一个表create table 表名(); ,本质是在Linux上对应的数据库目录下创建对应的文件!


3.3 对数据库操作的本质:

        所以我们对数据库或数据库里的表进行操作,本质上就是在对Linux上对应的目录和文件进行操作。


3.4 数据库服务器的本质:

        所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,即musqld(数据库服务端),这个管理程序可以管理多个数据库。


3.5 数据库客户端的本质:

        Linux我们通过命令行访问MySQL服务端,这是一个客户端。

        图像界面中访问数据库的软件,也是一个客户端。

        程序中引入MySQL中通过的第三方库来访问MySQL服务端,那么这个程序也是一个客户端。


3.6 总结

数据库客户端服务器、数据库和表的关系如下:

 MySQL的客户端通过SQL语句向服务端发起请求,服务端再根据请求对数据库进行操作。

4.数据库的物理存储和逻辑存储

4.1 物理存储:以二进制的形式保存在文件中。


4.2 逻辑存储: 以行和列的形式保存在表中。

「拓」对数据库的简单操作

  •  show databases;  : 展示已创建的数据库(注意数据库命令以分号结尾)。
  • create database 数据库名称; : 创建一个数据库(注意数据库命令以分号结尾)。
  • system 系统命令  :  执行Linux系统命令,经常使用system clear (执行系统命令清屏,结尾不用带;)。
  • use 数据库名称;  :  进入一个数据库。
  • select database();  :  查看当前正在哪一个数据库里。(需要先进入一个数据库)
  • create table 表名(表头);  :  创建一个表。(需要先进入一个数据库)
  • show tables;  :  查看数据库里所有的表。(需要先进入一个数据库)

四、MySQL架构

1. MySQL 是一个可移植的数据库

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

2. 这是怎么做到的呢?

MySQL的服务端架构主要分三层:

  • 链接层:对与客户端的链接进行管理,如鉴权。
  • SQL语句的接口识别&语法解析&性能调优层:SQL语句在传入下层时就已经被处理、解析好了。
  • 插件(存储引擎)层:把解析好的SQL语句,给选出的存储引擎,存储引擎根据SQL语句和OS的文件系统进行交互。

3. MySQL服务端插件层的设计思想

        MySQL服务端插件层里有多个存储引擎,对于这些存储引擎必须要进行管理,怎么管?当然是先描述,再组织了。由于MySQL是使用C语言/C++写的,所以对于这些存储引擎,可以使用类来描述,类中的成员方法中既有提供给上层的调用接口,也有对下层的操作方法。在未来用户要使用某个存储引擎,直接靠类new一个对象出来即可;不需要了,直接delete掉即可。这就是插件式开发。对于已经存在的存储引擎对象,用列表、顺序表等数据结构进行组织,这样就完成了对所有存储引擎的管理。


五、存储引擎

1.是什么?

        存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术 的实现方法。真正执行SQL语句的部分。

MySQL的核心就是插件式存储引擎,支持多种存储引擎。


2. 查看存储引擎

        show engines;

3. 常用的存储引擎

  • InnoDB  :建议设置为默认存储引擎,因为它支持事物。
  • MyISAM :常用于大量查找的情况。

4.设置存储引擎

  • 使用vim打开MySQL配置文件 :  vim /etc/my.cnf
  • 然后在最后一行skip-grant-tables前面加上行:default-storage-engine=存储引擎名
  • 最后重启MySQL客户端 : systemctl restart mysqld

六、SQL语句分类

根据SQL语句的应用场景对其分类:

  • DDLdata definition language数据定义语言,用来创建、修改、删除存储数据的结构(如数据库、表、视图)
    代表指令: create, drop, alter
  • DMLdata manipulation language数据操纵语言,用来对数据进行操作
    代表指令: insertdeleteupdate
    DML中又单独分了一个DQL
    ,数据查询语言,代表指令: select
  • DCLData Control Language数据控制语言,主要负责权限管理和账户管理
    代表指令: grantrevokecommit

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

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

相关文章

Pygame编程(10)freetype模块

Pygame编程(10)freetype模块 函数示例 函数 pygame.freetype.get_error 返回最新的FreeType错误get_error() -> strget_error() -> None pygame.freetype.get_version 返回FreeType版本get_version(linkedTrue) -> (int, int, int) pygame.fre…

斯坦福人生设计课——简略笔记

来源:⽐尔博内特 戴夫伊万斯 著图书《人生设计课》 目录 一、认清当下的情况,从四个维度观察自己的人生 二、平衡人生,但不要走入误区 2.1 记录你的“美好时光日志”: 2.1.1 记录内容: 2.1.2 辅助反思的方法&…

C# 学习笔记--个人学习使用 <2>

C# 学习笔记 Chapter 2 比较硬的基础部分Section 1 委托Part 1 Action 与 func 委托的示例Part 2 自定义委托Part 3 委托的一般使用Part 4 委托的高级使用Part 5 适时地使用接口 Interface 取代一些对委托的使用 Section 2 事件Part 1 初步了解事件Part 2 事件的应用Part 3 事件…

图神经网络与分子表征:番外——基组选择

学过高斯软件的人都知道,我们在撰写输入文件 gjf 时需要准备输入【泛函】和【基组】这两个关键词。 【泛函】敲定计算方法,【基组】则类似格点积分中的密度,与计算精度密切相关。 部分研究人员借用高斯中的一系列基组去包装输入几何信息&am…

快速安装Qt开发环境,克服在线安装慢等问题

自从Qt6之后,QtCreater的安装都需要注册账号,并且使用账号在线安装,继续使用官网的资源站下载的话,会特别的慢,以下是提高在线安装速度的做法。 官网下载很慢,快速安装的方式如下 1、winR,输入CMD&#xff…

深入分析负载均衡情景

本文出现的内核代码来自Linux5.4.28,为了减少篇幅,我们尽量不引用代码,如果有兴趣,读者可以配合代码阅读本文。 一、有几种负载均衡的方式? 整个Linux的负载均衡器有下面的几个类型: 实际上内核的负载均衡…

关于述职答辩的一点思考和总结

公众号:赵侠客 侠客说:优秀人才的四个特征:格局、思路、实干、写作 一、前言 1.1 述职答辩的重要性 公司都会有晋升通道,述职答辩是你想升职加薪除了跳槽以外的必由之路,其重要性对个人发展来说不言而喻&#xff0c…

python的文件操作

前言 打印内容到屏幕 最简单的输出方式是调用print函数,此函数会将你传递的表达式转化成字符串表达式,并将结果写道标准输出中。 读取键盘输入 python提供了两个raw_input和input内置函数从标准输入中读取一行文本,默认的标准输入是键盘。 …

7.接着跑一下triton官方教程

5.Model Ensemble 在此示例中,我们将探索使用模型集成来仅通过单个网络调用在服务器端执行多个模型。这样做的好处是减少了在客户端和服务器之间复制数据的次数,并消除了网络调用固有的一些延迟。 为了说明创建模型集成的过程,我们将重用第…

缺页异常与copy-on-write fork

缺页异常需要什么 当发生缺页异常时,内核需要以下信息才能响应这个异常: 出错的虚拟地址(引发缺页异常的源) 当一个用户程序触发了缺页异常,会切换到内核空间,将出错的地址放到STVAL寄存器中,…

JVM工具-1. jps:虚拟机进程状态工具

文章目录 1. jps介绍2. jps命令格式3. jps工具主要选项4. jps -q5. jps -m6. jps -l7. jps -v 1. jps介绍 jps(JVM Process Status Tool):虚拟机进程状态工具,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class&…

3.3.2:SUM作为一般函数及聚合函数的应用

【分享成果,随喜正能量】我们很多道友没受过什么苦,或受不了一句话、一点气,总想悠悠自在成佛。或是念上几十部经就想换取什么,法宝是无价的!你拿有价来换,不但换不到,还丧失了功德。应当不退初…

springboot整合jdbctemplate教程

这篇文章介绍一下springboot项目整合jdbctemplate的步骤,以及通过jdbctemplate完成数据库的增删改查功能。 目录 第一步:准备数据库 第二步:创建springboot项目 1、创建一个springboot项目并命名为jdbctemplate 2、添加spring-jdbc和项目…

探讨uniapp的路由与页面生命周期问题

1 首先我们引入页面路由 2 页面生命周期函数 onLoad() {console.log(页面加载)},onShow() {console.log(页面显示)},onReady(){console.log(页面初次显示)},onHide() {console.log(页面隐藏)},onUnload() {console.log(页面卸载)},onBackPress(){console.log(页面返回)}3 页面…

一串神奇的字符,就能让ChatGPT在内的AI聊天机器人变得不正常

一组看似随机的字符被添加到对话提示的末尾,就会发现几乎任何聊天机器人都显露了邪恶本性。 卡内基梅隆大学计算机科学教授Zico Kolter和博士生Andy Zou的一份报告,揭示了当前主流的聊天机器人,特别是ChatGPT,以及Bard、Claude等…

python print ljust 文本对齐打印 对齐打印名册

背景 在python部分场景下,我们需要打印输出一些文本消息,但我们又无法预测可能的打印内容是什么。这种情况下,我们要对齐打印这些文本,是比较比较难以处理的。 例如下面是一列姓名,和对应的一列手机/电话号&#xff0…

自然对数底e的一些事

自然对数底e的一些事 走的人多了就成了路 中国清代数学家李善兰(1811—1882) 凡此变数中函彼变数者,则此为彼之函数 自然对数底也是使用习惯 🍉 李善兰把function翻译为函数,函就是包含,含有变量&#xff…

C# Winfrom通过COM接口访问和控制Excel应用程序,将Excel数据导入DataGridView

1.首先要创建xlsx文件 2.在Com中添加引用 3. 添加命名空间 using ApExcel Microsoft.Office.Interop.Excel; --这样起个名字方面后面写 4.样例 //点击操作excelDataTable dt new DataTable();string fileName "D:\desktop\tmp\test.xlsx";ApExcel.Application exA…

【学习FreeRTOS】第20章——FreeRTOS内存管理

1.FreeRTOS内存管理简介 在使用 FreeRTOS 创建任务、队列、信号量等对象的时,一般都提供了两种方法: 动态方法创建:自动地从FreeRTOS管理的内存堆中申请创建对象所需的内存,并且在对象删除后,可将这块内存释放回Free…

牛客练习赛 114

C.Kevin的七彩旗 思路:贪心和dp均可以解决。 贪心:我们可以发现,最终想要获得合法的序列,我们必须是通过把几段连续的序列拼凑起来,但序列之间可能有重合,因此我们就转化为了,记录每一段最大的…