文章目录

  • 前言
  • 一、创建表
    • 创建表时指定属性
  • 二、查看表
    • 查看表结构
    • 查看建表消息
  • 三、修改表
    • 修改列属性
    • 修改列名
    • 修改表名
  • 四、删除表
  • 总结


前言

  Hello! 那我们乘胜追击,开始 表的操作!


一、创建表

  首先创建一个 数据库 testForTable

mysql> create database if not exists testForTable;

在这里插入图片描述
  当前创建的 数据库 testForTable 字符集和校验集分别为 utf8mb4 和 utf8mb4_unicode_ci,这是由配置文件中的默认编码集决定的

在这里插入图片描述
  接下来创建一张表,具体语法为

CREATE TABLE [if not exists] tablename
(field1 datatype,field2 datatype,field3 datatype
) [character set 字符集] [collate 校验规则] [engine 存储引擎];

  其中 字符集、校验规则、存储引擎 可以不用指定,默认使用当前数据库的默认属性

  创建一张 person 表,包含 姓名、性别、年龄 三个字段

  注意: 创建表之前需要先使用数据库

mysql> create table if not exists person 
(name varchar(16) comment '姓名',sex char(2) comment '性别,只能为男/女',age int unsigned comment '年龄,不能为负数'
);

在这里插入图片描述
  这样就得到了一张 person 表,当前表的字符集为 utf8mb4,校验集为 utf8mb4_unicode_ci,存储引擎为 InnoDB,这些都是数据库的 默认属性,只要我们在创建表时不指定属性,表就会继承数据库的默认属性

  通过 InnoDB 引擎创建的表会生成 一个文件(跟你的MySQL版本有关)

在这里插入图片描述

注意:

  • comment ‘内容’ 表示注释,通常用来注明该字段的含义及用途
  • 在 MySQL 中定义无符号类型的数据,需要把 unsigned 放在类型之后修饰

创建表时指定属性

  除了使用数据库的 默认属性,还可以在创建时指定属性,比如再创建一张 goods 表,表示商品信息,包含字段有 商品名、价格、数量、厂商,并且在创建表时,指定字符集为 gbk,校验集为 gdk_chinese_ci,存储引用选择 MyISAM

mysql> create table if not exists goods
(name varchar(32) comment '商品名称',price double(10, 2) unsigned comment '商品价格,最多支持小数点前 8 位数,小数点后 2 位数',num int unsigned comment '商品数量',factory varchar(64) comment '厂商名称'
) character set 'gbk' collate 'gbk_chinese_ci' engine 'MyISAM';

在这里插入图片描述
  此时通过 MyISAM引擎 生成的表会创建三个文件

在这里插入图片描述

二、查看表

  身处某个数据库中,可以通过 show tables 查看当前数据库中有哪些表

mysql> show tables;

  比如说之前创建的两张表

在这里插入图片描述

查看表结构

  知道有哪些表后,还需要进一步了解表的 结构 信息,比如有哪些字段,才能知道如何使用这张表,查看表的详细信息语法为

mysql> desc tablename

  分别查看刚才创建的两张表的 结构 信息

mysql> desc person;
mysql> desc goods;

  可以看到查询结果为一张行列构建的表,第一行表示各种属性信息,属性支持修改

在这里插入图片描述

  • Field 表示 列名
  • Type 表示 类型
  • Null 表示 是否可为空
  • Key 表示 是否存在 主键/外键/唯一键 约束
  • Default 表示 是否有默认值
  • Extra 表示 额外信息

查看建表消息

  如果想查看关于表更详细的信息,可以通过指令查看建表时的语句内容,语法为

SHOW CREATE TABLE tablename
SHOW CREATE TABLE tablename \G

在这里插入图片描述

  MySQL 会记录下用户的所有操作痕迹,这也是备份后,恢复数据库的关键,把所有指令再执行一遍,就能得到一模一样的数据库了

三、修改表

修改列属性

  首先是新增字段,语法为

ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);

  column 表示 列名,datatype 表示 类型,[DEFAULT expr] 表示该列的各种 属性,比如约束、默认值、是否为空等,支持同时新增多个字段

  给 person 表新增 出生日期、爱好 两个字段

  注意: 如果新增多个字段时,需要使用 ( ) 将新增的一批字段括起来

mysql> alter table person add (birthday date comment '生日', hobby varchar(32) comment '爱好');

  新增的字段默认是紧跟最后一个字段的

在这里插入图片描述
  如果想新增至指定字段之后,可以在语句后面加上 after column,比如在 性别 sex 之后新增一个 籍贯 字段
  注意: 只支持新增单个字段时,指定位置,也就是说 ( ) 与 after column 是冲突的,不能同时使用

mysql> alter table person add hometown varchar(16) comment '籍贯' after sex;

