【MySQL】对表结构进行增删查改的操作
表的操作
- 前言
- 正式开始
- 建表
- 查看表
- show tables;
- desc xxx;
- show create table xxx;
- 修改表
- 修改表名 rename to
- 对表结构进行修改
- 新增一个列 add
- 对指定列的属性做修改 modify
- 修改列名 change
- 删除某列 drop
- 删除表 drop
前言
前一篇讲了库相关的操作,如果你不太懂,可以先看看上一篇:【MySQL】库的相关操作 + 库的备份和还原
本篇主要讲解对表的增删查改工作。
正式开始
建表
先给出这张表:
先来创建一张表让你看看,首先创建一个数据库:
前面博客讲过,创建一个数据库就是在配置文件中的datadir目录下创建一个同名目录:
还会有一个文件来保存其字符集和校验规则的:
这里就不再说为啥了,不知道为啥的同学可以看这篇:数据库基本概念
在db_test中创建一张表,我这里直接给出复杂的:
来解释解释。
建表的时候列的列名和列类型都放在()中,列名在前,列类型在后,列类型后面跟的comment就像平时写代码的注释一样。各个列之间用,间隔,注意最后一列后面不要加,。
charset就是字符集,collate就是校验规则,engine就是存储引擎。
字符集、校验规则、存储引擎在默认情况下都是有的,字符集和校验规则如果不指明就会用数据库的默认字符集和校验规则,存储引擎在配置文件中就已经搞好了。
创建数据库的时候如果不指明数据库的字符集和校验规则就会直接用配置文件中的字符集和其对应的默认校验规则。
关于配置文件我刚刚给的那篇博客中也有,这里再给出来:
这里我的配置文件中字符集为utf8,默认存储引擎为InnoDB。
不过我上面创建表的时候指明了字符集、校验规则、默认存储引擎,所以就会直接按照我给出来的:
字符集为utf8,校验规则为utf8_general_ci,存储引擎为MyIsam。
存储引擎不同会有什么区别呢?
当前这个表创建好这个表之后会多出三个文件:
再来创建一个新的,存储引擎用InnoDB:
注:上面的完全是可以写在一行的,不过这样写起来更美观。
都是默认的,字符集utf8,校验规则utf8_general_ci,存储引擎InnoDB。
再看多了几个文件:
可以看到新增了两个文件。
第一个user用的是MyIsam,创建出了三个文件。
第二个用的是InnoDB,创建出了两个文件。
不同存储引擎对应磁盘文件个数是不一样的,MyIsam是3个,InnoDB是2个,后缀MY开头的就是MyIsam的文件,D表示Data,MYD后缀就MyIsam的数据文件,MYI是MyIsam的索引文件。后缀i开头的是InnoDB的文件,InnoDB是将数据和索引放在一块存的,所以文件个数不一样。后续我讲索引的博客会详谈这一点。
这里最重要的是知道create table可以创建表就行。
后面还可以加上if not exists:
因为前面有user2,所以不会成功的,里面的字段还是不变:
这里desc是查看表的一个操作,等会就说。
查看表
首先用select database()来查看你现在选中的是哪一个数据库。
这里就是我刚刚创建出来的数据库。
show tables;
show tables可以查看你在这个数据库中创建的所有表:
desc xxx;
decs xxx; 可以查看xxx表的详细信息:
这里面只要知道前面两列的Field、Type(其中的varchar这样的类型在下一篇讲类型的时候说)就行,后面的四个字段Null、Key、Default、Extra我也是会在后面索引的博客中再细说。
不过这里还有一些东西看不到,比如说注释、字符集、校验规则啥的看不到,想要看到的话用:
show create table xxx;
直接用show create table xxx; 看起来有点难受:
可以将;改成\G:
这样可以在现实的时候去掉一些不必要的字段。
上面的 show create table xxx; 可以看到创建表时候的详细信息,所以每个表的列字段属性,查看表的详细信息,现在都能看到了,但有个小问题,当时创建表的时候可不是这里 show create table xxx;显示出来的这样写的,因为mysqld会对你的指令做词法语法分析,可能你刚开始写的不太标准,它就会给你转化成更标准的写法。既然能查到,肯定也是将这些操作记录下了。
修改表
在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。
都是这样的格式:
alter table 表名 操作 ...
修改表名 rename to
把刚刚的user改成User:
其实不用加to也可以:
对应目录下文件名也会被修改:
对表结构进行修改
来往其中插入点数据:
新增一个列 add
新增一个列,假如说用来保存用户的一张图片的路径。(假如说图片在系统的某个路径下,现在不想在数据库中保存图片,而是保存图片的路径,所以新增一个列来保存路径)。
add就是新增一个列,其中after表示插入到哪一列的后面。
其实默认就是在最后一列插入:
指定:
注意不能插入重名的:
再来查看一下User的数据:
其中新增列的数据为空。在这个列新增之前没有这个属性,所以默认就是空,对原来的字段是不影响的。
show create:
可以看到新增了一列。
对指定列的属性做修改 modify
还是User:
比如说我要对name这一列做修改,将varchar的长度由20改为60。
这里将长度改长,并不会影响表中的数据:
再show一下:
可以看到注释丢了,这里改不是该一部分,而是将原来的属性字段全部覆盖掉。
修改列名 change
注意这里改列名和改表名要去分开,不要搞混了。
前面的rename to进行修改表名字的时候是原名在rename to前,新名在rename to后。
这里是都在change后面,原名后面跟新名。
注意不能修改成重名的:
删除某列 drop
还是User:
删掉密码那一列:
select:
可以看到整列的数据都没了。
注意,删除某一列,这一列的数据都会丢失,所以删除的时候一定要谨慎,没用的再删,或者备份一下。
到这里就完了,修改表结构就这三个操作,增删改,没有查,查是用desc、select、show create table查看整个表。
删除表 drop
直接给例子了:
记住,修改表和删除表轻易不要做,数据库本身在业务中是最靠近底层的,底层的东西一边,上层的东西就要跟着变,非常麻烦,表中的类属性、名称等的改变会直接决定上层要不要变,数据库名字一改,那么用到这个数据库的软件就都要改,如果出现开发到一半要改表结构,那上层的逻辑就会受影响。前期在开发前一定要把这些东西讨论清楚。
前面提到了DDL(定义)、DML(操纵)、DCL(控制),那么本篇中表的操作属于哪一个呢?
注意,表的操作都是属于定义表结构的范畴,所以是DDL。
建库、建表都是对库、表的结构做操作,并没有对表中的内容做操作,所以都是DDL。
关于表的操作,该讲的都讲了,后续会对本篇中的一些坑做补充。
到此结束。。。
相关文章:

