【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

在这里插入图片描述
注意这里改列名和改表名要去分开,不要搞混了。
前面的modify进行修改表名字的时候是原名在modify前,新名在modify后。
这里是都在change后面,原名后面跟新名。

注意不能修改成重名的:
在这里插入图片描述

删除某列 drop

还是User:
在这里插入图片描述

删掉密码那一列:
在这里插入图片描述

select:
在这里插入图片描述

可以看到整列的数据都没了。

注意,删除某一列,这一列的数据都会丢失,所以删除的时候一定要谨慎,没用的再删,或者备份一下。

到这里就完了,修改表结构就这三个操作,增删改,没有查,查是用desc、select、show create table查看整个表。

删除表 drop

直接给例子了:
在这里插入图片描述

记住,修改表和删除表轻易不要做,数据库本身在业务中是最靠近底层的,底层的东西一边,上层的东西就要跟着变,非常麻烦,表中的类属性、名称等的改变会直接决定上层要不要变,数据库名字一改,那么用到这个数据库的软件就都要改,如果出现开发到一半要改表结构,那上层的逻辑就会受影响。前期在开发前一定要把这些东西讨论清楚。

前面提到了DDL(定义)、DML(操纵)、DCL(控制),那么本篇中表的操作属于哪一个呢?
注意,表的操作都是属于定义表结构的范畴,所以是DDL。

建库、建表都是对库、表的结构做操作,并没有对表中的内容做操作,所以都是DDL。

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

到此结束。。。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字双向码、密勒码、传号反转(CMI)码、AMI、HDB3的编码规则和功率谱解析+眼图

数字双向码、密勒码、传号反转(CMI)码、AMI、HDB3的编码规则和功率谱解析眼图 本文主要涉及数字双向码、密勒码、传号反转(CMI)码、AMI、HDB3的编码规则,优缺点和功率谱解析以及眼图的分析。关于简单二元码大家可以参考简单二元码…

机带RAM:16G(可用2G)

文章目录 机带RAM 16G(可用2G)一 、问题描述二、解决办法2.1 最大内存设置 2.2 系统激活重启 机带RAM 16G(可用2G) 一 、问题描述 戴尔商务计算机 Windows11系统 16GB内存 之前一直是正常使用的,突然有一天内存占用率…

150. 逆波兰表达式求值

150. 逆波兰表达式求值 原题链接:完成情况:解题思路:参考代码:错误经验吸取 原题链接: 150. 逆波兰表达式求值 https://leetcode.cn/problems/evaluate-reverse-polish-notation/description/ 完成情况&#xff1a…

Mac笔记本打开Outlook提示:您需要最新的版本的Outlook才能使用此数据库

Mac笔记本打开Outlook提示:您需要最新的版本的Outlook才能使用此数据库 故障现象: 卸载旧的office安装新版的office,打开outlook提示:您需要最新的版本的outlook才能使用此数据库。 故障截图: 故障原因:…

中小企业数字化转型进程加速,CRM系统前景如何?

自疫情不断反复之后,中小企业数字化转型进程开始加速。作为当下最热门的企业级应用,CRM客户管理系统的前景还是被看好的。相比于美国企业CRM系统7成的使用率,中国的CRM市场还有很大的发展空间。下面来详细说说,CRM系统的前景如何&…

在R中通过正则化表达式提取向量中的正负数

目录 一、实现代码&#xff1a; 二、运行结果&#xff1a; 三、str_extract()函数介绍材料 一、实现代码&#xff1a; install.packages("stringr") library(stringr) # 创建一个包含正负小数的向量 vec <- c("1.5", "-2.7", "3.8&qu…

Linux系统中的静态库和共享库,以及一些计算机的基础知识

目录 1.库文件 2.静态库 3.共享库 4.静态库与共享库的区别 5.计算机基础知识 6.进程的基础知识 7.主函数的三个参数 1.库文件 1).库文件库是一组预先编译好的方法的集合;Linux系统存储库的位置一般在/lib 和 /usr/lib (64位系统/usr/lib64)库的头文件放在/usr/include 2…

纯CSS实现魔法渐变边框卡片

如图所示&#xff0c;这是一个很炫酷的卡片效果&#xff0c;关键效果在于卡片的边框呈渐变色变化着&#xff0c;在网页中有这样一个卡片相信可以极大的增强用户体验交互。本次文章将解读如何使用纯CSS实现这个炫酷的卡片效果。 基于上面的动图可以分析出以下是本次实现的主要几…

【java零基础入门到就业】第五天:java语言的发展和java语言的具体现实应用场景

