MySQL——数据类型以及对表结构的修改

news2025/1/9 16:50:47

MySQL的数据类型

刚才我们在创建表的时候,说到了一个字段类型,所谓的字段类型就是这个字段能存放的数据的数据类型,在MySQL中有以下几种数据类型:

数据类型

大小(字节)

用途

格式

INT

4

整数

FLOAT

4

单精度浮点类型

DOUBLE

8

双精度浮点类型

ENUM

-

单选,比如性别

ENUM('a','b','c')

SET

-

多选

SET('1','2','3')

DATE

3

日期

YYYY-MM-DD

TIME

3

时间点或持续日期

HH:MM:SS

YEAR

1

年份值

YYYY

CHAR

0~255

定长字符串

VARCHAR

0~255

变长字符串

TEXT

0~65535

长文本数据

整形

除了可以使用INT表示整形之外,还可以使用TINYINT,SMALLINT,MEDIUMINT,BIGINT。区别在于占用的字节大小的不同

CHAR和VARCHAR的区别

CHAR的长度是固定的,而VARCHAR的长度是可以变化的,比如,存储字符串“abc",对于CHAR(10),表示存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR(12)则只占用4个字节的长度,增加一个额外字节来存储字符串本身的长度,12只是最大值,当你存储的字符小于12时,按实际长度存储。

ENUM和SET的区别

ENUM类型的数据的值,必须是定义时枚举的值的其中之一,即单选,而SET类型的值则可以多选。

插入数据

首先我们要查看数据,使用查看数据的命令:

select * from 表名;

表示查看表中的所有数据:

此时我们的表因为是新创建的所有是没有数据的,我们需要向里面插入数据,使用插入数据的命令:

insert into 表名 values ('数据1','数据2','数据3','数据4'.……);

使用这种格式表示我们向表中所有的字段插入数据,数据的个数与格式必须和表中的字段数量和字段类型对应匹配才可以:

然后我们再次查看表中的所有数据:

然后就可以在表中看到我们刚才插入的一行数据。

插入数据的格式

在插入数据的时候,valus关键字后面括号中的值就是我们要插入到表中的值,可以看到我们在写值的时候,有一些值被引号包含着,有一些则没有。根据MySQL的规定,我们在向表中插入数据的时候,CHAR,VARCHAR,TIME,DATA,TEXT,ENUM这些类型需要使用单引号包裹,而INT,FLOAT,DOUBLE这些类型则不用。

根据字段插入数据

在插入数据的时候,出了向全部的列插入数据,还可选择想要插入数据的列,而没有选择的列则不会被插入数据

insert into 表名(列名1,列名2,列名3) values ('数据1','数据2','数据3');

然后我们使用查询命令查看表中的数据:

可以看到,我们插入数据的列会存在数据,没有选择的列中则不会有数据。

MySQL修改与删除

删除数据库

drop database 数据库的名字;

在删除之前先查看一下我们已有的这些数据库,我们先创建一个空的数据库:

然后我们删除这个数据表:

drop database test;

然后这个数据库就被删除了。

关于修改数据库

目前MySQL没有提供修改数据库名称的方法,因为这曾导致一系列安全问题。

在老版本中 RENAME DATABASE可以修改数据库名称,这条命令在MySQL 5.1.7中被加入,但官方很快就发现这条命令所带来的危险,于是在MySQL 5.1.23中把这条命令移除。

事实上,数据库名几乎不会遇到必须修改的情况,如果你一定要这么做,比较安全的做法是重新建一个新库,然后将旧库中的数据转移到新库中,并且暂时不要删除l旧的数据库,以防数据遗失。

对一张表的修改

重命名

rename table 原名 to 新名字; alter table 原名 rename 新名字; alter table 原名 rename to 新名字;

这三种方式都可以做到修改数据表的名字,在修改之前,我们先来看一下原有的数据表:

可以看到我们现在又很多的数据表,现在我们要把user表的名字修改成client:

rename table user to client; alter table user rename client; alter table user rename to client;

三种方式选择其中一种使用即可,但是不能三种方式一起使用。

删除一张表

删除表的方式可以直接参考之前我们删除数据库的方式:

drop table 表名;

使用drop关键字进行删除,比如现在我要删除client表:

现在client表就已经被删除了。

对一列的修改(既对表结构的修改)

对表结构的修改,是本节实验的难点,有时候一些小的错误会造成不可挽回的后果,所以请细心操作。另外需要注意,非必要情况不要修改表结构。

增加一列

在已经创建好的表中增加一列使用以下命令

alter table 表名 add column 列名 数据类型 [约束];

