关于建表、表字段的增删改等的语法及举例(字段类型、字段约束、建表语法、表字段增删改、注意事项等)

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • 一、建表模板
  • 二、字段
    • 1. 字段类型
    • 2. 字段约束
  • 三、字段定义语法及举例
    • 1. 指定字段的默认值
    • 2. 指定字段的值唯一
    • 3. 非空字段定义
    • 4. 混合使用
  • 四、建表后对字段的操作
    • 1. 新增字段
    • 2. 修改字段
      • 2.1 修改字段名
      • 2.2 修改字段名和类型
    • 3. 删除字段
    • 4. 修改或删除字段的默认值
      • 4.1 修改字段的默认值
      • 4.2 删除字段的默认值
  • 五、拓展
    • 1. VARCHAR和CHAR的区别
    • 2. INTEGER和INT的区别
    • 3. INTEGER(10)警告
    • 4. 字符集问题


一、建表模板

建表语法

模板

CREATE TABLE if NOT EXISTS `tb_test_tool` (
	`id` INTEGER UNSIGNED AUTO_INCREMENT ,
	`tool_id` INTEGER NOT NULL ,
	`tool_name` VARCHAR(60) ,
	`tool_description` VARCHAR(100) ,
	`tool_version` VARCHAR(20) ,
	`tool_creater` VARCHAR(10) ,
	`tool_applicable_scope` VARCHAR(50) ,
	`tool_create_time` DATETIME ,
	PRIMARY KEY (`id`)
)ENGINE = INNODB default CHARSET = UTF8MB4 ;

二、字段

1. 字段类型

MySQL中的表字段类型主要有以下几种

类型名作用类型值
整型Integer用于存储整数类型的值如INT、BIGINT、TINYINT、SMALLINT、MEDIUMINT、BIT
字符型Text用与存储字符串类型的值如CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、JSON、UUID
日期时间型DateTime用于存储日期时间类型的值如DATE、TIME、YEAR、DATETIME、TIMESTAMP
二进制文件类型用于存储二进制类型的值如BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
空间类型用于存储空间类型的值如POINT、LINESTRING、POLYGON、GEOMETRY、MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION
浮点型用于存储更为精确的数值如FLOAT、DOUBLE、DECIMAL
其他类型用于存储其他类型的值如UNKNOWN、ENUM、SET

2. 字段约束

约束字段的取值范围和行为

约束名解释作用
DEFAULT默认值约束用于设置字段默认值
NOT NULL非空约束用于限制字段不能为空
PRIMARY KEY主键约束用于唯一标识表的每一行,保证每行的唯一性,一般都是默认的id,也可自定义
FOREIGN KEY外键约束用于与其他表建立关联关系的字段,保持数据的完整性
UNIQUE唯一约束用于限制字段的值在表中不能重复,表中该字段的值唯一

三、字段定义语法及举例

1. 指定字段的默认值

关于如何在建表时指定字段的默认值:
语法

`字段名` 字段类型 DEFAULT 默认值 

举例
将字段name的值默认为李白

`name` varchar(20) default "libai" 

注:在sql语法中字符串需要加双引号,数字不需要加

2. 指定字段的值唯一

建表时指定字段值唯一,该字段的值不可重复存入
语法

`字段名` 字段类型 unique 

举例
将字段name的值唯一,一旦存入一个值,该表中此字段的值不可重复,即相同的值不可以存入第二次

`name` varchar(20) unique 

3. 非空字段定义

语法

`字段名` 字段类型 not null 

举例
将字段name的值定义为不为空,则存入数据时该字段必须有值

`name` varchar(20) not null 

4. 混合使用

字段约束可以多个约束字段同时使用
语法

`字段名` 字段类型 not null unique 

举例
将字段name的值定义为不为空且值唯一,则存入数据时该字段必须有值,且不可重复

`name` varchar(20) not null unique

四、建表后对字段的操作

1. 新增字段

在已有表中新增字段
语法

alter table 表名 add 字段名 字段类型 ;

举例
如在已创建的表tb_test_user中新增字段address,类型为varchar,长度50

alter table tb_test_user add address varchar(50) ;

2. 修改字段

2.1 修改字段名

如果只是单纯修改字段的名字,可使用以下命令
语法

alter table 表名 rename column 原字段 to 新字段 ;

举例
如将表字段address改为address123

alter table tb_test_user rename column address to address123 ;

2.2 修改字段名和类型

修改表字段名和类型
在已有的表中修改现有表字段名
语法

alter table 表名 change 原字段 新字段 新字段类型 ;

举例
如将表字段address改为address123,类型改为varchar(50)

alter table tb_test_user change address address123 varchar(50) ;

注:该命令执行时会提示 mysql后续版本会移除该命令,也就是该命令在以后的版本中可能会不可用

3. 删除字段

使用drop移除字段
语法

alter table 表名 drop column 字段 ;

