MySQL表的操作『增删改查』

✨个人主页: 北 海
🎉所属专栏: MySQL 学习
🎃操作环境: CentOS 7.6 阿里云远程服务器
🎁软件版本: MySQL 5.7.44

成就一亿技术人


文章目录

  • 1.创建表
    • 1.1.创建时指定属性
  • 2.查看表
    • 2.1.查看表结构
    • 2.2.查看建表信息
  • 3.修改表
    • 3.1.修改列属性
    • 3.2.修改列名
    • 3.3.修改表名
  • 4.删除表


1.创建表

首先创建一个 数据库 testForTable

mysql> create database if not exists testForTable;

当前创建的 数据库 testForTable 字符集和校验集分别为 utf8utf8_general_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 表,当前表的字符集为 utf8,校验集为 utf8_general_ci,存储引擎为 InnoDB,这些都是数据库的 默认属性,只要我们在创建表时不指定属性,表就会继承数据库的默认属性

通过 InnoDB 引擎创建的表会生成 两个文件

注意:

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

1.1.创建时指定属性

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

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

通过 MyISAM 引擎创建的表会生成 三个文件


2.查看表

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

mysql> show tables;

当前数据库中就只有之前创建的两张表

2.1.查看表结构

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

DESC tablename

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

mysql> desc person;mysql> desc goods;

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

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

2.2.查看建表信息

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

SHOW CREATE TABLE tablenameSHOW CREATE TABLE tablename \G

加了 \G 之后表示格式化输出内容,便于查看,通过指令回顾刚才创建的 两张 表的语句内容

mysql> show create table person\Gmysql> show create table goods\G

其实之前使用 desc 指令查询到的结果,就是从这里截取的,更详细的信息包括:列的注释、字符集、存储引擎,这也证明了当我们不指定这些属性时,自动使用数据库的默认属性

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


3.修改表

3.1.修改列属性

首先是新增字段,语法为

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;

hometown 字段被成功新增到了 sex 字段之后


除了可以新增字段,还可以修改字段,语法为

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

注意:

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

修改 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 中,删除 一直都是一个 高危 操作,毕竟数据丢了不容易找回,比如这里的删除字段,如果表中有数据,那么表中数据关于该字段的信息会被全部删除,所以删除字段要 慎用

3.2.修改列名

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

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

注意: 修改需要确保字段存在,修改后,上层应用会受影响

比如把 goods 表中的 num 改为 nums

mysql> alter table goods change num nums int unsigned;

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

3.3.修改表名

表名支持修改,语法为

ALTER TABLE oldname RENAME [TO] newname;

其中 TO 可以省略,修改成功后,Linux 中对应的文件名也会被修改

注意: 如同修改字段名一样,修改表名也是一个危险操作,同样会影响上层使用

修改 person 表名为 students

mysql> alter table person rename to students; 

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



4.删除表

删除表的语法为

DROP TABLE tablename;

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

删除 goods

mysql> drop table goods;

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



写在最后:「修改字段、删除字段、修改字段名、修改表名、删除表」这些都是敏感操作,会对数据库中的数据造成影响,如果是新建的数据库,可以随便操作,但如果是运行了一段时间的数据库,在进行这些操作前,最好先备份数据库,万一发生错误,还有后悔的余地

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

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

相关文章

GLM: 自回归空白填充的多任务预训练语言模型

当前,ChatGLM-6B 在自然语言处理领域日益流行。其卓越的技术特点和强大的语言建模能力使其成为对话语言模型中的佼佼者。让我们深入了解 ChatGLM-6B 的技术特点,探索它在对话模型中的创新之处。 GLM: 自回归空白填充的多任务预训练语言模型 ChatGLM-6B 技…

万界星空科技生产管理mes系统种的工艺确认流程

MES工艺流程是制造执行系统的核心部分,它涵盖了整个生产过程,包括物料管理、生产计划、生产执行、质量管理、维修保养等方面,可以有效地提高生产效率和产品质量。 一、确认追溯模型: 以工艺文件为确认对象,以产品生产…

解决ansible批量加入新IP涉及known_hosts报错的问题

我们把一批新的IP加入到ansible的hosts文件,比如/etc/ansible/hosts,往往会有这样的提示, 因为本机的~/.ssh/known_hosts文件中并有fingerprint key串,使用ssh连接目标主机时,一般会提示是否将key字符串加入到~/.ssh/…

文字识别(OCR)专题——基于NCNN轻量级PaddleOCRv4模型C++推理

前言 PaddleOCR 提供了基于深度学习的文本检测、识别和方向检测等功能。其主要推荐的 PP-OCR 算法在国内外的企业开发者中得到广泛应用。在短短的几年时间里,PP-OCR 的累计 Star 数已经超过了32.2k,常常出现在 GitHub Trending 和 Paperswithcode 的日榜…

2.qml 3D-View3D类学习