现在book表中已经存在四列,现在要添加一列可以使用以下命令:

现在我们就在已经创建好的表中新添加了一列。

现在我们创建一个新的列,并添加一个约束:

对于约束的查看方式和表数据的查看方式略有不同,如果要查看表中的约束要使用另一种方法:

使用查看表结构的方式可以查看部分的约束。

在添加列的时候决定列的位置

在我们添加列的时候,默认新添加的列是在最后一个,但是如果我们想让添加的列向前移动,那么就需要使用一个新的关键字:after

alter table 表名 add 列名 数据类型 [约束] after 列名1;

当我们使用这个语句之后,我们新创建的列就会排在after关键字后面的列之后:

在上面的图中,我们新建了一列叫做information,并在最后添加了after name,那么我们创建的列就会在name之后出现。

除了使用after来调整创建列的时候列的位置,还可以使用first将创建的列直接放在第一个:

删除一列

删除表中的一列和刚才使用的新增─列的语句格式十分相似,只是把关键词ADD改为DROP,语句后面不需要有数据类型、约束或位置信息。具体语句格式:

alter table 表名 drop 列名;

在上图中我们删除了book表的job列,执行之后这个列就被删除了。

修改一列

这条语句其实不只可用于重命名一列,准确地说,它是对一个列做修改(CHANGE):

alter table 表名 change 原列名 新列名 数据类型 [约束];

现在我们要把class列修改成c_class:

当原列名和新列名相同的时候,指定新的数据类型或约束,就可以用于修改数据类型或约束。需要注意的是,修改数据类型可能会导致数据丢失,所以要慎重使用。

注意在修改列名的时候一定要带上数据结构,否则会修改失败。

先看一下现在的表结构:

现在要把sex列的数据类型修改成int,但是列名不变:

这样就完成了对一列数据库的修改。

修改表中的数据

先看一下现在表中的数据

使用命令对表中的数值进行修改:

update 表名 set 列名 = 值 , 列名 = 值 , 列名 = 值 where 条件;

现在我添加一条数据:

现在要修改第二列数据的address的值:

并且可以同时修改多个列的值:

这样就完成了对列中数据的修改。

注意这里在修改的时候一定要加where条件,否则会将所有的列都进行修改。

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

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

相关文章

13 - 多线程之锁优化(中):深入了解Lock同步锁的优化方法

上一讲介绍了在 JVM 层实现的 Synchronized 同步锁的优化方法,除此之外,在 JDK1.5 之后,Java 还提供了 Lock 同步锁。那么它有什么优势呢? 相对于需要 JVM 隐式获取和释放锁的 Synchronized 同步锁,Lock 同步锁&#…

echarts legend如何控制标签文字长度

