【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 注释怎么没了❓❓❓

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

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

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

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

相关文章

aws(学习笔记第二十二课) 复杂的lambda应用程序(python zip打包)

aws(学习笔记第二十二课) 开发复杂的lambda应用程序(python的zip包) 学习内容: 练习使用CloudShell开发复杂lambda应用程序(python) 1. 练习使用CloudShell CloudShell使用背景 复杂的python的lambda程序会有许多依赖的包,如果不提前准备好这些python的…

SAP SD销售模块常见BAPI函数

【SAP系统研究】 #SAP #SD #销售管理 1、销售订单 BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单 BAPI_CUSTOMERRETURN_CREATE 创建退货订单 SD_SALESDOCUMENT_CREATE 创建贷项订单 BAPI_SALESORDER_CHANGE 修改销售订单 STATUS_READ 查看销售订单状态VB销售订单000000 I_CHA…

CSS学习记录21

CSS 工具提示 通过CSS 创建工具提示&#xff08;Tooltip)。 当用户将鼠标指针移动到元素上时&#xff0c;工具提示通常用于提供关于某内容的额外信息&#xff1a; <style> /* Tooltip 容器 */ .tooltip {position: relative;display: inline-block;border-bottom: 1px …

DuckDB:密钥管理器及其应用

密钥管理器(Secrets Manager)为所有使用密钥的后端提供了统一的用户界面。密钥信息可以被限定范围&#xff0c;因此不同的存储前缀可以有不同的密钥信息&#xff0c;例如允许在单个查询中连接跨组织的数据。密钥也可以持久化&#xff0c;这样就不需要在每次启动DuckDB时都指定它…

[cg] android studio 无法调试cpp问题

折腾了好久&#xff0c;native cpp库无法调试问题&#xff0c;原因 下面的Deploy 需要选Apk from app bundle!! 另外就是指定Debug type为Dual&#xff0c;并在Symbol Directories 指定native cpp的so路径 UE项目调试&#xff1a; 使用Android Studio调试虚幻引擎Android项目…

uni-app深度解码:跨平台APP开发的核心引擎与创新实践

在当今数字化浪潮中&#xff0c;移动应用市场呈现出爆炸式增长。为了满足不同用户群体在不同操作系统上的需求&#xff0c;跨平台 APP 开发成为众多开发者的首选策略。uni-app 作为一款领先的跨平台开发框架&#xff0c;以其独特的优势和创新的实践在众多同类产品中脱颖而出。它…

I2C(一):存储器模式:stm32作为主机对AT24C02写读数据

存储器模式&#xff1a;在HAL库中&#xff0c;I2C有专门对存储器外设设置的库函数 I2C&#xff08;一&#xff09;&#xff1a;存储器模式的使用 1、I2C轮询式写读AT24C02一页数据2、I2C轮询式写读AT24C02多页数据3、I2C中断式写读AT24C02一页数据4、I2C使用DMA式写读AT24C02一…

Elasticsearch:减少 Elastic 容器镜像中的 CVE(常见的漏洞和暴露)

作者&#xff1a;来自 Elastic Maxime Greau 在这篇博文中&#xff0c;我们将讨论如何通过在 Elastic 产品中切换到最小基础镜像并优化可扩展漏洞管理程序的工作流程来显著减少 Elastic 容器镜像中的常见漏洞和暴露 (Common Vulnerabilities and Exposures - CVEs)。 基于 Chai…

【AI学习】Transformer深入学习(二):从MHA、MQA、GQA到MLA

前面文章&#xff1a; 《Transformer深入学习&#xff08;一&#xff09;&#xff1a;Sinusoidal位置编码的精妙》 一、MHA、MQA、GQA 为了降低KV cache&#xff0c;MQA、GQA作为MHA的变体&#xff0c;很容易理解。 多头注意力&#xff08;MHA&#xff09;&#xff1a; 多头注…

使用python调用翻译大模型实现本地翻译【exe客户端版】

以前分享过一个 关于python 部署 网页端的 翻译大模型的 文章 有兴趣的小伙伴可以去看一下 https://blog.csdn.net/Drug_/article/details/144488795 今天就再分享一个 使用python 来制作一个 exe 客户端版的 本地大模型。 实际也很简单 只不过把 用 fastApi 框架 做的 网页端…

