【基础篇】三、MySQL表结构的操作

文章目录

  • Ⅰ. 创建表
    • 1、语法
    • 2、创建表样例
    • 3、创建和其它表一样结构的表
  • Ⅱ. 查看表结构
    • 1、查看数据库中的表
    • 2、查看指定表的属性
    • 3、获取表的创建语句
  • Ⅲ. 删除表
  • Ⅳ. 修改表结构
    • 1、向表中插入新的字段
    • 2、删除表中的字段
    • 3、修改表名
    • 4、修改字段属性

Ⅰ. 创建表

1、语法

create table [if not exists] table_name (
    field1 datatype,
    field2 datatype,
    field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
  • 说明:
    • field:表示列名
    • datatype:表示列的类型
    • character set 字符集:如果没有指定字符集,则以所在数据库的字符集为准
    • collate 校验规则:如果没有指定校验规则,则以所在数据库的校验规则为准
    • engine 存储引擎:指定该表的存储引擎,不指定的话默认使用 /etc/my.cnf 配置文件中设置的存储引擎。

2、创建表样例

​ 下面我们创建两个不同存储引擎的表,来看看区别:

在这里插入图片描述

  • 不同的存储引擎,创建表的文件不一样
    • user1 表存储引擎是 MyISAM ,在数据目录中有三个不同的文件,分别是:
      • users1.frm:表结构
      • users1.MYD:表数据,MY 表示 MyISAM,D 表示 Data
      • users1.MYI:表索引,MY 表示 MyISAM,I 表示 Index
    • user2 表存储引擎是 Innodb,在数据目录中有两个不同的文件,分别是:
      • users1.frm:表结构
      • user2.ibd:表的数据和索引

3、创建和其它表一样结构的表

create table 表名1 like 表名2;

​ 就是创建一个表1,它的结构是和表2一样的!(但是是没有数据的,只是表结构一样)

Ⅱ. 查看表结构

1、查看数据库中的表

show tables;

在这里插入图片描述

2、查看指定表的属性

desc tb_name;

在这里插入图片描述

3、获取表的创建语句

show create table tb_name \G;

​ 一般我们会在最后加一个 \G,让打印出来的格式容易看懂一些!

在这里插入图片描述

Ⅲ. 删除表

drop [temporary] table [if exists] tb_name [, tb_name, ...] 

在这里插入图片描述

切记,谨慎删除!

Ⅳ. 修改表结构

​ 在项目实际开发中,可能需要修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表结构!

​ 注意,这并不是与表内容打交道,而是与表结构打交道

​ 并且我们在开发的时候,最好是情况是一开始就定好表的结构,不要在后面频繁的去改动表的结构,因为一旦改动,上层的代码中也是需要修改的,这很可能导致 bug 的产生!

1、向表中插入新的字段

alter table tablename add column_name datatype;

​ 在上面的语法中,您需要将 tablename 替换为要插入字段的表的实际名称,column_name 替换为要插入的字段的名称,data_type 替换为字段的数据类型。

​ 举个例子,我们先向 user1 表中插入两条数据:

在这里插入图片描述

​ 接着,我们此时要向 user1 表中新增一个字段也就是一个列,叫做 path,用来存放图片的路径(可能是 linux 目录下的某个文件路径,这个不重要),此时我们就要用上面的语句进行操作:

在这里插入图片描述

​ 可以看到,我们插入了新字段之后,每行中这个新字段的内容都默认是空的,并且对原来表中的内容是没有影响的

2、删除表中的字段

alter table tablename drop column_name;

​ 在上面的语句中,将 tablename 替换为要删除字段的表的名称,将 column_name 替换为要删除的字段的名称。

​ 注意,删除字段将永久删除该字段及其相关数据,因此在执行此操作之前,请确保已经备份了相关数据,并且明确了删除字段的后果。

​ 比如我们这里将上面插入的新字段 path 删除掉:

在这里插入图片描述

3、修改表名

alter table 旧表名 rename to 新表名;

其中语句中的 to 是可以省略的

​ 下面我们先来试试看改改字段的名称,将 user1 改成 user,如下所示:

在这里插入图片描述

4、修改字段属性

​ 这里说的属性可能是字段名字、字段大小、字段类型等等,但是有一个共同特点,在修改这个字段的某个属性的时候,必须也要重新携带上其它属性的值。比如说我们要修改字段的大小,那么此时如果还设置了注释的话,如果不携带上之前的注释,那么修改完之后只会被覆盖为空!

​ 说的可能比较绕,可以结合下面的例子!

​ 以下是一些常见的字段属性修改操作的示例:

  • 修改字段名称:

    alter table 表名 rename column 旧字段名 to 新字段名;
    
  • 修改字段数据类型:

    alter table 表名 modify column 字段名 新数据类型;
    
  • 修改字段大小:

    alter table 表名 modify column 字段名 新数据类型(新大小);
    
  • 修改和删除字段默认值:

    alter table 表名 alter column 字段名 set default 新默认值;
    
    alter table 表名 alter column 字段名 drop default;
    
  • 添加和删除字段约束:

    alter table 表名 add constraint 约束名 字段名 约束条件;
    
    alter table 表名 drop constraint 约束名;
    

​ 请注意,这些示例中的 “表名” 是要修改的表的名称,“字段名” 是要修改的字段的名称,“新字段名” 是要修改为的新字段名称,“新数据类型” 是要修改为的新数据类型,“新长度” 是要修改为的新字段长度,“新默认值” 是要设置为的新默认值,“约束名” 是要添加或删除的约束的名称,“约束条件” 是要添加的约束条件。

在执行任何修改操作之前,请确保备份了数据,并谨慎操作以避免数据丢失或不一致

​ 下面举个例子,将 user 表中的 name 字段大小从 20 改为改为 60,看看前后效果:

在这里插入图片描述

​ 这里最值得注意就是在我们查看创建表语句的时候,原来的 comment 注释怎么没了❓❓❓

​ 这就是上面所说的,如果我们在修改的时候不加以携带之前的注释等信息的时候,那些消息也会被覆盖,也就 证明在修改一个表的属性的时候,其它属性也会收到影响!

​ 所以我们在修改的时候要注意带上原来的字段属性值!

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

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

相关文章

小程序租赁系统开发的优势与应用探索

内容概要 在如今这个数码科技飞速发展的时代,小程序租赁系统开发仿佛是一张神奇的魔法卡,能让租赁体验变得顺畅如丝。想象一下,无论你需要租用什么,从单车到房屋,甚至是派对用品,只需动动手指,…

ArcGIS教程(009):ArcGIS制作校园3D展示图

文章目录 数据下载校园3D展示图制作创建要素类矢量化【楼】要素矢量化【绿地】矢量化【范围】矢量化处理打开ArcScene添加动画数据下载 https://download.csdn.net/download/WwLK123/90189025校园3D展示图制作 创建要素类 添加底图: 新建【文件地理数据库】,并修改名称为【…

Secured Finance 与 Parasail 在流动性质押领域开展合作

Secured Finance 宣布与 Parasail 达成战略合作,标志着生态在推进 DePIN 及人工智能生态系统能力的重要里程碑。此次合作将 Parasail 卓越的质押方案与 Secured Finance 在去中心化贷款和稳定币协议方面的专业能力相结合,为 Filecoin 生态系统内的创新金…

pytorch基础之注解的使用--003

Title 1.学习目标2.定义3.使用步骤4.结果 1.学习目标 针对源码中出现一些注解的问题,这里专门写一篇文章进行讲解。包括如何自定义注解,以及注意事项,相信JAVA中很多朋友业写过,但是今天写的是Python哦。。。 2.定义 在 Python…

!倒序数 !

时间限制:C/C 1000MS,其他语言 2000MS 内存限制:C/C 256MB,其他语言 512MB 难度:中等 分数:100 OI排行榜得分:12(0.1*分数2*难度) 描述 输入一个非负整数,输出这个数的倒序数。例如…

【Redis】Redis 典型应用 - 缓存 (cache)

目录 1. 什么是缓存 2. 使用 Redis 作为缓存 3. 缓存的更新策略 3.1 定期生成 3.2 实时生成 4. 缓存的淘汰策略 5. 缓存预热, 缓存穿透, 缓存雪崩 和 缓存击穿 关于缓存预热 (Cache preheating) 关于缓存穿透 (Cache penetration) 关于缓存雪崩 (Cache avalanche) 关…

《燕云十六声》d3dcompiler_47.dll缺失怎么解决?

一、d3dcompiler_47.dll缺失的原因 系统更新或升级:Windows系统的更新可能会更改或删除某些旧版本的DirectX组件,包括d3dcompiler_47.dll。游戏安装不完整:游戏安装过程中可能出现中断或错误,导致某些必要的文件未能正确安装。软…

RT-Thread中堆和栈怎么跟单片机内存相联系

现在RT-ThreadMCU的应用方式越来越普遍,RT-Thread需要配置MCU中的RAM到的系统中,进入系统内存管理,才能提供给基于实时系统的应用程序使用,比如给应用程序提供malloc、free等函数调用功能。在嵌入式软件开发中,我们经常…

Qt https请求报错SSL handshake failed 解决思路方法

先执行下面代码 qDebug() << manager.supportedSchemes();bool bSupp QSslSocket::supportsSsl();auto buildVersion QSslSocket::sslLibraryBuildVersionString();QString version QSslSocket::sslLibraryVersionString();qInfo() << bSupp << buildVers…

从CW32L010看HAL库封装方式

原文地址&#xff1a;从CW32L010看HAL库封装方式

锐捷WLAN产品出货量排名第一!

摘要:2024年Q3锐捷WLAN产品出货量排名第一!锐捷多形态Wi-Fi 7产品重磅出击! 近日, IT市场研究和咨询公司IDC发布《IDC中国企业级WLAN市场跟踪报告,2024年Q3》。报告显示,锐捷WLAN产品在2024年Q3出货量位居行业首位。至此,锐捷WLAN产品在2024年的Q1、Q2、Q3均实现了市场出货量的…

【Maven_bugs】The project main artifact does not exist

背景&#xff1a;我想使用 maven-shade-plugin 打一个 fat jar 时报了标题中的错误&#xff0c;使用的命令是&#xff1a;org.apache.maven.plugins:maven-shade-plugin:shade -pl :shade-project。项目结构如下图&#xff0c;我想把子模块 shade-project 打成一个 fat jar&…

React组件化开发

root.render 函数的参数是一个 HTML 元素或一个组件&#xff0c;所以可以将业务逻辑封装到一个组件中&#xff0c;然后传入到 ReactDOM.render 函数中的第一个参数。 在 react 中&#xff0c;可以使用类的方式封装组件&#xff1a; 定义一个类(类名大写&#xff0c;组件的名称…

《以太全光:依循标准规范,奏响医院网络建设 “光” 之乐章》

在当今数字化浪潮的席卷下,医疗行业正以前所未有的速度踏上智能化转型的征程。在这场变革中,网络架构作为支撑医疗行业的基础设施,扮演着至关重要的角色。那么,究竟哪种网络架构才是医疗行业网络建设的理想选择呢? 近期,住房城乡建设部发布的《综合医院建筑设计标准》给出了明…

【网络安全实验室】基础关实战详情

须知少时凌云志,曾许人间第一流 1.key在哪里 url&#xff1a;http://rdyx0/base1_4a4d993ed7bd7d467b27af52d2aaa800/index.php 查看网页源代码的方式有4种&#xff0c;分别是&#xff1a;1、鼠标右击会看到”查看源代码“&#xff0c;这个网页的源代码就出现在你眼前了&…

【Qt】容器控件、布局管理控件

目录 容器控件 QGroupBox QTabWidget 布局管理控件 QVBoxLayout 例子&#xff1a; QHBoxLayout 例子&#xff1a; QGridLayout 例子&#xff1a; 例子&#xff1a; QFormLayout 例子&#xff1a; QSpacerItem 例子&#xff1a; 容器控件 QGroupBox 表示一个带有…

Lucene 漏洞历险记:修复损坏的索引异常

作者&#xff1a;来自 Elastic Benjamin Trent 有时&#xff0c;一行代码需要几天的时间才能写完。在这里&#xff0c;我们可以看到工程师在多日内调试代码以修复潜在的 Apache Lucene 索引损坏的痛苦。 做好准备 这篇博客与往常不同。它不是对新功能或教程的解释。这是关于花…

【最新】沃德协会管理系统源码+uniapp前端+环境教程

一.系统介绍 一款基于FastAdminThinkPHPUniapp开发的商协会系统&#xff0c;新一代数字化商协会运营管理系统&#xff0c;以“智慧化会员体系、智敏化内容运营、智能化活动构建”三大板块为基点&#xff0c;实施功能全场景覆盖&#xff0c;一站式解决商协会需求壁垒&#xff0…

STM32 软件I2C读写

单片机学习&#xff01; 目录 前言 一、软件I2C读写代码框架 二、I2C初始化 三、六个时序基本单元 3.1 引脚操作的封装和改名 3.2 起始条件执行逻辑 3.3 终止条件执行逻辑 3.4 发送一个字节 3.5 接收一个字节 3.5 发送应答&接收应答 3.5.1 发送应答 3.5.2 接…

LeetCode - Google 校招100题 第6天 回溯法(Backtracking) (8题)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144743505 LeetCode 合计最常见的 112 题: 校招100题 第1天 链表(List) (19题)校招100题 第2天 树(Tree) (21题)校招100题 第3天 动态规划(DP) (20题)