效果 代码,直接贴进去换掉就能测试 legend: {type: scroll,top: 10%,icon: circle,right: 5%,orient: vertical,formatter:(name)>{//下面三个值换一下就行let arr [{a| 科创团队 },{b| 10 个},{c| 100 %}]return arr.join( )},textStyle: { color: #C2…

java实现创建时间、修改时间自动生成

一、TbaleMetaObjectHandler package com.ybzx.zdbx.common.handler;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Compo…

一文了解Android App Bundle 格式文件

1. Android App Bundle 是什么? 从 2021 年 8 月起,新应用需要使用 Android App Bundle 才能在 Google Play 中发布。 Android App Bundle是一种发布格式,打包出来的格式为aab,而之前我们打包出来的格式为apk。编写完代码之后&a…

PowerDesginer提示打印机错误

PowerDesginer提示打印机错误 错误信息:在您可以执行与打印机有关的任务(例如页面设置或打印一个文档)之前,您必须已经安装打印机。您想现在安装打印机么? 运行 >services.msc> Print Spooler 启动服务

JSON是什么?认识 json

目录 一 Json定义 二 Json语法规则 三 json 的代码演示 一 Json定义 轻量级的文本数据交换格式具有自我描述性【看到某个Json数据就能知道它的特点】比xml传输速度快【跨平台】 二 Json语法规则 (1)语法 两种数据结构:对象和数组 大括号…

LGFormer:LOCAL TO GLOBAL TRANSFORMER FOR VIDEO BASED 3D HUMAN POSE ESTIMATION

基于视频的三维人体姿态估计的局部到全局Transformer 作者:马海峰 *,陆克 * †,薛健 *,牛泽海 *,高鹏程† * 中国科学院大学工程学院,北京100049 鹏程实验室,深圳518055 来源:202…

cartographer 学习

cartographer 学习 编译并运行代码 由于cartographer整体分成了两个包 一个是cartographer,不带ros的内容另一个是cartographer_ros,是已ros项目构建的 这样因为带了普通cmake的包,就没法使用catkin_make了,只能使用catkin_make_isolated …

Global mapper24.1最新中文版本教程以及安装包

Global mapper成为如此用户友好的数据编辑、分析等工具的部分原因是它如何处理已删除的要素。从撤消管理器到独立工作空间,已删除的功能并不总是消失。矢量特征以一种简单的方式,当您在需要时遇到它时几乎感觉像魔术一样,矢量特征存储在工作区…

【python基础知识】8.编程思维:如何解决问题-思维篇

文章目录 前言瓶颈1:知识学完就忘用法查询笔记深度理解笔记知识管理 瓶颈2:缺乏解题能力如何解题分析问题,明确结果思考需要的知识,或搜索新知识思考切入点尝试解决问题的一部分尝试重复1-4步 总结 前言 Hi,欢迎来到第…

three.js 纹理

默认情况下,您在 Three.js 中渲染的所有内容都会发送到屏幕上。毕竟,如果你看不到它,渲染它有什么意义呢?事实证明,有一个非常重要的点:在数据发送到屏幕(从而丢失)之前捕获数据。 …

Apache Doris 2.0 如何实现导入性能提升 2-8 倍

数据导入吞吐是 OLAP 系统性能的重要衡量标准之一,高效的数据导入能力能够加速数据实时处理和分析的效率。随着 Apache Doris 用户规模的不断扩大, 越来越多用户对数据导入提出更高的要求,这也为 Apache Doris 的数据导入能力带来了更大的挑战…

二进制+八进制+十进制+十六进制的转换关系

二进制+八进制+十进制+十六进制的转换关系 1.十进制:由0-9这九个数字组成,逢10进1,我们日常生活中用的就是十进制; 2.二进制:由0和1两个数字组成,逢2进1; 3.八进制:由0-7这8个数字组成,逢8进1; 4.十六进制:由0-9、A、B、C、D、E、F组成,A-F对应的是10-15,逢16进…

【Redis】为什么要学 Redis

文章目录 前言一、Redis 为什么快二、Redis 的特性2.1 将数据储存到内存中2.2 可编程性2.3 可扩展性2.4 持久性2.5 支持集群2.6 高可用性 三、Redis 的应用场景四、不能使用 Redis 的场景 前言 关于为什么要学 Redis 这个问题,一个字就可以回答,那就是&…

创建java文件 自动添加作者、时间等信息 – IDEA 技巧

文章目录 效果修改位置配置信息 效果 每次创建文件的时候,自动加上作者、时间等信息 修改位置 打开:File —> Settings —> Editor —> File and Code Templates —> includes —> FileHeader 配置信息 /*** author : JavaPub 王仕宇* d…

文件包含漏洞实战

加粗样式 文章目录 漏洞原理特点利用方法包含图片木马读取敏感文件 封装协议 复现环境准备漏洞点代码审计验证漏洞点读取敏感文件 文件包含漏洞文件上传漏洞深度利用中国蚁剑-getshell突破文件上传漏洞限制读取文件源码执行PHP命令远程文件包含 文件包含漏洞防御 本次测试仅供…

SMB 协议详解之-SMB1文件写入交互过程详解

本文介绍一下SMB协议的交互过程。由于SMB涉及非常多的字段,绝大多数人员没有必要对每个字段进行深入的了解(那可能更多的是协议开发人员需要做的工作)。对于SMB协议的学习,主要的目的是能够根据数据包的交互过程,还原出这次SMB交互干了什么,产生了哪些操作。因此本文聚焦…

centos执行systemctl restart命令报连接超时

centos执行systemctl restart命令报连接超时 Error getting authority: Error initializing authority: Error calling StartServiceByName for org.freedesktop.PolicyKit1: GDBus.Error:org.freedesktop.DBus.Error.TimedOut: Activation of org.freedesktop.PolicyKit1 tim…

LeetCode 18 四数之和

题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析 固定两个数&#xff0c;然后利用双指针来进行剩下两个数的筛选 主要使用的是三数之和的思想&#xff0c;具体可以看我上篇博客 注意去重 代码 class Solution { public:vector<…

学习笔记二十:Pod生命周期-启动钩子、停止钩子

Pod生命周期-启动钩子、停止钩子 Pod生命周期pod在整个生命周期的过程中总会处于以下几个状态&#xff1a;pod生命周期的重要行为&#xff1a;容器探测三种探针用于Pod检测 容器的重启策略定义是否重启Pod对象pod的终止过程 Init容器初始化容器与主容器区别是:初始化容器使用 P…