【MySQL】对表结构进行增删查改的操作
表的操作 前言正式开始建表查看表show tables;desc xxx;show create table xxx; 修改表修改表名 rename to对表结构进行修改新增一个列 add 对指定列的属性做修改 modify修改列名 change 删除某列 drop 删除表 drop 前言 前一篇讲了库相关的操作,如果你不太懂&…...

Hadoop原理,HDFS架构,MapReduce原理
Hadoop原理,HDFS架构,MapReduce原理 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,…...

【Spring Boot】035-Spring Boot 整合 MyBatis Plus
【Spring Boot】035-Spring Boot 整合 MyBatis Plus 【Spring Boot】010-Spring Boot整合Mybatis https://blog.csdn.net/qq_29689343/article/details/108621835 文章目录 【Spring Boot】035-Spring Boot 整合 MyBatis Plus一、MyBatis Plus 概述1、简介2、特性3、结构图4、相…...
Hafnium之强制性的接口
安全之安全(security)博客目录导读 目录 一、FFA_VERSION 二、FFA_FEATURES 三、FFA_RXTX_MAP/FFA_RXTX_UNMAP 四、FFA_PARTITION_INFO_GET 五、FFA_PARTITION_INFO_GET_REGS...

计算机视觉:使用opencv实现银行卡号识别
1 概述 1.1 opencv介绍 OpenCV是Open Source Computer Vision Library(开源计算机视觉库)的简称,由Intel公司在1999年提出建立,现在由Willow Garage提供运行支持,它是一个高度开源发行的计算机视觉库,可以…...