举例
如移除表字段address

alter table tb_test_user drop address ;

4. 修改或删除字段的默认值

4.1 修改字段的默认值

使用alter set关键字来修改字段默认值
语法

alter table 表名 alter column 字段 set default 默认值 ;

举例
将表tb_test_user中的字段age的默认值修改为30

alter table tb_test_user alter column age set default 30 ;

4.2 删除字段的默认值

语法

alter table 表名 alter column 字段 drop default ;

举例
将表tb_test_user中的字段age的默认值删除

alter table tb_test_user alter column age drop default ;

删除后插入数据时没有该字段的值时默认会变为null

五、拓展

1. VARCHAR和CHAR的区别

主要为长度的区别,CHAR是固定长度,VARCHAR是可变长度

  • CHAR类型的值不满足定义长度时会以空格填充,直到填充为定义时的长度为止,当然,这样会占用额外的空间
  • VARCHAR类型的值不满足长度时也不会填充,但是会有一个额外的值来记录字符长度,这种类型可能更灵活
  • VARCHAR和CHAR后面括号中的值就是定义的最大字符长度的值,该值为字节byte的值,每个英文一个字节,每个中文为两个字节,如VARCHAR(50)表示该字段可存储字符英文为50个,或者中文25个,或者混合存储,加起来字节最多为50

2. INTEGER和INT的区别

无区别

3. INTEGER(10)警告

数值类型后无需加括号和值,如INTEGER

	`tool_id` INTEGER(10) NOT NULL ,

报警告,警告描述表示在后续的版本中会移除对INTEGER类型字符宽度的描述,也就是INTEGER后面不需要跟括号和值指定
这是一种多余的做法

在这里插入图片描述
修改为

	`tool_id` INTEGER NOT NULL ,

4. 字符集问题

以前建表定义字符集就是utf8,现在建议就是使用utf8mb4
如下

ENGINE = INNODB default CHARSET = UTF8 ;

警告描述,在后续的版本中将会移除utf8的使用,现在用的是utf8mb3后续会更新为utf8mb4,推荐使用utf8mb4
在这里插入图片描述
将字符集修改为UTF8MB4

ENGINE = INNODB default CHARSET = UTF8MB4 ;

感谢阅读,祝君暴富!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ASUS华硕ROG幻15笔记本GU502GU原装出厂Windows10系统工厂模式安装包下载,带MyASUS WinRE恢复重置功能

华硕ROG Zephyrus M15笔记本原厂Win10预装OEM系统,恢复开箱状态 适用型号:GU502GW,GU502GU,GU502GV 链接:https://pan.baidu.com/s/1lTK_CUFT9N3q0sXBS7ENPg?pwd8hm2 提取码:8hm2 华硕原装W10系统工厂…

警惕虚假宣传:GPT-4.0免费领取真相揭秘

警惕虚假宣传:GPT-4.0免费领取真相揭秘 在人工智能技术飞速发展的今天,尤其是OpenAI推出的GPT-4.0成为技术前沿的焦点,不少不法分子也开始借机进行欺诈。网络上出现了大量声称“免费领取GPT-4.0”的虚假信息,这不仅误导了公众&am…

嵌入式全栈开发学习笔记---C语言知识复习大全1

目录 Linux开发者的基本素养-文件分类 补充命令1-pwd 补充命令2-clear 在Linux上编写C程序 在Linux上编译程序 思考:C语言中一定要main函数吗 我们为什么要学习C语言?学习C语言有助于理解计算机底层工作原理! 后面我们的很多项目也都是…

ML.NET机器学

一、新建项目MLL 二、选择方案 我们这里选择的是计算机视觉-->图像分类 三、选择环境 本地(CPU) 四、选择数据 我自己造了2个验证码的目录 五、训练 六、评估 7、代码中使用 运行效果:

MySQL中索引的数据结构

2.3.1. 索引数据结构 索引就是能够提高查询速度的一种数据结构,在数据插入时就进行了排序(会影响插入和更新的性能),索引广泛使用的是B树索引。 B树索引结构: 目前是基于磁盘排序效率最高的数据结构,树非…

Linux:浏览器访问网站的基本流程(优先级从先到后)

浏览器访问网站的基本流程(优先级从先到后) 首先查找浏览器是否存在该网站的访问缓存 其次查找本机的域名解析服务器 windows:C:\Windows\System32\drivers\etc\hostsLinux:/etc/hosts 使用外部的域名解析服务器解析&#xff…

如何安装cuda版本的torch-sparse和torch-scatter

安装对应cuda版本的torch,确保cuda可用 使用nvidia-smi查看cuda版本,我的是11.4,然后就找到pytorch历史版本,页面搜索cuda 11.4,没搜到,继续往小版本搜,搜到cuda 11.3,果断安装&…

【深度学习实战(29)】后处理之NMS(非极大值抑制)

