当前位置: 首页 > news >正文

【MySQL篇】:MySQL基础了解以及库和表的相关操作

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨
✨ 个人主页:余辉zmh–CSDN博客
✨ 文章所属专栏:MySQL篇–CSDN博客

在这里插入图片描述

文章目录

  • 一.MySQL基础
    • 1.mysql的大致理解
    • 2.基本使用
    • 3.客户端,服务器,数据库,表关系
    • 4.SQL语句分类
    • 5.存储引擎
  • 二.MySQL库的操作
    • 1.创建数据库
    • 2.字符集和检验规则
    • 3.操纵数据库
  • 三.MySQL表的操作
    • 1.创建表
    • 2.查看表结构
    • 3.修改表
    • 4.删除表

一.MySQL基础

1.mysql的大致理解

mysql对应的是数据库服务的客户端,mysqld(一般带有d结尾的进程是一个守护进程)对应的是数据库服务的服务器端,所以mysql本质上是一种基于C(mysql) S(mysqld)模式的网络服务;

既然是一种网络服务,那么就可以查到对应绑定的端口号:

在这里插入图片描述

mysql是一套给我们提供数据存取服务的网络程序;

数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据——将来在磁盘或者内存上存储的一套数据库方案;

但是存储数据用文件就够了,为什么还要弄个数据库?

这是因为文件保存数据有以下几个缺点:

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

所以一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据管理能力(从用户的角度);

因此数据库本质上是对数据内容存储的一套解决方案,用户给数据库字段或者要求,数据库就可以直接给用户返回结果;

2.基本使用

登录mysql(连接服务器)指令

mysql -h 127.0.0.1 -P 3306 -u [user] -p

选项

  • -h:指明登录部署了mysql服务的主机;
  • -P:指明我们要访问的端口号;
  • -u:指明登录用户;
  • -p:指明需要输入密码

执行该指令进行登陆时,需要输入密码,输入密码时不会显示

在这里插入图片描述

退出mysql(断开连接)指令

quit

直接输入quit即可退出;

3.客户端,服务器,数据库,表关系

1.数据库服务器

  • 定义:数据库服务器是一台运行数据库管理系统(主流的有MySQLPostgreSQLCracle等)的计算机,负责存储,管理和保护数据,并响应客户端的请求
  • 作用:相当于“数据仓库的管理员”,负责数据的存储,查询,修改等操作;

2.数据库客户端

  • 定义:数据库客户端是用来连接数据库服务器的工具或程序,可以是命令行工具(比如mysql),图形化工具(比如Navicat)等;
  • 作用:相当于“访问仓库的访客”,通过客户端向服务器发出请求(比如查询,插入,删除数据等);

3.数据库

  • 定义:数据库是服务器上的一个数据集合,一个服务器可以有多个数据库,每个数据可之间相互独立;
  • 作用:相当于“仓库里的一个房间”,每个房间存放着不同类型的数据;

4.表

  • 定义:表是数据库中的基本存储结构,每个表由行(记录)和列(字段)组成;
  • 作用:相当于“房间里的柜子”,每个柜子(表)用来存放某一类数据(比如用户信息,订单信息等);

具体的数据流向

用户输入查询 → 客户端 → 网络传输 → 服务器 → 数据库 → 表 → 数据↓
用户看到结果 ← 客户端 ← 网络传输 ← 服务器 ← 数据库 ← 表 ← 数据

在这里插入图片描述

4.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的核心就是插件式的存储引擎,支持多种存储引擎(先了解吧,后面用到了再讲解)。

二.MySQL库的操作

1.创建数据库

create database [if not exists] db_name [[default] character set charset_name, [default] collate collation_name];

说明

  • if not exists:表示如果不存在就直接创建;

  • []中的是可选项;

  • character set:指定数据库采用的字符集;

  • collate:指定数据库字符集的检验规则;

示例

创建一个名为mydatabase的数据库:

create database mydatabase;

(当我们创建数据库时没有指定字符集和检验规则时,系统会使用默认字符集:utf8

检验规则:utf8_general_ci);

创建一个数据库本质就是在/var/lib/mysql/下创建一个目录

在这里插入图片描述

所以数据库本质上也是文件!!!只不过这些文件并不由程序员直接操作,而是由数据库服务帮我们进行操作