在这里插入图片描述
  除了可以新增字段,还可以修改字段,语法为

ALTER TABLE tablename MODIFY column datatype [DEFAULT expr], [MODIFY ...];

注意:

  • 需要确保修改的字段存在,并且要保证修改后的字段类型与表中已经存在的数据类型相匹配
  • 修改多个字段时,可以叠加多条 MODIFY column datatype [DEFAULT expr] 语句,通过 , 分隔
  • 修改字段后,原字段的所有信息都会被覆盖,包括注释

  修改 name 的类型为 varchar(32),修改 age 的类型为 int,因为此时是空表,所以可以随便修改

mysql> alter table person modify name varchar(32), modify age int;

  可以看到,之前的注释没了,并且字段的类型也修改了

在这里插入图片描述
  最后就是删除字段,语法为

ALTER TABLE tablename DROP (column), [DROP ...];

  注意: 删除字段时,同样需要确保字段存在,字段被删除后,表中对应的数据也会被删除
  先随便新增几个无用字段,再删除

mysql> alter table person add (a int, b int, c double);
mysql> alter table person drop a, drop b, drop c;

  刚刚新增的无用字段立马就被删除了

在这里插入图片描述
  在 MySQL 中,删除 一直都是一个 高危 操作,毕竟数据丢了不容易找回,比如这里的删除字段,如果表中有数据,那么表中数据关于该字段的信息会被全部删除,所以删除字段要 慎用

  网上说的被裁什么删库跑路之类的看看笑话就行~

修改列名

  列名是支持修改的,语法为

ALTER TABLE tablename CHANGE oldcolumn newcolumn datatype [DEFAULT expr];

  注意: 修改需要确保字段存在,修改后,上层应用会受影响
  比如把 goods 表中的 num 改为 nums

mysql> alter table goods change num nums int unsigned;

  可以看到修改之后,注释也没了,这个操作也要 慎用,因为上层查询时,可能会查询失败,需要上层配合更新信息

在这里插入图片描述

修改表名

  表名支持修改,语法为

ALTER TABLE oldname RENAME [TO] newname;

  其中 TO 可以省略,修改成功后,Linux 中对应的文件名也会被修改
  注意: 如同修改字段名一样,修改表名也是一个危险操作,同样会影响上层使用
  修改 person 表名为 students

mysql> alter table person rename to students; 

  可以看到,表对应的文件名,也被修改了

在这里插入图片描述
在这里插入图片描述

四、删除表

  还是要提醒下,这很危险,非必要情况下请不要这么做

  删除表的语法为

DROP TABLE tablename;

  注意: 删除表很危险,删除之后,表中所有的数据就都没了,不要轻易删除!
  删除 goods 表

mysql> drop table goods;

  当然,删除成功后,Linux 中对应的文件也被删除了,这也是很显然的

在这里插入图片描述


总结

  本篇有很多删除操作,数据库的恢复是相当麻烦的,甚至还有彻底无法恢复的可能,所以我们再进行修改乃至删除的时候务必要慎之又慎

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

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

相关文章

从“人工智障”到“智能助手”:集成为什么能拯救AI用户体验?

几年前,当人们满怀期待地与AI语音助手对话时,常常遭遇令人啼笑皆非的回应——“抱歉,我不明白你在说什么”“请再说一遍”甚至答非所问。AI被戏称为“人工智障”,用户体验一度让人失望。然而,近年来,随着技…

Uniapp 自定义TabBar + 动态菜单实现教程(Vuex状态管理详解)

大家好,我是一诺。今天跟大家分享一下uniapp 封装自定义底部导航栏(TabBar) 过程中的思考和实践。通过本文,你将学会如何打造一个功能完善、可自由定制的TabBar组件! 先看效果: 支持自定义图标和样式动态显…

MySQL数据库主从复制

概述1、master开启二进制日志记录2、slave开启IO进程,从master中读取二进制日志并写入slave的中继日志3、slave开启SQL进程,从中继日志中读取二进制日志并进行重放4、最终,达到slave与master中数据一致的状态,我们称作为主从复制的…

Rancher Server + Kubernets搭建云原生集群平台

目录Rancher Server Kubernets搭建云原生集群平台一、环境准备1、软件准备2、环境规划3、挂载数据盘二、虚拟机初始化基础配置(所有节点都需要操作)1、执行时间服务器脚本(包括配置hostName主机名)2、配置hosts文件3、配置各节点…

Java学习第八部分——泛型