一、NMS工作原理 NMS 的工作原理: 置信度排序:对于每个类别,NMS 首先根据每个边界框的置信度(即预测框中含有目标的概率)进行排序。选择最高置信度框:从置信度最高的边界框开始,将其作为当前考…

# 从浅入深 学习 SpringCloud 微服务架构(七)Hystrix(2)

从浅入深 学习 SpringCloud 微服务架构(七)Hystrix(2) 一、Hystrix:基于 RestTemplate 的统一降级配置 1、Hystrix:基于 RestTemplate 的统一降级配置 步骤: 1)在项目的 pom.xml …

前端 CSS

目录 选择器 复合选择器 伪类-超链接 结构伪装选择器 伪元素选择器 画盒子 字体属性 CSS三大属性 Emmet写法 背景属性 显示模式 盒子模型 盒子模型-组成 盒子模型-向外溢出 盒子模型-圆角 盒子模型-阴影 flex position定位 CSS小精灵 字体图标 垂直对齐方式…

《R语言与农业数据统计分析及建模》学习——logistic回归和poisson回归

普通线性回归通常用来描述变量y与x之间的线性关系: 普通线性模型的假设是:响应变量y是连续型变量而且,服从正态分布分布。但在很多现实情况y并不是正态分布,如:二值问题/多分类问题,计次问题等,…

防火墙远程桌面端口号修改,如何用防火箱修改远程桌面的端口号

在网络安全日益重要的今天,修改远程桌面服务的默认端口号已成为提高系统安全性的重要手段。通过修改端口号,可以有效防止潜在的恶意攻击者通过扫描常见端口来发现并利用系统的漏洞。本文将详细介绍如何在Windows系统中修改远程桌面服务的端口号&#xff…

2024 五一杯高校数学建模邀请赛(C题)| 煤矿深部开采冲击地压危险预测 |建模秘籍文章代码思路大全

铛铛!小秘籍来咯! 小秘籍团队独辟蹊径,构建了这一题的详细解答哦! 为大家量身打造创新解决方案。小秘籍团队,始终引领着建模问题求解的风潮。 抓紧小秘籍,我们出发吧~ 让我们看看五一杯的C题! 完…

动静态库(完结版)

文章目录 接上篇完成blog第三方库安装演示动态库加载原理一二三四 接上篇完成blog 上篇链接 第三方库安装演示 sudo yum install -y ncurses-devel下载完成之后 在系统目录下面一定能找到对应的头文件和库文件 此时使用第三方库: 编译之后按错误提示是对应的函数找不到,所以链…

C语言 | Leetcode C语言题解之第60题排列序列

题目&#xff1a; 题解&#xff1a; char* getPermutation(int n, int k) {int factorial[n];factorial[0] 1;for (int i 1; i < n; i) {factorial[i] factorial[i - 1] * i;}--k;char* ans malloc(n 1);ans[n] \0;int valid[n 1];for (int i 0; i < n; i) {val…

“云卷数潮”云原生数据库分论坛亮点回顾!

4月29日&#xff0c;2024中国移动算力网络大会“云卷数潮”云原生数据库分论坛在江苏苏州举行。本次论坛不仅是技术交流的盛宴&#xff0c;更是行业发展趋势的风向标。论坛汇聚了众多企业领袖、专家学者及行业精英&#xff0c;共话云原生数据库技术发展&#xff0c;探讨行业最新…

git 配置相关

问题一&#xff1a;ssh-keygen -t ed25519 -C "Gitee SSH Key" 这个命令中的 ed25519 字符是什么意思&#xff1f; ssh-keygen 是一个用于生成SSH密钥的工具&#xff0c;SSH&#xff08;Secure Shell&#xff09;是一种网络协议&#xff0c;用于加密方式远程登录和其…

数据库(MySQL)—— DML语句

数据库&#xff08;MySQL&#xff09;—— DML语句 什么是DML语句添加数据给全部字段添加数据批量添加数据 修改数据删除数据 什么是DML语句 在MySQL中&#xff0c;DML&#xff08;Data Manipulation Language&#xff0c;数据操纵语言&#xff09;语句主要用于对数据库中的数…

http的basic 认证方式

写在前面 本文看下http的basic auth认证方式。 1&#xff1a;什么是basic auth认证 basic auth是一种http协议规范中的一种认证方式&#xff0c;即一种证明你就是你的方式。更进一步的它是一种规范&#xff0c;这种规范是这样子&#xff0c;如果是服务端使用了basic auth认证…

java:EasyExcel使用(一)读excel

java&#xff1a;EasyExcel使用&#xff08;一&#xff09;读excel 1 前言 EasyExcel相比于传统使用poi进行excel文件读写&#xff0c;编程使用操作上更加方便快捷&#xff0c;且对于内存溢出进行了优化处理。本文是EasyExcel读excel操作。 Java解析、生成Excel比较有名的框…