【MySQL】数据库和表的操作详解

目录

一、数据库:

1、查看数据库:

2、创建数据库:

3、删除数据库:

4、数据库的编码问题:

5、校验规则对数据库的影响:

6、修改数据库:

7、库的备份与恢复:

8、查看链接情况:

二、表的操作:

1、创建表:

2、查看表:

3、修改表:

插入数据:

修改表名:

增加字段属性:

​编辑

修改字段的数据类型:

修改字段的名称:

删除某一字段:

表的删除和备份:

删除表:


一、数据库:

1、查看数据库:

首先,在创建数据库之前,要先查看当前有哪些数据库:

show databases;

这些本质是在Linux中,/var/lib/mysql目录下创建的目录

当创建了很多数据库,我们无法知道是正在使用哪一个数据库的,使用需要用SQL语句

select database();

这样,在use后,使用SQL语句就能够查看当前正在使用哪一个数据库了

如何知道创建数据库时的详细信息:

show create database 数据库名;

理解:

test1创建时,可以看到关键字是大写的,可以这样也可以不这样

数据库的名字是用引号引起来了,是为了和关键字区分

后面/**/不是注释,其表示当MySQL版本大于4.1.00的时候,执行其后面SQL语句,当MySQL版本大于8.0.16的时,执行其后面的语句

2、创建数据库:

使用SQL语句:

create database [if not exists] 数据库名;

如果创建重复名的数据库,就会出错,可以加上if not exists选项,它的意思是如果不存在数据库就创建

当我们加上这个选项后,可以发现没有error了,取而代之的是warning

3、删除数据库:

使用SQL语句:

drop database 数据库名;

删除数据库在Linux下的体现就是删除对应路径下的目录

如果删除不存在的数据库是会报错的,如果想让这个报错改为警告可以加上if exists

注意:

一般不要轻易删除数据库,毕竟这里和Linux中删除目录差不多,如果删除,里面的所有数据就都没了

4、数据库的编码问题:

在系统创建的时候,有两个编码集合,字符集和校验集

字符集

字符集表示数据库的内容写的时候采用的编码,用于规定未来存储时的编码格式

查看MySQL中默认的字符集用SQL语句:

show variables like 'character_set_database';

查看MySQL支持的所有字符集:

使用SQL语句:

show charset;

校验集

校验集表示在已经有数据,进行读的时候以特定的方式去读,对读到的数据做特定的解释,规定数据查询时的校验规则

查看MySQL中默认的校验集用SQL语句:

show variables like 'collation_database';

查看MySQL支持的所有字符集:

show conllation;

使用SQL语句:(有很长,这里只截取部分)

使用指定编码创建数据库

// 设置字符集
create database 数据库名称 [charset=字符集 || character set 字符集];
// 设置校验集
create database 数据库名称 charset=utf8mb4 collate 校验集;

5、校验规则对数据库的影响:

首先,我们要知道:表是继承其所在数据库的编码格式的

那么,我们创建两个数据库,分别用不同的校验规则:其中一个是区分大小写的,一个是不区分大小写的

//不区分大小写
create database test1 collation utf8_general_ci;
//区分大小写
create database test2 collate utf8_bin;

接着,分别在里面创建一张表,并且在表中插入大写和小写的a

其中test1是不区分大小写的,test2是区分大小写的

在插入后,直接查找表中对应的a,

select * from testtable where id='a';

我们应该会发现:如果是test1的话,查找a会出现a和A;如果是test2的话,查找a只是出现a

如上,结果如期

6、修改数据库:

修改数据库编码格式:

使用指令:

alter databas 数据库名 charset=修改后的字符规则 COLLATE=修改后的校验规则

如将test1进行的字符编码规则和字符校验规则进行修改

alter database test1 charset=gbk collate gbk_chinese__ci;

7、库的备份与恢复:

备份:

将一个数据库进行备份采用SQL语句:

mysqldump -P端口号 -u用户名 -p 密码 -B 数据库名1 数据库名2 ...  > 数据库备份存储的文件路径