文章目录 1、java 语言的发展2、java能干什么2.1 java的三大分类2.2 java能做什么1、java 语言的发展 Java 是一种广泛使用的编程语言,经历了多个阶段的发展。以下是 Java 语言的主要发展阶段: 诞生(1995 年): Java 由 Sun Microsystems(后来被 Oracle 收购)的 James …

YOLO的bounding boxes

YOLO使用了 77 网格 (SS)、2 个bounding boxes (B2) 和 20 个类别 ©。 1.YOLO将输入的图片resize成448 x 448&#xff0c;并且为 S x S&#xff08;S 7&#xff09;个grid&#xff0c;如果物体的中心落入该grid中&#xff0c;那么该grid就需要负责检测该物体。 2.对于每…

关于ASJ系列剩余电流动作继电器的功能介绍-安科瑞 蒋静

1.概述 在工业应用中&#xff0c;剩余电流继电器与外部剩余电流互感器结合使用以检测和评估接地故障电流。它们也可以与保护装置结合使用&#xff0c;以实现电路的断开&#xff0c;从而实现对线路和人员的保护。 2.剩余电流的定义以及危害 剩余电流&#xff0c;是指低压配电线…

制造业工厂MES系统中的设备管理模块

随时工厂数字化建设的大力推进&#xff0c;设备管理的效率得到了很大的提升&#xff0c;特别是作为机加工企业&#xff0c;设备是整个企业非常重要的核心资产。下面是万界星空科技MES系统中的设备管理模块介绍&#xff1a; 1、MES设备管理任务模型 制造企业总是期望设备能够在…

龙芯loongarch64安装grpcio失败解决办法

什么是gRPC gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统用protocol buffers IDL定义一个服务,指定能够被远程调用的方法及其参数和返回值类型 使用protocol buffers 编译器插件,将服务定义的.proto文件,编译成客户端和服务端的代码 …

[EFI]技嘉 Z490 VISION G i5-10500 电脑 Hackintosh 黑苹果引导文件

硬件配置 硬件型号驱动情况主板技嘉 Z490 VISION G CLPC controller Z490芯片组&#xff09;处理器英特尔 Core i5-10500 3.10GHz 六核已驱动内存16GB&#xff08; 威到DDR42655MHz8GBx 2〕已驱动硬盘SSDSC2BB150G7R (150 GB/ 国态硬盘&#xff09;已驱动显卡AMD Radeon RX 58…

2024 AIGC 规划:探索交互体验变革及 智能硬件基础设施篇

TL;DR Run LLM/Embedding on Android: https://github.com/unit-mesh/android-semantic-search-kitInference SDK&#xff1a;https://github.com/unit-mesh/inference 正文&#xff1a; 在过去的一年时间里&#xff0c;国内外大中型公司都在探索、引入了 GenAI / AIGC&#xf…

记一次FastJson报错

文章目录 报错内容原因探寻原因及解决方案 报错内容 起因是一段很普通的字符串转Java对象的代码&#xff0c;在本地和内网测试都没有问题&#xff0c;偏偏外网一跑就报错&#xff0c;错误如下: 报错的代码特别简单&#xff0c;涉及到公司代码这里用测试代码演示&#xff0c;就…

Java简介

一、Java简介 Java是一门面向对象的编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&#xff0c;极好地实现了面向对象…

国内外四款强大的远控使用体验:ToDesk、向日葵、AnyDesk、Microsoft 远程桌面横向比较

目录 一、引言 二、横测体验 1、ToDesk 2、向日葵 3、AnyDesk安力桌 4、Microsoft 远程桌面 三、评测总结与建议 一、引言 随着科技快速发展和数字化进程的驱动&#xff0c;远程控制软件在日常生活和工作中变得愈加广泛。无论是在家办公、技术支持还是远程教育&#xff…

使用Java实现一个简单的贪吃蛇小游戏

一. 准备工作 首先获取贪吃蛇小游戏所需要的头部、身体、食物以及贪吃蛇标题等图片。 然后&#xff0c;创建贪吃蛇游戏的Java项目命名为snake_game&#xff0c;并在这个项目里创建一个文件夹命名为images&#xff0c;将图片素材导入文件夹。 再在src文件下创建两个包&#xff0…

【rl-agents代码学习】01——总体框架

文章目录 rl-agent Get startInstallationUsageMonitoring 具体代码 学习一下rl-agents的项目结构以及代码实现思路。 source: https://github.com/eleurent/rl-agents rl-agent Get start Installation pip install --user githttps://github.com/eleurent/rl-agentsUsage…