【MySQL】对表结构进行增删查改的操作

news2024/12/22 20:58:37

表的操作

  • 前言
  • 正式开始
    • 建表
    • 查看表
      • 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。

关于表的操作,该讲的都讲了,后续会对本篇中的一些坑做补充。

到此结束。。。

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

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

相关文章

麒麟信安:助力医疗行业操作系统自主创新,提升可靠性与安全性

应用场景 湖南省康复医院是省卫生健康委直属公立三级康复医院,也是全省唯一一所集预防、医疗、康复、科研、教学、健康管理为一体的省级三级公立康复医院。 湖南省康复医院使用的医慧管平台由湖南蓝途方鼎科技有限公司开发,利用互联网技术,…

好题分享(2023.11.5——2023.11.11)

目录 前情回顾: 前言: 题目一:补充《移除链表元素》 题目二:《反转链表》 解法一:三指针法 解法二:头插法 题目三: 《相交链表》 题目四:《合并两个有序数列》 题目五&…

vmware 修改主机名称 hadoop 服务器环境配置(一)

如何在虚拟机配置主机名称: 1. 如图所示在/etc 文件夹下有个hosts文件。追加映射关系: #关系 ip地址 名称 192.168.164.20 hadoop20 2. 保存后,重启reboot即可

炸裂!Sklearn 的 10 个宝藏级使用方法!

大家好,本次给大家介绍10个Sklearn方法,比较小众但非常好用。 1️.FunctionTransformer 虽然Sklearn中有很多内置的预处理操作可以放进pipeline管道,但很多时候并不能满足我们的需求。 如果是比较简单并且通过一个函数可以实现需求的情况&…

考前须知-2024年上半年系统集成项目管理工程师

可以看看23年下半年软考集成考试的难度 一、考试时间安排: 集成考试一年会考2次,上半年一次、下半年一次。考试时间4h,分批进行 系统集成项目管理工程师教材共655页,分为23章。其中,前3章为信息化与系统集成基础知识的内容,第4章…

4.5 构建onnx结构模型-Reshape

前言 构建onnx方式通常有两种: 1、通过代码转换成onnx结构,比如pytorch —> onnx 2、通过onnx 自定义结点,图,生成onnx结构 本文主要是简单学习和使用两种不同onnx结构, 下面以pow 结点进行分析 方式 方法一&am…

C语言之初阶指针

一、指针: 其实按照我的理解,当我们写c语言程序的时候,创建的变量,数组等都要在内存上开辟空间。而每一个内存都有一个唯一的编号,这个编号也被称为地址编号,就相当于,编号地址指针。 二、指针…

STM32F4 GPIO端口二极管作用——二极管钳位作用

如上图所示,有两个保护二极管,用于保护内部电路,防止I\O引脚外部过高或者过低的电压输入时造成内部电路损坏。 具体来讲:当引脚输入电压高于VDD时,上面的二极管导通,输入点电压被钳位到约VDD0.7V&#xff…

python打包部署脚本

linux可使用expect来实现自动交互,windows想要写出同样的功能脚本,只能使用python或者安装ActiveTcl 1、安装python Microsoft Store搜索python直接安装,默认会直接添加到环境变量https://www.python.org/官网下载,点击安装时会提…

比尔·盖茨谈他对软件应用和人工智能代理未来的见解

比尔盖茨在他的 Gatesnotes 网站中发表了一篇文章,分享了他对软件应用和人工智能代理未来的见解。他认为人工智能代理将大行其道,在接下来的五年里,这将完全改变。你不需要为不同的任务使用不同的应用程序。你只需用日常语言告诉你的设备你想…

基于Python优化图片亮度与噪点

支持添加噪点类型包括:添加高斯噪点、添加椒盐噪点、添加波动噪点、添加泊松噪点、添加周期性噪点、添加斑点噪点、添加相位噪点,还提供清除噪点的功能。 我们先看一下实测效果:(test.jpg为原图,new.jpg为添加后的图片…

基于JavaWeb+SSM+校园零售商城微信小程序系统的设计和实现

基于JavaWebSSM校园零售商城微信小程序系统的设计和实现 源码获取入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 摘 要 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应…

HRNet关键点检测

HRNet是一种用于关键点检测的网络架构,它具有一些优点和缺点。 优点: 可以保持高分辨率:HRNet将高分辨率到低分辨率的子网并联连接,而不是像大多数现有解决方案那样串联连接。因此,HRNet能够保持高分辨率&#xff0c…

动态修改hosts

前言 因工作需要频繁变更hosts, 故须自己实现一个动态管理器, 市面上其实已经有了类似的软件,比如switchhosts!但因为不好集成其他功能(如远程连接KVM),所以还是决定自己开发一套。 原理 使用之前强烈建…

tcpdump抓包的字节数量与ethtool统计数据不同的原因

情况介绍 在进行RDMA抓包流量分析时,我使用ethtool工具统计了RDMA网卡的流量发送数据数量,然后使用tcpdump进行抓包。 经过分析发现,tcpdump得到的数据数量总是大于ethtool得到的数据数量,而且每个数据包会多出4个字节。 分析 …

Juniper PPPOE双线路冗余RPM配置

------------------ 浮动静态路由 set routing-options static route 0.0.0.0/0 next-hop pp0.0 qualified-next-hop pp0.1 preference 10 ----------------- RPM测试的内容,包括从哪个接口发起测试,测试ping等等 #指定探针类型用ICMP请求 #探测的目标地址 #探测间隔 #探测阈…

Java第十八章Swing程序设计

一、Swing概述 Swing 是 Java 平台的用户界面(UI)工具包,它是一种现代化的、跨平台的 UI 工具包,可以使用各种操作系统上的 Java 虚拟机(JVM)来实现,包括 Windows、Linux 和 MacOS 等。Swing 提…

CopyOnWriteArrayList内存占用过多

目录 一、CopyOnWriteArrayList二、CopyOnWriteArrayList的适用场景三、CopyOnWriteArrayList内存占用过多的解决方法四、CopyOnWriteArrayList.add()源码分析 大家好,我是哪吒。 一、CopyOnWriteArrayList CopyOnWriteArrayList是Java中的一个线程安全的ArrayLis…

docker小技能

文章目录 I 预备知识Docker组成命名空间 (进程隔离)II 常用命令2.1 案例:流水线docker 部署2.2 删除没有使用的镜像2.3 shell 不打印错误输出2.4 阿里云流水线/jenkins忽略shell步骤中的报错https://www.runoob.com/docker/docker-architecture.html I 预备知识 Docker组成…

ElementUI表格el-table自适应高度(表头表尾固定不动)

ElementUI表格el-table自适应高度&#xff08;表头表尾固定不动&#xff09;&#xff0c;内容只在中间滚动&#xff0c;效果如图&#xff1a; 实现代码 <div class"mt-10" :style"{height:tableHeight}"><div class"operation-bar">…