接下来举个例子:

mysqldump -P3306 -uroot -p -B test1 > test.sql

如上,这就是对我们的test1数据库进行备份了,对这个文件进行查看,我们可以知道其是备份了我们的SQL语句和数据

恢复:

恢复的话是在MySQL客户端中,用SQL语句:

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

我们已经把test1数据库备份好了,那么我们接下来将这个test1数据库删了,然后在恢复:

然后在执行SQL语句进行数据库的恢复

source /home/silence/MySQL/test.sql;

这样,我们的test1数据库就恢复了(包括里面的表)

也可以只备份表

mysqldump -u root -p -P 端口 数据库名 表名 > 目标路径(含文件)

8、查看链接情况:

MySQL支持多用户的访问,也可能会被恶意访问,可以通过如下SQL语句进行查看MySQL语句的链接

show processlist;

二、表的操作:

创建表是在数据库中创建的,所以在进行表的创建的时候,要先use数据库表示进入对应数据库

1、创建表:

我们创建表的SQL语句是:

create table [if not exists] 表名(成员名1 成员类型1 [comment '注释信息'],成员名2 成员类型2 [comment '注释信息'],成员名3 成员类型3  [comment '注释信息']
)[charset=字符编码] [collate=校验规则] [engine=引擎名];

以上comment和其注释信息是可以忽略的,并且下面的charset,collate,engine也是可以不写的,如果不写的话就为系统默认

这里采用MyIsam引擎

这里采用InnoDB引擎

当创建成功后,发现person1和person2在Linux下,显示的目录是不一样的,现在我只需要知道不同的引擎在Linux下的显示是不一样的,在后面的MySQL索引在讲解

2、查看表:

查看表之前要在数据库中,所以要先保证在数据库中,然后在进行表的查看

SQL语句:

show tables;

这是进行表的查看,表示当前数据库中有哪些表

desc 表名;

这个SQL语句是查看表的详细信息

  • Field表示列名
  • Type表示类型
  • Null表示是否可为空
  • Key表示是否存在 主键/外键/唯一键 约束
  • Default表示是否有默认值
  • Extra表示额外信息

如果想看建表时的信息,创建表的时候更详细的信息,比如所采用的字符编码或者校验码或者所使用的引擎,那就需要使用:

show create table 表名 \G

3、修改表:

插入数据:

在修改前,表中需要有数据,那么首先我们向我们的表中插入数据

insert into 表名 [(字段1,字段2, ...)] values (数据1,数据2, ... 要和前面对应);

其中,如果属性名不写就是默认所有的

如下,这里插入两行数据

创建成功后可以使用SQL语句来查看

select * from 表名;

修改表名:

SQL语句:

alter table 原表名称 rename [to] 修改后的表名称;

如下,当我们对表名进行修改后,再进行查看,发现修改成功

增加字段属性:

如上,原本有3个字段属性,并且在查看创建的时候能够看到我们给每一个字段属性的备注

接下来增加字段属性:

用SQL语句:

alter table 表名 add 字段名称 数据类型 备注;

这样就能够通过show命令查看到了增加的字段以及备注了

并且在表中的数据也会增加,由于我们没有插入数据,所以是空

在SQL语句中,最后面还可以增加after 字段属性表示将数据增加到对应字段属性后

alter table 表名 add 字段名称 数据类型 备注 after 字段属性;

如果想插在第一行,将after和其后面的字段属性换成not null first

修改字段的数据类型:

就是修改上述的Type用到SQL语句:

alter table 表名 modify 待修改字段名 新的数据类型 备注;

实际上,这是覆盖式的修改的,并不是只将数据类型修改

如上,这里修改的时候没有加上对应的备注,在修改后查看发现原来的备注没有的,证明这里是覆盖式的修改的

修改字段的名称:

用SQL语句:

alter table 表名 change 原字段名 修改后字段名 数据类型 备注;