2.字符集和检验规则

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

  • 数据库编码集:数据库用来存储数据;
  • 数据库校验集:支持数据库进行字段比较使用的编码,本质上也是一种读取数据库中的数据所采用的编码格式;

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

1.查看系统默认字符集和校验规则

show variables like 'character_set_database';
show variables like 'collation_database';

2.查看数据库支持的字符集

show charset;

字符集主要是控制用什么语言,比如utf8就可以使用中文;

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

shwo collation

4.检验规则对数据库的影响

以下面的这个为例:

  • 查找时不区分大小写:
// 创建数据库
create database test1 collate utf8_general_ci;// use + 数据库名 可以理解为进入该数据库中,比如cd某个目录中
use test1;// 创建表
create table person (name varchar(20));// 插入
insert into person (name) values ('a');
insert into person (name) values ('A');
insert into person (name) values ('b');
insert into person (name) values ('B');// 筛选
select * from person where name='a';

在这里插入图片描述

  • 查找时区分大小写:
// 创建数据库
create database test2 collate utf8_bin;use test2;// 创建表
create table person (name varchar(20));// 插入
insert into person (name) values ('a');
insert into person (name) values ('A');
insert into person (name) values ('b');
insert into person (name) values ('B');// 筛选
select * from person where name='a';

在这里插入图片描述

3.操纵数据库

1.查看数据库

show database;

在这里插入图片描述

2.查看当前在哪个数据库中

select database();

在这里插入图片描述

3.显示创建语句

show create database db_name;

在这里插入图片描述

4.修改数据库

alter database db_name [[default] character set charset_name, [default] collate collation_name];

注意:对数据库修改主要是修改数据库的字符集或者校验规则;

示例

mydatabase数据库的字符集修改为gbk

alter database mydatabase charset=gbk;

在这里插入图片描述

5.删除数据库

drop database [if exists] db_name;

执行删除之后的结果就是数据库内部看不到对应的数据库,本质就是删除对应的目录,里面的数据全部被删除

注意:不要随意删除数据库;

示例

删除数据库test2

drop database test2;

删除前/var/lib/mysql/目录下:

在这里插入图片描述

删除后:

在这里插入图片描述

6.备份和恢复

备份

在系统命令行中指令备份

mysqldump -P3306 -u use_name -p -B db_name > 数据库备份存储的文件路径

示例

mysqldump -P3306 -u zmh_1 -p -B test1 > /home/zmh01/mytest1.sql

在这里插入图片描述

还原

mysql中输入指令:

source 数据库备份存储的文件路径;

示例

先删除数据库test1,然后再恢复:

drop database test1;source /home/zmh01/mytest1.sql;

在这里插入图片描述

备份时其实就是把整个创建数据库,建表,导入数据的所有语句都装载到这个文件中,然后恢复时再依次执行这个文件中的所有语句

注意事项

  • 如果备份的不是整个数据库,而是其中的一张表呢?
mysqldump -u use_name -p db_name 表名1 表名2... > 备份存储的的文件路径
  • 同时备份多个数据库
mysqldump -u use_name -p -B 数据库名1 数据库名2... > 备份存储的文件路径
  • 如果备份一个数据库时,没有带上参数-B,在恢复数据库时,需要先创建空数据库,然后use使用数据库,再还原;

7.查看连接情况

show processlist

在这里插入图片描述

可以检查当前有哪些用户连接到我们的数据库,如果查出某个用户不是我们正常登陆的,很有可能我们的数据库被其他人入侵了;所以如果在使用数据库时发现比较慢,可以使用这个指令查看数据库连接情况;

三.MySQL表的操作

1.创建表

create table table_name(field1 datatype,field2 datatype,...
)character set 字符集 collate 校验规则 engine 存储引擎;

说明

  • field:表示列名;
  • datatype:表示列的数据类型;
  • character set:字符集,如果没有指定字符集,就以所在的数据库的字符集为准;
  • collate:校验规则,如果没有指定校验规则,也是以所在的数据库的校验规则为准;
  • engine:存储引擎不同,创建表的文件不一样

示例

create table s1(name varchar(10),gender char(2),age int);

在数据库test1中创建一个s1表,然后查看对应的test1目录下的文件:

在这里插入图片描述

