[MYSQL数据库]--mysql的基础知识

news2024/11/21 2:32:11

前言

作者:小蜗牛向前冲

名言:我可以接受失败,但我不能接受放弃

  如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 

目录

一、数据库的基础知识

1、什么是数据库

2、数据库基本常识

3、简单的见一见MYSQL 

二、MYSQL中的库的操作(增删查改)

1、库的创建

2、库的删除 

3、库的修改

4、库的备份和恢复


本期学习:理解什么是数据库,数据库的基本操作增删查改。

一、数据库的基础知识

1、什么是数据库

大家在日常生活中,用电脑记录数据通常是保证在文件中的,比如写论文,写计划书等。

那我在企业中存放用户数据也用文件不就可以了。

为什么要弄出一个数据库这要的东西呢?

文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据 文
  • 件在程序中控制不方便

为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据 库的水平是衡量一个程序员水平的重要指标。 

数据库存储介质:

  • 磁盘
  • 内存

数据库是有客户端(mysql)和服务端(mysqld) ,所以数据库的本质也就是基于C(mysql)S(mysqld)模式的一种网络服务。

当我们程序员在客户端(mysql)对服务端(mysqld)进行字段或者要求时,服务端(mysqld)在他存放数据的地方查找,然后给客户端(mysql)返回结果。

2、数据库基本常识

主流数据库

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

服务器,数据库,表关系 

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

 

MySQL架构 

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

MySQL 的架构可以分为两个主要层次:服务层和存储引擎层。以下是 MySQL 架构的主要组成部分: 

服务层(Server Layer):

  • 连接管理器(Connection Manager): 处理客户端连接的建立和断开。
  • 查询解析器(Query Parser): 解析客户端发送的 SQL 查询语句。
  • 查询缓存(Query Cache): 缓存查询语句及其结果,以提高相同查询的响应速度。在 MySQL 8.0 版本后,查询缓存被废弃,不再被推荐使用。
  • 优化器(Optimizer): 分析查询并生成最优的执行计划。
  • 执行引擎(Execution Engine): 执行优化后的查询计划,与存储引擎进行交互,返回结果给客户端

存储引擎层(Storage Engine Layer):

  • 存储引擎(Storage Engine): 负责数据的存储和检索。MySQL 支持插件式存储引擎,常见的存储引擎包括:
    • InnoDB: 默认的事务型存储引擎,提供了ACID事务支持和行级锁定。
    • MyISAM: 不支持事务,但对于读密集型操作效果较好。
    • Memory: 将表中的数据存储在内存中,适用于对速度要求较高的临时表。
  • 表管理器(Table Manager): 负责管理表的创建、修改和删除等操作。
  • 缓冲池(Buffer Pool): 存储引擎使用的内存缓存,主要用于缓存数据和索引,提高读取性能。
  • 日志管理器(Log Manager): 记录数据的变更,包括事务日志和错误日志。

3、简单的见一见MYSQL 

在自己服务器机会后安装后在操作,SCDN中有许多优秀的博客分享了如何安装MYSQL,我这里就不在献丑了。

首先查看一下自己服务器是否安装好

 ps ajx |grep mysql

没有问题后,就进行mysql的登入

mysql -u root -p

创建数据库

create database helloworld;

 使用数据库

use helloworld;

 

创建数据库表 

create table student(
name varchar(32),
gender varchar(2),
age int
);

 

表中插入数据 

insert into student (name, gender, age) values ('张三',  '男' , 18);
insert into student  (name, gender, age) values ('李四', '女' , 19);
insert into student  (name, gender, age) values ('李四', '女' , 19);

 

查询表中的数据 

select * from student;

查看存储引擎

show engines;

退出数据库 

\q;

我们可以在root的权限下进入 cd /var/lib/mysql这个路径

 

 对于上面的案例我们认识到了什么呢?

  • 1.建立数据库,本质就是Linux下的一个目录
  • ⒉在数据库内建立表,本质就是在Linux下创建对应的文件即可!
  • 3 数据库本质其实也是文件! !只不过这些文件并不由程序员直接操作,而是由数据库服务帮我们进行操作

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

对于SQL分类命令的细节后面会为大家一一分享。 

二、MYSQL中的库的操作(增删查改)

1、库的创建

创建数据库的时候,有两个编码集:

  • 1.数据库编码集--数据库未来存储数据(写入的格式)
  • 2数据库校验集--支持数据库,进行字段比较使用的编码,本质也是一种读取数据库中数据的采用的编码格式(读取的格式)

数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的!

查看数据库支持的字符集

show charset;

查看数据库支持的字符集校验规则 

show collation;

校验规则对数据库的影响 

不区分大小写

  • 创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]
  • 创建一个数据库,校验规则使用utf8_ bin[区分大小写]