目录 一、概述 (一)定义 (二)作用 (三)引入原因 二、使用 (一)类 (二)接口 (三)方法 三、类型参数 (一&#xf…

定时点击二次鼠标 定时点击鼠标

定时点击二次鼠标 定时点击鼠标 今天分享一个定时点击两次的小工具。 我们在生活中,可能会遇到一些定时点击的任务。比如说在晚上9点去发送一个群发,或者倒计时点击一个按钮。那么可以使用这个工具,仅适用于Windows电脑。 #定时点击鼠标 #倒计…

Linux网络配置与故障排除完全指南

1. ifconfig命令 - 网络接口配置器 ifconfig(interface configurator)是Linux系统中最基础的网络配置工具。该命令可以初始化网络接口、分配IP地址、启用或禁用接口,同时还能查看接口的详细信息。 查看网络接口信息 # ifconfig eth0 …

Python Pytest-Benchmark详解:精准性能测试的利器

在软件开发的迭代过程中,性能优化如同精密手术,需要精准的测量工具。Pytest-Benchmark作为pytest生态中的性能测试插件,凭借其无缝集成能力和专业统计功能,成为Python开发者进行基准测试的首选工具。本文将深入解析其技术特性与实…

60天python训练营打卡day51

学习目标: 60天python训练营打卡 学习内容: DAY 51 复习日 作业:day43的时候我们安排大家对自己找的数据集用简单cnn训练,现在可以尝试下借助这几天的知识来实现精度的进一步提高 学习时间: 2025.07.04 浙大疏锦行…

支持向量机(SVM)在肺部CT图像分类(肺癌检测)中的实现与优化

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…

YOLOv3-SPP 深度解析:引入 SPP 结构,显著提升目标检测性能!

✅ YOLOv3-SPP 技术详解 一、前言 YOLOv3-SPP 是在 YOLOv3 基础上加入 SPP(Spatial Pyramid Pooling)模块的一种改进版本,旨在提升模型对不同尺度目标的识别能力,尤其是在大目标检测方面表现更优。 它由 Alexey Bochkovskiy 在…

负载均衡--常见负载均衡算法

负载均衡算法可以分为两类:静态负载均衡算法和动态负载均衡算法。 1、静态负载均衡算法包括:轮询,比率,优先权 轮询(Round Robin):顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务…

深入解析GCC:开源的编译器之王

在编程世界中,编译器是将人类可读代码转化为机器指令的关键桥梁。而GCC(GNU Compiler Collection) 无疑是这个领域最耀眼的明星之一。作为开源世界的基石,它支撑着Linux内核、众多开源项目和商业软件的构建。今天,我们…

https和http有什么区别

目录 一、核心区别:是否基于加密传输 二、底层传输机制差异 三、HTTPS 的加密原理 四、应用场景差异 五、其他细节区别 总结 在网络通信中,HTTP(Hypertext Transfer Protocol,超文本传输协议) 和HTTPS&#xff0…

CSS3 文本效果详解

CSS3 文本效果详解 引言 随着Web技术的发展,CSS3为前端设计师和开发者提供了丰富的文本效果选项。这些效果不仅能够增强网页的美观性,还能提升用户体验。本文将详细介绍CSS3中的文本效果,包括文本阴影、文本描边、文本装饰、文本换行、文本大小写等,并探讨如何在实际项目…

MySQL 中 -> 和 ->> 操作符的区别

简介 MySQL 5.7 或更高版本,可以使用 ->> 和 -> 运算符简化语法这两个操作符都是用于提取 JSON 数据的,但有一些重要区别 -> 操作符 功能:提取 JSON 对象的指定路径的值 返回类型:返回 JSON 类型的值(可…

Vue2 day07

1.vuex的基本认知2.构建多组件共享的数据环境步骤&#xff1a;1.在自己创建的文件夹下创建脚手架2.创建三个组件### 源代码如下App.vue在入口组件中引入 Son1 和 Son2 这两个子组件html <template><div id"app"><h1>根组件</h1><input ty…

简述MCP的原理-AI时代的USB接口

1 简介随着AI的不断发展&#xff0c;RAG&#xff08;检索增强生成&#xff09;和function calling等技术的出现&#xff0c;使得大语言模型的对话生成能力得到了增强。然而&#xff0c;function calling的实现逻辑比较复杂&#xff0c;一个简单的工具调用和实现方式需要针对不同…

CISSP知识点汇总-资产安全

CISSP知识点汇总 域1---安全与风险管理域2---资产安全域3---安全工程域4---通信与网络安全域5---访问控制域6---安全评估与测试域7---安全运营域8---应用安全开发域2 资产安全 一、资产识别和分类 1、信息分级(Classification): 按照敏感程度(机密性被破坏) 按照重要程度…

Spring Boot 3.x 整合 Swagger(springdoc-openapi)实现接口文档

本文介绍 Spring Boot 3.x 如何使用 springdoc-openapi 实现 Swagger 接口文档&#xff0c;包括版本兼容表、最简单的配置示例和常见错误解决方案。1. Spring Boot 3.x 和 springdoc-openapi 版本对应表Spring Boot 版本Spring Framework 版本推荐的 springdoc-openapi 版本3.0…