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

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

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

相关文章

RabbitMQ从入门到精通之安装、通讯方式详解

文章目录 RabbitMQ一、RabbitMQ介绍1.1 现存问题 一、RabbitMQ介绍二、RabbitMQ安装三、RabbitMQ架构四、RabbitMQ通信方式4.1 RabbitMQ提供的通讯方式4.2 Helloworld 方式4.2Work queues4.3 Publish/Subscribe4.4 Routing4.5 Topics4.6 RPC (了解) 五、Springboot 操作RabbitM…

【MyBatisⅡ】动态 SQL

目录 🎒1 if 标签 🫖2 trim 标签 👠3 where 标签 🦺4 set 标签 🎨5 foreach 标签 动态 sql 是Mybatis的强⼤特性之⼀,能够完成不同条件下不同的 sql 拼接。 在 xml 里面写判断条件。 动态SQL 在数据库里…

LeetCode 202 快乐数

题目链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 法一:哈希 使用哈希表循环判断每次经过平方和的数,如果为1则直接返回true,若之前存在过但不为1则直接返回false 代码 class Solution { public:// 计算…

【MySQL基础|第一篇】——谈谈SQL中的DDL语句

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 前言&#xff…

力扣(LeetCode)算法_C++——有效的数独

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) …

ChatGPT AIGC 完成多维分析雷达图

我们先让ChatGPT来帮我们总结一下多维分析雷达图的功能与作用。 同样ChatGPT AIGC完成的动态雷达图效果如下; 这样的一个多维分析动态雷达图是用HTML,JS,Echarts 来完成的。 将完整代码复制如下: <!DOCTYPE html> <html style="height: 100%"><h…

PHP8内置函数中的变量函数-PHP8知识详解

在php8中&#xff0c;与变量相关的内置函数比较多&#xff0c;本文说一些比较重要的、常见的内置函数。今日着重讲解了5个&#xff0c;分别是&#xff1a;检测变量是否为空的函数empty()、判断变量是否定义过的函数isset()、销毁指定的变量的函数unset()、获取变量的类型的函数…

通过Siri打造智能爬虫助手:捕获与解析结构化数据

在信息时代&#xff0c;我们经常需要从互联网上获取大量的结构化数据。然而&#xff0c;传统的网络爬虫往往需要编写复杂代码和规则来实现数据采集和解析。如今&#xff0c;在苹果公司提供的语音助手Siri中有一个强大功能可以帮助我们轻松完成这项任务——通过使用自定义指令、…

MySQL表的CURD

CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#xff0c;Delete&#xff08;删除&#xff09; Create 语法 INSERT [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ... value_list: value, [, value] ... 示例&#x…

鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&am…

基于Hata模型的BPSK调制信号小区覆盖模拟matlab完整程序分享

基于Hata信道模型的BPSK调制信号小区覆盖模拟matlab仿真&#xff0c;对比VoIP, Live Video,FTP/Email 完整程序&#xff1a; clc; clear; close all; warning off; addpath(genpath(pwd)); % Random bits are generated here. bits randi([0, 1], [50,1]); M 2; t 1:1:50; …

Lesson5-2:OpenCV视频操作---视频追踪

学习目标 理解meanshift的原理知道camshift算法能够使用meanshift和Camshift进行目标追踪 1.meanshift 1.1原理 m e a n s h i f t meanshift meanshift算法的原理很简单。假设你有一堆点集&#xff0c;还有一个小的窗口&#xff0c;这个窗口可能是圆形的&#xff0c;现在你可…

【算法】堆排序 详解

堆排序 详解 堆排序代码实现 排序&#xff1a; 排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a; 假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c…

企业架构LNMP学习笔记18

nginx的日志&#xff1a; 日志类型&#xff1a; access.log 访问日志、查看统计用户的访问信息&#xff0c;流量。 error.log 错误日志&#xff0c;错误信息&#xff0c;重写信息。 access.log日志文件内容示例&#xff1a; 192.168.17.1 - - [06/Sep/2023:20:37:39 0800] …

前端开发从 0 到 1 掌握 docker

文章目录 前端从 0 到 1 掌握 docker一、docker 的一些基础概念概念定义question&#xff1a;什么是docker&#xff1f; 为什么要使用docker&#xff1f; 二、实战操作 (墙裂建议读者实操一遍)Part1 - Linux CentOS 服务安装 DockerPart2 - 启动、使用、查看等命令Part3 - 示例…

循迹小车原理介绍和代码示例

目录 循迹小车 1. 循迹模块使用 2. 循迹小车原理 3. 循迹小车开发和调试代码 循迹小车 1. 循迹模块使用 TCRT5000传感器的红外发射二极管不断发射红外线当发射出的红外线没有被反射回来或被反射回来但强度不够大时红外接收管一直处于关断状态&#xff0c;此时模块的输出…

智能小车—PWM方式实现小车调速和转向

目录 1. 让小车动起来 2. 串口控制小车方向 3. 如何进行小车PWM调速 4. PWM方式实现小车转向 1. 让小车动起来 电机模块开发 L9110s概述 接通VCC&#xff0c;GND 模块电源指示灯亮&#xff0c; 以下资料来源官方&#xff0c;具体根据实际调试 IA1输入高电平&#xff0c…

mybatisplus多租户配置

概述 当前mybatisPlus版本 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.2</version> </dependency>jdk版本&#xff1a;17 springboot版本&#xff1a;…

五大类注解和方法注解详解

五大类注解为Controller&#xff0c;Service&#xff0c;Repository&#xff0c;Configuration&#xff0c;Component,方法注解为Bean。 需要注意的是&#xff1a;Bean注解必须要在类注解修饰的类内才能正常使用。 一、与配置文件的关系 在spring原生项目中 如果你使用的spri…

ES6中let和const关键字与var关键字之间的区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 变量作用域&#xff08;Scope&#xff09;&#xff1a;⭐ 变量提升&#xff08;Hoisting&#xff09;&#xff1a;⭐ 重复声明&#xff1a;⭐ 初始化&#xff1a;⭐ 全局对象属性&#xff1a;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#…