【Proteus仿真】【Arduino单片机】简易计算器设计
文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用PCF8574、LCD1602液晶、4*4矩阵键盘等。 主要功能: 系统运行后,操作矩阵按键可实现简单四则运算。 二、软件设计 /* …...

pychon/PIL/opencv/json学习过程中遇到的问题
1. 使用PIL.Image读取图片 注意:pytorch中对图像预处理是transforms的输入必须是PIL格式的文件,使用cv2读取的图片就按照第二条的代码处理(3通道合并、归一化处理) from PIL import Image img Image.open("test1.jpg"…...

YOLO目标检测——番茄数据集下载分享【含对应voc、coco和yolo三种格式标签】
实际项目应用:番茄检测数据集说明:番茄目标检测数据集,真实场景的高质量图片数据,数据场景丰富标签说明:使用lableimg标注软件标注,标注框质量高,含voc(xml)、coco(json)和yolo(txt)三种格式标签…...
(JAVA)线程
线程的创建 方式一:Thread public class dome {public static void main(String[] args) {MyThread myThread new MyThread();myThread.start();for(int i1;i<5;i){System.out.println("主线程"i);}} }public class MyThread extends Thread{Overri…...
【深度学习环境】windows安装 NVIDIA Docker
摘要 不要安装 Docker Desktop!我们将在 Ubuntu 中自行安装 Docker。 请安装 Windows 10 Insider Build 或 Windows 11 (Beta也行)。(稳定发行版无法在 WSL 2 中使用 GPU) 请安装 WSL 2 w/Ubuntu 20.04 或同等版本。…...
【微信小程序】自定义组件(三)
自定义组件 插槽1、什么是插槽2、单个插槽3、定义多个插槽 父子组件之间的通信1、父子组件之间的通信的3种方式2、事件绑定3、behaviors 插槽 1、什么是插槽 在自定义组件的wxml结构中,可以提供一个<solot> 节点(插槽),用…...

Python语言:经典案例分析讲解2
例题1:文件的操作 例题2:调用函数求偶数之和 例题3:调用函数并使用递归的方法求斐波那契数前N项之和 题1: 以只写的模式打开文件test.txt,写入"Python",关闭文件。 代码如下: f open("E:/…...

dbeaver连接别人的数据库没有表
1.概念 非缺省的数据库: 通常是指在一个数据库管理系统(DBMS)中,除了系统默认创建的数据库之外的其他用户创建或自定义的数据库。许多数据库系统在安装后会创建一个默认数据库,例如MySQL中的mysql数据库,…...

EXIT(1)
EXTI介绍 EXTI是片上外设 NVIC是cpu内的外设 回忆起之前的GPIO和AFIO 我们是如何检测按键按下的 我们是一直用while循环读取IDR寄存器的对应位置的值 一直检测判断按键是否被按下 那么是否有第二种方式检测按键是否被按下了呢? 通过EXTI 当EXTI检测到按键的电平发生…...
Qt信号量用于对共享资源进行同步
定义信号量与缓冲区: const int BufferSize 8; int buffer1[BufferSize]; int buffer2[BufferSize]; int curBuf1; //当前正在写入的Bufferint bufNo0; //采集的缓冲区序号quint8 counter0;//数据生成器QSemaphore emptyBufs(2);//信号量:空的缓冲区…...

在报错中学python something
这里写目录标题 动手学深度学习pandas完整代码数据处理TypeError: can only concatenate str (not "int") to str(fillna填补缺失值) 创建文件夹学习这个数据分组get_dummies实现one hot encode 动手学深度学习pandas完整代码 import osimpor…...
如何调用 DBMS_DISKGROUP 对 ASM 文件进行随机读取
目录 一、概述 二、实现思路与注意点 三、Java Demo 1、直接调用 2、读写异步 一、概述 对于 Oracle Rac 环境下,数据文件大多默认存放在 ASM 共享存储上,当我们需要读取 ASM 上存储的数据文件时可以使用 Oracle 提供的一些方法,比如 ASMCMD CP。但是,对于一些备份场景…...
UART学习
uart.c #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_uart.h" // UART4_TX : PG11 AF6 // UART4_RX : PB2 AF8 void __uart_init() {// GPIOB2 设置为复用功能GPIOB->MODER & (~(0x3 << 4));GPIOB->MODER | (0x2 << 4);G…...

洗地机哪个牌子最好用?洗地机品牌排行榜
近年来,洗地机相当热门,洗地机结合了扫地拖地吸地为一体的多功能清洁工具,让我们告别了传统方式打扫卫生,让我们清洁不再费劲,可是市面上的洗地机五花八门,怎么挑选到一个洗地机也是一个问题,下…...

国际阿里云:Windows实例中数据恢复教程!!!
在处理磁盘相关问题时,您可能会碰到操作系统中数据盘分区丢失的情况。本文介绍了Windows系统下常见的数据盘分区丢失的问题以及对应的处理方法,同时提供了使用云盘的常见误区以及最佳实践,避免可能的数据丢失风险。 前提条件 已注册阿里云账…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...

企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)
目录 🔍 若用递归计算每一项,会发生什么? Horners Rule(霍纳法则) 第一步:我们从最原始的泰勒公式出发 第二步:从形式上重新观察展开式 🌟 第三步:引出霍纳法则&…...
Python的__call__ 方法
在 Python 中,__call__ 是一个特殊的魔术方法(magic method),它允许一个类的实例像函数一样被调用。当你在一个对象后面加上 () 并执行时(例如 obj()),Python 会自动调用该对象的 __call__ 方法…...