本章我们来学习View3D类。 View3D是用来渲染3D场景并显示在2D平面的类,并且该类可以放在QML2D下继承于Item子类的任何场景中,比如将View3D放在Rectangle中: Rectangle {width: 200 height: 200color: "red"View3D { anchors.fill: parent…

瞻芯电子荣获“汽车芯片50强”奖,展现技术水平

023年11月28日,瞻芯电子在北京举办的“芯向亦庄”汽车芯片大赛中脱颖而出,凭借其车规级碳化硅(SiC)MOSFET产品的卓越性能和创新特点,荣获“汽车芯片50强”奖项,展现了瞻芯电子在汽车芯片领域的技术水平和发展潜力。 芯向亦庄2023汽…

Inkscape 图片生成Gcode

1.到网上找一张简单的图片,拖入软件中 2.文档属性单位改成毫米 3.路径--->提取位图轮廓-->使用边缘检测 4.删除原图片 5.路径-->笔廓转化成路径 6.转变完了效果如下 7.文件另存为--> gcode 就大功告成啦

0Ω电阻最大过流能力及作用用途

0Ω电阻最大过流能力及作用用途 0Ω电阻过流能力0Ω电阻的作用 0Ω电阻过流能力 0Ω电阻不一定是真正的0Ω电阻,0Ω电阻存在一定的阻值偏差,主要看生产电阻厂商做哪种了。厂商都是根据电阻标准文件 EN60115-2, 里头0Ω电阻实际最大阻值有 10…

【Redis缓存】RedisTemplate如何获取符合要求的key,批量获取key

RedisTemplate如何获取符合要求的key,批量获取key 一、方法/命令二、数据使用 一、方法/命令 如果使用命令的形式,输入以下命令即可 keys *如果使用RedisTemplate,则方法为 redisTemplate.keys()获取所有符合条件的key。 二、数据使用 redis中缓存了…

【Linux系统化学习】揭秘 命令行参数 | 环境变量

个人主页点击直达:小白不是程序媛 Linux专栏:Linux系统化学习 代码仓库:Gitee 目录 命令行参数 环境变量 PATH 查看PATH $PWD 查看环境变量PWD $HOME 查看系统支持的环境变量 获取环境变量 命令行参数 在C/C编程语言中我们有一个…

高并发下缓存失效问题-缓存穿透、缓存击穿、缓存雪崩、Redis分布式锁简单实现、Redisson实现分布式锁

文章目录 缓存基本使用范式暴露的几个问题缓存失效问题---缓存穿透缓存失效问题---缓存击穿一、单机锁正确的锁粒度不正确的锁粒度无法保证查询数据库次数是唯一 二、分布式锁getCatalogJsonData()分布式锁演进---基本原理分布式锁(加锁)演进一:删锁失败导致死锁分布…

负电源电压转换-TP7660H

负电源电压转换-TP7660H 简介引脚说明典型应用电路倍压与反压的应用电路 简介 TP7660H 是一款 DC/DC 电荷泵电压反转器专用集成电路。芯片能将输入范围为 2.5V~11V 的电压转换成相应的-2.5V~-11V 的输出,电压转换精度可达99.9%,电…

Docker的常用基本命令(基础命令)

文章目录 1. Docker简介2. Docker环境安装Linux安装 3. 配置镜像加速4. Docker镜像常用命令列出镜像列表搜索镜像下载镜像查看镜像版本删除镜像构建镜像推送镜像 5. Docker容器常用命令新建并启动容器列出容器停止容器启动容器进入容器删除容器(慎用)查看…

概率论与数理统计中常见的随机变量分布律、数学期望、方差及其介绍

1 离散型随机变量 1.1 0-1分布 设随机变量X的所有可能取值为0与1两个值,其分布律为 若分布律如上所示,则称X服从以P为参数的(0-1)分布或两点分布。记作X~ B(1,p) 0-1分布的分布律利用表格法表示为: X01P1-PP 0-1分布的数学期望E(X) 0 *…

面向对象编程的艺术:构建高效可扩展的软件

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

zabbix6.4.0配置邮件及企微机器人群聊告警

一、邮件告警 根据公司邮箱自行配置,电子邮件、用户账号密码填自己的邮箱账号密码 动作本次使用的默认的,如果为了更加美观可自行修改。 二、企业微信机器人告警 首先在企微上创建群聊,之后添加群聊机器人 将地址复制,后面用 …

使用NVM管理多个版本的node.js

1、nvm介绍: nvm全英文也叫node.js version management,是一个nodejs的版本管理工具。nvm是node.js版本管理工具,为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js 2、下载nvm地址: https://d…

测试用例设计方法六脉神剑——第一剑:入门试招,等价边界初探 | 京东物流技术团队

1 背景及问题 G.J.Myers在<软件测试技巧>中提出&#xff1a;测试是为了寻找错误而运行程序的过程&#xff0c;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试&#xff0c; 一个成功的测试是揭示了迄今为止尚未发现的错误的测试。 对于新手来说&#xff0…

ChatGPT成为“帮凶”:生成虚假数据集支持未知科学假设

ChatGPT 自发布以来&#xff0c;就成为了大家的好帮手&#xff0c;学生党和打工人更是每天都离不开。 然而这次好帮手 ChatGPT 却帮过头了&#xff0c;莫名奇妙的成为了“帮凶”&#xff0c;一位研究人员利用 ChatGPT 创建了虚假的数据集&#xff0c;用来支持未知的科学假设。…

Flutter加固原理及加密处理

​ 引言 为了保护Flutter应用免受潜在的漏洞和攻击威胁&#xff0c;加固是必不可少的措施之一。Flutter加固原理主要包括代码混淆、数据加密、安全存储、反调试与反分析、动态加载和安全通信等多个方面。通过综合运用这些措施&#xff0c;可以提高Flutter应用的安全性&#xf…