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.mzph.cn/news/169148.shtml

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

相关文章

【SpringCloud】为什么选择微服务?

一般的平台会遇到的问题: 服务配置复杂。基础服务多,服务的资源配置复杂,传统方式管理服务复杂 服务之间调用复杂。检索服务、用户中心服务等,服务之间的调用复杂,依赖多 服务监控难度大。服务比较多,…

MYSQL基础知识之【数据类型】

文章目录 前言标题一数值类型日期和时间类型字符串类型后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Mysql 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错…

CSS:浏览器设置placeholder样式 / 微信小程序设置placeholder样式

一、web 设置placeholder 设置浏览器的placeholder样式 ::-webkit-input-placeholder { /* WebKit browsers */color: #999; } :-moz-placeholder { /* Mozilla Firefox 4 to 18 */color: #999; } ::-moz-placeholder { /* Mozilla Firefox 19 */color: #999; } :-ms-input-p…

「最优化基础知识2」一维搜索,以及python代码

最优化基础知识(2) 无约束优化问题,一维搜索 一、一维搜索 一维搜索的意思是在一个方向上找到最小点。 用数学语言描述,X*Xk tPk,从Xk沿着Pk方向行走t到达最小点X*。 1、收敛速度: 线性收敛&#xff1…

基于厨师算法优化概率神经网络PNN的分类预测 - 附代码

基于厨师算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于厨师算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于厨师优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络的光滑…

redis持久化:RDB:和AOF

目录 RDB 持久化 1、修改配置文件:redis.conf 2、RDB模式自动触发保存快照 3、RDB模式手动触发保存快照 4、RDB的优缺点 AOF持久化 1、AOF持久化工作流程 2、修改配置文件开启AOF 3、AOF优缺点 4、AOF的重写机制原理 RDBAOF混合模式 redis持久化有两种方…

《尚品甄选》:后台系统——结合redis实现用户登录

文章目录 一、统一结果实体类二、统一异常处理三、登录功能实现四、CORS解决跨域五、图片验证码六、登录校验功能实现6.1 拦截器开发6.2 拦截器注册 七、ThreadLocal 要求: 用户输入正确的用户名、密码以及验证码,点击登录可以跳转到后台界面。未登录的用…

基于人工兔算法优化概率神经网络PNN的分类预测 - 附代码

基于人工兔算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于人工兔算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于人工兔优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

P10 C++类和结构体的区别

目录 01 前言 02 struct 与 class格式上的区别 03 struct 与 class 使用上的区别 04 常用的代码风格 01 前言 今天这期我们主要解决一个问题,就是 C 中的类和结构体有什么区别。 本期我们有两个术语,结构体 struct,它是 structure 的缩写…

深度学习之基于Tensorflow银行卡号码识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介银行卡号码识别的步骤TensorFlow的优势 二、功能三、系统四. 总结 一项目简介 # 深度学习基于TensorFlow的银行卡号码识别介绍 深度学习在图像识别领域取得…

【JVM】一篇通关JVM垃圾回收

目录 1. 如何判断对象可以回收1-1. 引用计数法1-2. 可达性分析算法1-3. 四种引用强引用软引用弱引用虚引用终结器引用 2. 垃圾回收算法3. 分代垃圾回收4. 垃圾回收器5. 垃圾回收调优 1. 如何判断对象可以回收 1-1. 引用计数法 引用计数法 只要一个对象被其他变量所引用&…

甲烷产生及氧化

温室气体排放被认为是加速气候变化的重要因素,甲烷(CH4)是仅次于二氧化碳(CO2)的重要温室气体,其百年温室效应潜势是CO2的28倍[1-2]。湿地中的CH4由产甲烷古菌在水体底部或沉积层严格厌氧环境下产生并释放进入水体,产生的CH4向上覆水运输过程…

内网横向技术

如果拿下了一台机器之后寻找域控机器 ipconfig /all 找到域名 ping 域名或者nslookup域名

【数据库】数据库物理执行计划最基本操作-表扫描机制与可选路径,基于代价的评估模型以及模型参数的含义

物理执行计划基本操作符 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏…

广州华锐互动:AR可视化展示昆虫让教学过程更直观生动

随着科技的不断发展,AR(增强现实)技术已经逐渐走进我们的生活。通过AR技术,我们可以将虚拟的信息叠加到现实世界中,让现实世界变得更加丰富多彩。在这篇文章中,我们将以昆虫为主题,探讨AR增强现…

002、ArkTS

之——开发语言 杂谈 基础编程语言ArkTS。引用来自华为开发者课堂。 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁…

tp8 使用rabbitMQ(4)路由模式

路由模式 在第三节中我们使用的 交换机的 fanout 把生产者的消息广播到了所有与它绑定的队列中处理,但是我们能不能把特定的消息,发送给指定的队列,而不是广播给所有队列呢? 如图,交换机把 orange 类型的消息发送给了…

zookeeper 单机伪集群搭建简单记录

1、官方下载加压后,根目录下新建data和log目录,然后分别拷贝两份,分别放到D盘,E盘,F盘 2、data目录下面新建myid文件,文件内容分别为1,2,3.注意文件没有后缀,不能是txt文…

LED驱动控制专用电路

一、基本概述 TM1628是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU 数 字接口、数据锁存器、LED 驱动、键盘扫描等电路。本产品质量可靠、稳定性好、抗干扰能力强。 主要适用于家电设备(智能热水器、微波炉、洗衣机、空调…

排序算法-----基数排序

目录 前言 基数排序 算法思想 ​编辑 算法示例 代码实现 1.队列queue.h 头文件 2.队列queue.c 源文件 3.主函数(radix_sort实现) 算法分析 前言 今天我想把前面未更新完的排序算法补充一下,也就是基数排序的一种,这是跟…