创建数据库的语法

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
  • CREATE DATABASE [IF NOT EXISTS] db_name: 这部分定义了创建数据库的语法IF NOT EXISTS 是一个可选的子句,它表示如果数据库已经存在,则不会创建新的数据库。db_name 是要创建的数据库的名称。

  • create_specification: 这是用于指定数据库创建选项的部分。你可以在这里指定默认的字符集和校对规则。

  • [DEFAULT] CHARACTER SET charset_name: 这是用于指定默认字符集的部分。DEFAULT 关键字是可选的,如果不指定,默认的字符集将被设置为指定的 charset_name

  • [DEFAULT] COLLATE collation_name: 这是用于指定默认校对规则的部分。DEFAULT 关键字是可选的,如果不指定,默认的校对规则将被设置为指定的 collation_name

在了解到数据库的创建后,我们分别创建test1和test2数据库用来验证 校验规则使用utf8_ general_ ci[不区分大小写]和校验规则使用utf8_ bin[区分大小写]

创建test1和test2

create database test1 collate utf8_general_ci;
create database test2 collate utf8_bin;

 分别进入test1和test2数据库后插入数据

test1库

use test1;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

test2库

use test2;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

这里我们插入test1和test2数据的库都是相同的数据。

对test1和test2分别进行 查询和排序

mysql> use test1;
mysql> select * from person where name='a';

不区分大小写的查询以及结果 

 区分大小写的查询以及结果

不区分大小写排序以及结果:

区分大小写排序以及结果:

这些都是因为 字符集校验规则 不同而引起的。

2、库的删除 

语法

DROP DATABASE [IF EXISTS] db_ name;

执行删除之后的结果:

  • 数据库内部看不到对应的数据库
  • 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

注意:不要随意删除数据库 ,如果我们一定删除,请记得一定要备份

这里我们把我们以前创建的helloworld删除。 

drop datadase helloworld;

3、库的修改

语法:

ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
  • ALTER DATABASE db_name: 这部分定义了要修改的数据库的名称。

  • alter_specification: 这是用于指定数据库修改选项的部分。你可以在这里指定新的默认字符集和校对规则。

  • [DEFAULT] CHARACTER SET charset_name: 这是用于指定新的默认字符集的部分。DEFAULT 关键字是可选的,如果不指定,默认的字符集将被设置为指定的 charset_name

  • [DEFAULT] COLLATE collation_name: 这是用于指定新的默认校对规则的部分。DEFAULT 关键字是可选的,如果不指定,默认的校对规则将被设置为指定的 collation_name

 对数据库的修改主要指的是修改数据库的字符集,校验规则

实例: 将 test1数据库字符集改成 gbk

alter database test1 charset=gbk;
show create database test1;

4、库的备份和恢复

备份

语法:

mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

示例:将mytest库备份到文件(退出连接)

mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql

这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句 都装载这个文件中。 

还原

mysql> source D:/mysql-5.7.22/mytest.sql;

 注意事项

  • 如果备份的不是整个数据库,而是其中的一张表,怎么做?
mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
  •  同时备份多个数据库
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

 如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据 库,再使用source来还原。

 查看连接情况 

 语法:

show processlist

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你 的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况

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

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

相关文章

【力扣白嫖日记】550.游戏玩法分析IV

前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 550.游戏玩法分析IV 表:Activity 列名类型player_idintdevice_idintevent_datedategames_played…

分享:大数据信用报告查询的价格一般要多少钱?

现在很多人都开始了解自己的大数据信用了,纷纷去查大数据信用报告,由于大数据信用与人行征信有本质的区别,查询方式和价格都不是固定的,本文就为大家详细讲讲大数据信用报告查询的价格一般要多少钱,希望对你有帮助。 大…

v69.字符

1.字符类型 1.1 可以将char类型的变量赋值为整数,也可以赋值为字符! 注意字符要用单引号 ’ ’ 而不是双引号 每一个字符在计算机内部都有一个值去表达它。字符’1’ 在计算机里表示的十进制的整数值为49,就像’A’表示十进制值65。 1.2 scanf 与 p…

人工智能_大模型011_CPU微调_训练_显卡的选型讲解_价格表_011---人工智能工作笔记0146

既然CPU训练大模型无法实现那么就只能购置GPU显卡来进行训练了,来看看如何选型显卡. 之前是没有GPU的,由于游戏行业对画质的需求,催生出了GPU,GPU优势是支持并行计算,可以几千个小核心同时计算,但是有个问题,如何把一个我们需要计算的问题,拆解成1000个或更多小问题,让GPU并行…

【C++】AVL树详解

目录 一、AVL树的概念 二、AVL树节点的定义 三、AVL树的操作 3.1 AVL树的平衡因子 3.2 AVL树的插入 3.3 AVL树的旋转 3.4 AVL树的验证 四、AVL树的完整代码 上一篇已经对关联式容器set/map/multiset/multimap进行了简答的介绍,大家可能发现它们有一个共同点&…

Tomcat服务部署

1、安装jdk、设置环境变量并测试 第一步:安装jdk 在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。 1. #关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 02. #将安装 Tomcat 所需软件包传到/opt…

在Windows中安装PyTorch