如下是将birth改为birthday,这里也是覆盖修改的,如下我没有加备注,当再次看的时候也没有了,当然也可以自己重新定义

并且类型也是重新定义的

删除某一字段:

alter table 表名 drop 字段名称;

将ages删除

表的删除和备份:

因为表的删除是不可逆的,所以,在删除表之前最好做一下备份

mysqldump -P 端口号 -u用户名 -p 数据库名 表名1 表名2 ... > 表备份存储的文件路径

将表备份并存储在当前目录下:

恢复:

source 表备份存储的文件路径

当恢复后就都回来了

删除表:

drop table 表名称;

当删除后就没了

这是很危险的,当删除表后期所有数据都没了,在开发中不要轻易删除

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

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

相关文章

Docker--Docker镜像原理

docker 是操作系统层的虚拟化,所以 docker 镜像的本质是在模拟操作系统。 联合文件系统(UnionFS) 联合文件系统(UnionFS) 是Docker镜像实现分层存储的核心技术,它通过将多个只读层(Image Laye…

双层Key缓存

双层 Key 缓存是一种针对 缓存击穿 和 雪崩问题 的优化方案,其核心思想是通过 主备双缓存 的机制,确保在热点数据过期时仍能提供可用服务,同时降低对数据库的瞬时压力。以下是其核心原理、实现细节及适用场景的深度解析: 一、核心…

力扣每日打卡 2176. 统计数组中相等且可以被整除的数对(简单)

力扣 2176. 统计数组中相等且可以被整除的数对 简单 前言一、题目内容二、解题方法1. 暴力解法2.官方题解官方也是暴力解法 前言 这是刷算法题的第十三天,用到的语言是JS 题目:力扣 2176. 统计数组中相等且可以被整除的数对(简单) 一、题目内容 给你一…

云服务器和物理服务器

服务器,作为互联网世界中数据存储与处理的关键枢纽,其重要性不言而喻。在众多服务器类型中,云服务器和物理服务器占据了主导地位,它们各自有着独特的特点和应用场景。咱们就来深入探讨一下这两者的区别。

Kubernetes Pod 调度策略:从基础到进阶

文章目录 环境Kubernetes 部署Kubernetes Pod 调度策略Kubernetes Pod 调度策略对照表调度流程经历阶段案例展示生成yaml文件默认调度节点选择器为节点添加标签编写 Deployment 配置文件应用资源并查看调度结果 Node Affinity(节点亲和性)为节点添加标签…

SQLite、MySQL、SQL Server、Oracle 和 PostgreSQL 五种数据库的区别

以下是 SQLite、MySQL、SQL Server、Oracle 和 PostgreSQL 五种主流关系型数据库管理系统(RDBMS)的区别,从多个维度进行对比: 1. 架构与部署 SQLite(Structured Query Language Lite‌): 嵌入式数据库,无服务器架构。数据库存储在一个单一的磁盘文件中。部署简单,适合轻量…

电路安全智控系统与主机安全防护系统主要功能是什么

电路安全智控系统被称为电路安全用电控制系统。电路安全智控系统具备一系列强大且实用的功能。电路安全智控系统能够对总电压、总电流、总功率、总电能,以及各分路的电压、电流、功率、电能和功率因素等进行全方位的监控。在大型工厂的电力分配中,通过对…

使用Lean 4和C#进行数学定理证明与逻辑推理

步骤1:安装与配置环境 安装Lean 4 访问Lean官网或GitHub仓库,按照指南安装Lean 4及配套工具链(如VS Code扩展)。 设置C#开发环境 安装.NET SDK及IDE(如Visual Studio或Rider),确保C#开发环境正…

八股文---MySQl(3)

目录 12.事务的特性是什么?可以详细说一下吗? 回答 13并发事务带来哪些问题?怎么解决这些问题呢?MySQL的默认隔离级别是? 脏读:一个事务读到另外一个事务还没有提交的数据。 不可重复读:一个…

实验五 内存管理实验

实验五 内存管理实验 一、实验目的 1、了解操作系统动态分区存储管理过程和方法。 2、掌握动态分区存储管理的主要数据结构--空闲表区。 3、加深理解动态分区存储管理中内存的分配和回收。 4、掌握空闲区表中空闲区3种不同放置策略的基本思想和实现过程。 5、通过模拟程…

【MySQL】MySQL表的增删改查(CRUD) —— 上篇

目录 MySQL表的增删改查(CRUD) 1. 新增(Create)/插入数据 1.1 单行数据 全列插入 insert into 表名 values(值, 值......); 1.2 单行数据 指定列插入 1.3 多行数据 指定列插入 1.4 关于时间日期(datetime&am…

【MATLAB代码例程】AOA与TOA结合的高精度平面地位,适用于四个基站的情况,附完整的代码

本代码实现了一种基于到达角(AOA) 和到达时间(TOA) 的混合定位算法,适用于二维平面内移动或静止目标的定位。通过4个基站的协同测量,结合最小二乘法和几何解算,能够有效估计目标位置,并支持噪声模拟、误差分析和可视化输出。适用于室内定位、无人机导航、工业监测等场景…

ModbusTCP 转 Profinet 主站网关

一、 功能概述 1.1 设备简介 本产品是 ModbusTCP 和 Profinet(M) 网关(以下简称网关),使用数据映射 方式工作。 本产品在 ModbusTCP 侧作为 ModbusTCP 从站,接 PLC 、上位机、 wincc 屏 等;在 Profin…

《AI大模型应知应会100篇》第25篇:Few-shot与Zero-shot使用方法对比

第25篇:Few-shot与Zero-shot使用方法对比 摘要 在大语言模型的应用中,**Few-shot(少样本)和Zero-shot(零样本)**是两种核心的提示策略。它们各自适用于不同的场景,能够帮助用户在不进行额外训练…

深入理解C++中string的深浅拷贝

目录 一、引言 二、浅拷贝与深拷贝的基本概念 2.1 浅拷贝 2.2 深拷贝 在C++ 中, string 类的深浅拷贝有着重要的区别。 浅拷贝 深拷贝 string 类中的其他构造函数及操作 resize 构造 = 构造(赋值构造) + 构造(拼接构造) cin 和 cin.get 的区别 三、C++中string类的…

在Qt中验证LDAP账户(Windows平台)

一、前言 原本以为在Qt(Windows平台)中验证 LDAP 账户很简单:集成Open LDAP的开发库即可。结果临了才发现,Open LDAP压根儿不支持Windows平台。沿着重用的原则,考虑迁移Open LDAP的源代码,却发现工作量不小…

《软件设计师》复习笔记(11.4)——处理流程设计、系统设计、人机界面设计

目录 一、业务流程建模 二、流程设计工具 三、业务流程重组(BPR) 四、业务流程管理(BPM) 真题示例: 五、系统设计 1. 主要目的 2. 设计方法 3. 主要内容 4. 设计原则 真题示例: 六、人机界面设…

UniRig ,清华联合 VAST 开源的通用自动骨骼绑定框架

UniRig是清华大学计算机系与VAST联合开发的前沿自动骨骼绑定框架,专为处理复杂且多样化的3D模型而设计。基于强大的自回归模型和骨骼点交叉注意力机制,UniRig能够生成高质量的骨骼结构和精确的蒙皮权重,大幅提升动画制作的效率和质量。 UniR…

LeetCode 443 压缩字符串

字符数组压缩算法详解:实现与分析 一、引言 在处理字符数组时,我们常常遇到需要对连续重复字符进行压缩的场景。这不仅可以节省存储空间,还能提升数据传输效率。本文将深入解析一个经典的字符数组压缩算法,通过详细的实现步骤和…

alertManager部署安装、告警规则配置详解及告警消息推送

​ java接受告警请求RestController RequestMapping("/alert") Slf4j public class TestApi {private static final DateTimeFormatter FORMATTER DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");RequestMappingpublic void sendTemplate(HttpServl…