可以发现test1目录下多了一个表文件s1.ibd因此创建表实际上就是在对应的目录下创建文件

因为创建表s1时,没有指定存储引擎,可以通过指令查看默认的存储引擎是哪个:

show create table 表名

在这里插入图片描述

根据图中的内容可以发现,默认采用的存储引擎是InnoDB

而前面提到不同的存储引擎,会创建不同的表文件,所以再创建一个其他存储引擎的表来对比看看:

create table s2(name varchar(10),gender char(2),age int)engine MyISAM;

可以发现存储引擎为MyISAM的表s2会创建三个不同的文件

在这里插入图片描述

2.查看表结构

desc 表名

在这里插入图片描述

  • field:字段名
  • type:字段类型
  • null:是否允许为空
  • key:索引类型
  • default:默认值
  • extra:扩充

3.修改表

在实际项目中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等;以及各种需求添加字段,删除字段等,这时候就需要对表进行修改。

这里直接展示示例

  • s1表中添加两条记录
 insert into s1 values('李四','男',30),('王五','男',18);

在这里插入图片描述

  • s1表中添加一个新字段

添加关键字add

alter table s1 add address varchar(30) comment '地址' after age;

在这里插入图片描述

插入新字段后,对原来的数据没有影响,依然存在。

  • 修改字段name长度变为60

修改字段类型关键字modify

alter table s1 modify name varchar(60);

在这里插入图片描述

  • 删除gender

删除关键字drop

alter table s1 drop gender;

在这里插入图片描述

注意:删除字段时一定要小心,删除字段及其对应的列数据就全没了。

  • 表名重命名为test1

重命名关键字rename

alter table s1 rename to test1;

在这里插入图片描述

to可以省略。

  • 将字段name列修改为xingming

修改字段名关键字change

alter table test1 change name xingming varchar(60); --新字段需要完整定义

在这里插入图片描述

4.删除表

drop table [if exists] 表名;

删除多个表时,表名之间用逗号隔开;

以上就是关于MySQL基础了解以及库和表的相关操作的讲解,如果哪里有错的话,可以在评论区指正,也欢迎大家一起讨论学习,如果对你的学习有帮助的话,点点赞关注支持一下吧!!!

http://www.xdnf.cn/news/1198189.html

相关文章:

  • 2.苹果ios逆向-Windows电脑端环境搭建-Conda安装和使用(使用Conda来管理多个Python环境)
  • LeetCode第350题_两个数组的交集II
  • 图像处理:第二篇 —— 选择镜头的基础知识及对图像处理的影响
  • 代码随想录算法训练营二十八天|动态规划part01
  • ArkTS 模块通信全解析:用事件总线实现页面消息联动
  • LeetCode第349题_两个数组的交集
  • 【LeetCode】LRU 缓存 题解
  • MySQL 全详解:从入门到精通的实战指南
  • LeetCode 刷题【16. 最接近的三数之和、17. 电话号码的字母组合】
  • 【前端】【vscode】【.vscode/settings.json】为单个项目配置自动格式化和开发环境
  • 关系与逻辑运算 —— 寄存器操作的 “入门钥匙”
  • 分布式系统中Token续期问题解决方案
  • AIC 2025 热点解读:如何构建 AI 时代的“视频神经中枢”?
  • 四、搭建springCloudAlibaba2021.1版本分布式微服务-加入openFeign远程调用和sentinel流量控制
  • 嵌入式——单片机的独立按键
  • git stash 命令详解
  • leetcode_560 和为K的子数组
  • C语言——————学习笔记(自己看)
  • 2025.7.27总结—新励成
  • Leetcode 3629. Minimum Jumps to Reach End via Prime Teleportation
  • 学习游戏制作记录(改进投掷剑的行为)7.27
  • 孤儿进程、僵尸进程和守护进程
  • 【element-ui】HTML引入本地文件出现font找不到/fonts/element-icons.woff
  • Android CameraX 使用指南:简化相机开发
  • 从零搭建3D激光slam框架-基于mid360雷达节点实现
  • [10月考试] C
  • 论文阅读-IGEV
  • Java进阶7:Junit单元测试
  • Windows10系统使用Cmake4.1.0构建工具+Visual Studio2022编译Opencv4.11教程
  • LabelImg:简洁高效的图像标注工具和下载