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

news/2024/7/5 2:47:50

前言

作者:小蜗牛向前冲

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

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

目录

一、数据库的基础知识

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://lihuaxi.xjx100.cn/news/2056303.html

相关文章

优思学院|质量工程师需要学习什么软件?

初入职质量工程师的朋友常常会问:质量工程师需要学习什么软件?在质量控制和管理的世界里,拥有强大的数据分析工具是走向成功的关键,因此,对于质量工程师来说,掌握正确的软件不仅能提升工作效率,…

ad18学习笔记十六:如何放置精准焊盘到特定位置,捕抓功能的讲解

网上倒是一堆相关的指导 AD软件熟练度提升,如何设置板框捕捉?_哔哩哔哩_bilibili 关于Altium Designer 20 的捕抓功能的讲解_ad捕捉设置-CSDN博客 AD软件捕捉进阶实例,如何精确的放置布局元器件?_哔哩哔哩_bilibili AD绘制PCB…

MySQLBackup备份数据库

环境:MySQL 8.0.36 1、安装部署 [rootnode5 ~]# wget -c https://edelivery.oracle.com/osdc/softwareDownload?fileNameV1040085-01.zip [rootnode5 ~]# ll total 22776 -rw-------. 1 root root 1066 Jan 21 14:59 anaconda-ks.cfg -r–r–r–. 1 root root 23…

【Linux】进程优先级以及Linux内核进程调度队列的简要介绍

进程优先级 基本概念查看系统进程修改进程的优先级Linux2.6内核进程调度队列的简要介绍和进程优先级有关的概念进程切换 基本概念 为什么会存在进程优先级?   进程优先级用于确定在资源竞争的情况下,哪个进程将被操作系统调度为下一个运行的进程。进程…

Java的编程之旅31——多态

1.多态的简介 在Java中,多态是指通过父类的引用调用子类的对象,实现不同类型的对象的方法调用。 Java中的多态通过继承和重写实现。当子类继承父类并重写父类的方法时,可以通过父类的引用调用子类的对象,并且根据运行时实际的类型…

Orange3数据预处理(索引选择器组件)

组件描述 数据行即使在某些或全部原始变量被来自原始变量的计算变量替换时,也保持其身份。 此小部件获取两个数据表(“数据”和“数据子集”),它们可以追溯到同一来源。基于行身份而非实际数据,它会从“数据”中选择所…

老卫带你学---leetcode刷题(191. 位1的个数)

191. 位1的个数 问题 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 提示: 请注意,在某些语言&…

周鸿祎免费课演示AI新品,瞬时流量暴增现场增加服务器

2月29日,360创始人周鸿祎首堂AI免费课开讲,吸引千万网友围观。演讲现场周鸿祎演示了两款AI驱动的新产品。在演示测试版360AI搜索时,由于用户体验火爆,瞬时流量暴增44倍,为满足用户和全网用户需求临时增加了服务器。产品…