当前位置: 首页 > 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.lryc.cn/news/601489.html

相关文章:

  • DP之背包基础
  • SignalR 全解析:核心原理、适用场景与 Vue + .NET Core 实战
  • ASP.NET Core 高并发万字攻防战:架构设计、性能优化与生产实践
  • 一个MySQL的数据表最多能够存多少的数据?
  • 迷宫生成与路径搜索(A算法可视化)
  • 调用通义千问大模型实现流式对话
  • 用 Python 轻松实现时间序列预测:Darts N-BEATS
  • 安卓怎么做一个像QQ一样的开关切换控件
  • 墨者:通过手工解决SQL手工注入漏洞测试(MongoDB数据库)
  • 机器学习特征选择 explanation and illustration of ANOVA
  • net8.0一键创建支持(Redis)
  • 【机器学习】第七章 特征工程
  • 基于大模型的预训练、量化、微调等完整流程解析
  • CLAP文本-音频基础模型: LEARNING AUDIO CONCEPTS FROM NATURAL LANGUAGE SUPERVISION
  • PDF文件被加密限制怎么办?专业级解除方案分享
  • 51核和ARM核单片机OTA实战解析(一)
  • 一分钟部署一个导航网站
  • MCU 通用AT指令处理框架
  • PDF转图片实用指南:如何批量高效转换?
  • 创建的springboot工程java文件夹下还是文件夹而不是包
  • 内网服务器实现从公网穿透
  • 单片机ADC采集机理层面详细分析(二)
  • 零基础学习性能测试第五章:JVM性能分析与调优-多线程检测与瓶颈分析
  • 【C语言网络编程基础】TCP 服务器详解
  • Rust与Java DynamoDB、MySQL CRM、tokio-pg、SVM、Custors实战指南
  • 墨者:通过手动解决SQL手工注入漏洞测试(MySQL数据库)
  • Wireshark TS | 发送数据超出接收窗口
  • 双面15.6寸智能访客机硬件规格书及对接第三方接口说明
  • 力扣 hot100 Day57
  • 数据江湖的“三国演义”:数据仓库、数据湖与湖仓一体的全景对比