python3GUI--智慧交通监控与管理系统 By:PyQt5

文章目录 一&#xff0e;前言二&#xff0e;预览三&#xff0e;软件组成&技术难点1.软件组成结构2.技术难点3.项目结构 四&#xff0e;总结 大小&#xff1a;35.5 M&#xff0c;软件安装包放在了这里! 一&#xff0e;前言 博主高产&#xff0c;本次给大家带来一款我自己使…

JavaVue-Get请求 数组参数(qs格式化前端数据)

前言 现在管理系统&#xff0c;像若依&#xff0c;表格查询一般会用Get请求&#xff0c;把页面的查询条件传递给后台。其中大部分页面会有日期时间范围查询这时候&#xff0c;为了解决请求参数中的数组文件&#xff0c;前台就会在请求前拦截参数中的日期数组数据&#xff0c;然…

Vue2/Vue3使用DataV

Vue2 注意vue2与3安装DataV命令命令是不同的Vue3 DataV - Vue3 官网地址 注意vue2与3安装DataV命令命令是不同的 vue3vite 与 Vue3webpack 对应安装也不同vue3vite npm install kjgl77/datav-vue3全局引入 // main.ts中全局引入 import { createApp } from vue import Da…

RocketMQ消费者如何消费消息以及ack

1.前言 此文章是在儒猿课程中的学习笔记&#xff0c;感兴趣的想看原来的课程可以去咨询儒猿课堂 这篇文章紧挨着上一篇博客来进行编写&#xff0c;有些不清楚的可以看下上一篇博客&#xff1a; https://blog.csdn.net/u013127325/article/details/144934073 2.broker是如何…

高等数学学习笔记 ☞ 无穷小比较与等价无穷小替换

1. 无穷小比较 1. 本质&#xff1a;就是函数的极限趋于0时的速度&#xff0c;谁快谁慢的问题。 2. 定义&#xff1a;若是在同一自变量的变化过程中的无穷小&#xff0c;且&#xff0c;则&#xff1a; ①&#xff1a;若&#xff0c;则称是比的高阶无穷小&#xff0c;记作&…

django StreamingHttpResponse fetchEventSource实现前后端流试返回数据并接收数据的完整详细过程

django后端环境介绍&#xff1a; Python 3.10.14 pip install django-cors-headers4.4.0 Django5.0.6 django-cors-headers4.4.0 djangorestframework3.15.2 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 总环境如下&#xff1a; Package Version -…

Kafka为什么快(高性能的原因)

我们知道&#xff0c;Kafka 是基于磁盘存储的&#xff0c;但它却又具有高性能、高吞吐、低延时等特点&#xff0c;吞吐量可达几十上百万。那么 Kafka 这么快的原因是什么呢&#xff1f; Kafka 高性能主要取决于以下几方面&#xff1a; &#xff08;1&#xff09;消息批处理压缩…

Luma AI 简单几步生成视频

简单几步生成视频 登录我们的 AceDataPlatform 网站&#xff0c;按照下图所示即可生成高质量的视频&#xff0c;同时&#xff0c;我们也提供了简单易用的 API 方便集成调用&#xff0c;可以查看 Luma API了解详情 技术介绍 我们使用了 Luma 的技术&#xff0c;实现了上面的图…

Postman[7] 内置动态参数及自定义的动态参数

postman 内置动态参数和自定义的动态参数 1.内置动态参数 格式&#xff1a;{{$参数名}} 1.1时间戳 {{$timestamp}} //生成当前时间的时间戳 1.2随机整数 {{$randomint}} //生成0-1000之间的随机数 1.3GUID字符串 {{$guid}} //生成随机GUID字符串 2.自定义动态参数 格式…

Excel VBA 自动填充空白并合并相同值的解决方案

文章目录 Excel VBA: 自动填充空白并合并相同值的解决方案问题背景解决方案1. VBA代码实现2. 代码说明3. 使用方法4. 注意事项 扩展优化总结 Excel VBA: 自动填充空白并合并相同值的解决方案 问题背景 在Excel中经常会遇到这样的数据处理需求&#xff1a;一列数据中存在多个空…