文章目录 1. 创建虚拟环境2. 检查显卡版本和CUDA3. 下载链接4. 下载5. 等待6. 检测 1. 创建虚拟环境 具体查看我之前写的 《在Windows中利用Python的venv和virtualenv创建虚拟环境》 2. 检查显卡版本和CUDA 这种情况是需要电脑上有单独的英伟达的显卡、或者英伟达的显卡和集显…

Retrofit核心原理

Retrofit是一个类型安全的HTTP客户端库,广泛用于Android和Java应用中,用于简化网络请求和响应的处理。本文将深入探讨Retrofit的核心原理,帮助开发者理解其背后的工作机制。 Retrofit简介 Retrofit是Square公司开发的一个开源库&#xff0c…

keepalived+HAProxy+MySQL双主实验

keepalivedHAProxyMySQL双主实验 环境准备 node1(HAProxy1):192.168.184.10 node2(HAProxy2):192.168.184.20 node3(MySQL1):192.168.184.30 node4(MySQL2):192.168.184.40 虚拟IP vip:192.168.184.100MySQL部署 在node3执行以下脚本: #!/bin/bash sy…

Linpmem:一款功能强大的Linux物理内存提取工具

关于Linpmem Linpmem是一款功能强大的Linux物理内存提取工具,该工具专为x64 Linux设计,可以帮助广大研究人员在执行安全分析过程中快速读取Linux物理内存数据。 该工具类似Windows下的Winpmem,Linpmem不是一个传统的内存转储工具&#xff0…

Leetcode—63. 不同路径 II【中等】

2024每日刷题&#xff08;115&#xff09; Leetcode—63. 不同路径 II 动态规划算法思想 实现代码 class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m obstacleGrid.size();int n obstacleGrid[0].size();…

【python】Python Turtle绘制流星雨动画效果【附源码】

在这篇技术博客中&#xff0c;我们将学习如何使用 Python 的 Turtle 模块绘制一个流星雨的动画效果。通过简单的代码实现&#xff0c;我们可以在画布上展现出流星闪耀的场景&#xff0c;为视觉带来一丝神秘与美感。 一、效果图&#xff1a; 二、准备工作 &#xff08;1)、导入…

Stable Diffusion中的Clip模型

基础介绍 Stable Diffusion 是一个文本到图像的生成模型&#xff0c;它能够根据用户输入的文本提示&#xff08;prompt&#xff09;生成相应的图像。在这个模型中&#xff0c;CLIP&#xff08;Contrastive Language-Image Pre-training&#xff09;模型扮演了一个关键的角色&a…

关键字:private关键字作用,解析及用法

private关键字在 Java 中用于定义类的成员&#xff08;如变量、方法&#xff09;的访问权限。它表示该成员只能在类的内部被访问和修改&#xff0c;而在类的外部是不可见的。 以下是private关键字的主要作用和解析&#xff1a; 作用&#xff1a; 封装性&#xff1a;通过将类的…

【常用】【测速】ptflops库---速度FPS、参数Params、计算复杂度Flops

一、常用名字 中文名字 英文名字 简称 单位 模型参数量 number of parameters. param. (单位B M) 计算复杂度 computational…

《TCP/IP详解 卷一》第11章 DNS

目录 11.1 引言 11.2 DNS名称空间 11.2.1 DNS命名语法 11.3 名称服务器和区域 11.4 DNS缓存 11.5 DNS 协议 11.5.1 DNS消息格式 11.5.2 DNS 扩展格式&#xff08;EDNS0&#xff09; 11.5.3 UDP 或 TCP 11.5.4 问题&#xff08;查询&#xff09;和区域区段格式 11.5.…

VR元宇宙的概念|VR体验店加盟|虚拟现实设备销售

VR元宇宙是一个结合了虚拟现实&#xff08;Virtual Reality&#xff09;和增强现实&#xff08;Augmented Reality&#xff09;等技术的概念&#xff0c;代表着一个虚拟的多维度世界。它是一个由数字化的空间构成的虚拟环境&#xff0c;可以通过虚拟现实设备进行交互和探索。 元…

常用网络协议的学习

TCP/IP TCP/IP的定义 TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff0c;传输控制协议/互联网协议&#xff09;是互联网的基本协议&#xff0c;也是国际互联网络的基础。 TCP/IP 不是指一个协议&#xff0c;也不是 TCP 和 IP 这两个协议的合称…

逻辑电路集成块手册

还在查找74XX集成块的数据手册吗,还在找逻辑门电路的手册吗 不用找了,直接打开此电子书,查找就可以了,内部框图,真值表引脚序号都有DOWNLOAD:https://www.ti.com/lit/pdf/scyd013?keyMatchLOGIC%20POCKET%20DATA%20BOOK 失效直接上TI官方网站搜索logic pocket data book即可搜…

统计业务流量的毫秒级峰值 - 华为机试真题题解

考试平台&#xff1a; 时习知 分值&#xff1a; 200分&#xff08;第二题&#xff09; 考试时间&#xff1a; 两小时&#xff08;共3题&#xff09; 题目描述 业务模块往外发送报文时&#xff0c;有时会出现网卡队列满而丢包问题&#xff0c;但从常规的秒级流量统计结果看&…