5-MySQL列定义
1.列定义
说明:在MySQL中,列定义(Column Definition)是用于定义数据库表中每一列的结构的语句。它指定了列的名称、数据类型、长度、约束以及其他属性。

2.主键和自增
主键:PRIMARY KEY是数据库表中的一个字段,被用作主键。主键用于唯一标识表中的每一行/记录。在创建表时,通常会为主键字段指定一个唯一约束,以确保每条记录的主键值都是唯一的。主键不能包含空值,即主键字段必须包含数据(非空)。

主键存在,出现的报错问题:

自增:AUTO_INCREMENT是一种属性,可以设置为整数类型的列。当你在表中插入新行并不指定该列的值时,数据库会自动为该列提供一个唯一的递增值。通常,AUTO_INCREMENT用于为主键列生成唯一的标识符,以确保每个行都有一个唯一的标识符。在插入新行时,如果没有为该列提供值,数据库会自动递增前一个值并将其分配给新行。这样可以确保每个行都有一个唯一的主键值。重新生成

主键和自增的关系:在MySQL中,主键(PRIMARY KEY)和自增(AUTO_INCREMENT)通常是一起使用的。主键用于唯一标识表中的每一行/记录,而自增则是一种属性,可以设置为整数类型的列。当你在表中插入新行并不指定该列的值时,数据库会自动为该列提供一个唯一的递增值。通常,主键列被设置为自增列。这样,当你插入新行时,如果没有为该列提供值,数据库会自动递增前一个值并将其分配给新行。这样可以确保每个行都有一个唯一的主键值。


3.唯一
一张表可以设置多个unique
说明:在MySQL中,unique指的是“唯一约束”,用于确保表中的特定列的值是唯一的,也就是说该列中的所有值都是唯一的。这有助于确保数据的准确性和完整性。例如,如果你有一个名为users的表,并且想确保email列中的值是唯一的,那么可以将unique应用于email列。这样,每次尝试向表中插入具有重复email值的行时,都会导致错误。

4.默认值
说明:在MySQL中,DEFAULT是关键字,表示默认值。在创建数据表时,可以为某个列设置默认值。当插入数据时,如果没有给该列赋值,则默认为设置的默认值。


常见默认值的报错情况


5.不为空
说明: 在MySQL中,NOT NULL是一种约束,可以用于表的字段。这个约束的作用是确保该字段的值不能为空,也就是说,每个该字段的值都必须有。如果你在一个表中使用NOT NULL约束,那么当你试图插入一个空值到这个字段时,MySQL将会抛出一个错误。这样可以确保每个该字段的值都有实际意义,从而保证数据的准确性和一致性。

6.无符号
说明:在MySQL中,unsigned(无符号)是一种数据类型的修饰符,可以用于整型数据类型,如INT、BIGINT等。它改变了数据类型的表示方式,使得这些整型数据类型不再使用带符号的二进制表示,而是使用无符号的二进制表示。在无符号的二进制表示中,数据类型仅包含非负整数。使用unsigned的主要好处是,它可以在不改变数据类型的前提下,增加数据类型所能存储的最大值。例如,INT UNSIGNED的最大值为4294967295,而INT的最大值仅为2147483647。这可以极大地提高存储空间的利用率,并且可以避免使用较大的数据类型来存储小的非负整数。不过,unsigned是非标准的SQL语法,使用时可能会有移植性的问题,所以在进行数据库移植时要特别注意。

可能会遇到的问题:
在MySQL中,unsigned是一种数据类型的修饰符,可以用于整型数据类型,如INT、BIGINT等。它改变了数据类型的表示方式,使得这些整型数据类型不再使用带符号的二进制表示,而是使用无符号的二进制表示。这意味着数据类型仅包含非负整数,而不包含负数。
当使用unsigned修饰符时,确实可能会遇到移植性的问题。这是因为不同的数据库管理系统(DBMS)可能对unsigned有不同的支持和实现方式,从而导致数据类型的使用在不同DBMS之间存在差异。
例如,在一些DBMS中,使用unsigned修饰符可能会使数据类型占用更多的存储空间,或者在某些操作中可能存在性能问题。此外,不同的DBMS可能对数据类型的取值范围有不同的限制,这也会影响使用unsigned修饰符时的效果。
为了避免移植性问题,建议在数据库移植时特别注意unsigned的使用。如果需要在不同的DBMS之间移植数据,最好避免使用unsigned修饰符,或者在移植前仔细检查不同DBMS之间数据类型的差异,以确保数据的正确性和完整性。
常见的报错问题:

7.清空数据表
说明:在MySQL中,TRUNCATE是一种用于删除表中所有数据的操作,它也可以重置自增长值。但需要注意的是,TRUNCATE命令不适用于InnoDB存储引擎的表,对于InnoDB表,应该使用DELETE语句来删除行,然后使用ALTER TABLE语句重置自增长值。
truncate table 数据表名;
truncate 和delete的区别:
delete 删除全部数据,如果重新加入新的数据,则id将会从删除之前的最大值依次+1,truncate 删除全部数据,如果重新加入新的数据则id从1 重新开始。
8.备注
comment :在MySQL中,COMMENT是一种用于添加备注和注释的方法。其主要作用是为表、字段或SQL语句等信息添加说明性文字,从而方便用户对数据的理解和识别。
(1).为数据表添加注释:可以使用ALTER TABLE语句为指定数据表添加注释。注释内容会显示在数据库的元数据中,方便后续管理员或其他开发人员了解该表的作用、设计意图等。

(2).为字段添加注释: 在设计数据表时,可以为每个字段添加注释。注释内容可以描述字段的用途、允许的取值范围等信息,方便其他开发人员更好地理解该字段。
SELECT column_name FROM table_name WHERE column_name='value' /* This is a comment for the query */;
(3).在SQL语句中添加注释:在编写复杂SQL语句时,可以添加注释来方便代码的阅读和维护。注释可以用于标记SQL语句的作用、性能优化等信息。
SELECT column_name FROM table_name WHERE column_name='value' /* This is a comment for the query */;
comment在MySQL中的意义:总之,在MySQL中,使用COMMENT可以增加代码的可读性、可维护性和易用性。在实际开发中,合理使用注释可以使代码更加规范和易于理解。
5-MySQL列定义的更多相关文章
- MySQL 列定义的类型是varchar,已建立索引,查询时如果传入的是数字,则无法利用索引,查询特别慢。
类型不对,导致无法充分利用索引. 比如:select * from table_name_xxx where name = "1234"; ---- 查询很快 ,能够使用到na ...
- MySQL 建表语句 create table 中的列定义
MySQL 建表语句 create table 中的列定义: column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value ...
- MySQL服务 - MySQL列类型、SQL模式、数据字典
MySQL列类型的作用: 列类型可以简单理解为用来对用户往列种存储数据时做某种范围"限定",它可以定义数据的有效值(字符.数字等).所能占据的最大存储空间.字符长度(定长或变长). ...
- mysql 自己定义存储过程和触发器
mysql 自己定义存储过程和触发器 --存储过程示范 DROP PROCEDURE IF EXISTS PRO_TEST; CREATE PROCEDURE PRO_TEST(IN NUM_IN I ...
- mysql基础: mysql列类型--字符串
mysql列类型:整型 http://blog.csdn.net/jk110333/article/details/9342283 mysql列类型--时间和日期 http://blog.csd ...
- mysql基础:mysql列类型--时间和日期
mysql列类型--整型 http://blog.csdn.net/jk110333/article/details/9342283 mysql列类型--字符串http://blog.csdn.net ...
- MySQL 列,可选择的数据类型(通过sql命令查看:`help create table;`)
MySQL 列,可选择的数据类型(通过sql命令查看:help create table;) BIT[(length)] | TINYINT[(length)] [UNSIGNED] [ZEROFIL ...
- mysql查询列定义,是否自增等
SELECT ORDINAL_POSITION AS Colorder, Column_Name AS ColumnName, data_type AS TypeName, COLUMN_COMMEN ...
- MySQL表定义缓存
表定义 MySQL的表包含表名,表空间.索引.列.约束等信息,这些表的元数据我们暂且称为表定义信息. 对于InnoDB来说,MySQL在server层和engine层都有表定义信息.server层的表 ...
- MySQL数据库定义与操作语言
文章为作者原创,未经许可,禁止转载. -Sun Yat-sen University 冯兴伟 实验1.1 数据库定义 (1)实验目的 理解和掌握数据库DDL语言,能够熟练地使用SQL DDL语句 ...
随机推荐
- 如何科学地利用MTTR优化软件交付流程?
谷歌提出的衡量 DevOps 质量的 DORA 指标让 MTTR(平均恢复时间) 名声大振.在本文中,你将了解到 MTTR 的作用.为什么它对行业研究很有用.你可能被它误导的原因以及如何避免 MTTR ...
- NLM 公布了一个新的重新设计的 PubMed 数据库
经常使用 PubMed 的童鞋可能已经发现,美国国家医学图书馆(NLM)在今年 10 月份左右发布了一个新的重新设计的版本以取代 PubMed 数据库的现有版本,新版本现在已经上线,可以通过下面的链接 ...
- 一次 SSH 攻击与处理小记
这是我在简书看到的一个作者经历,结合小编自己的一些实践,抛砖引玉,给大家分享一下. 有段时间发现集群异常卡顿.担心的事情终于发生了,使用命令 lastb 查看了一下,我的天呢,好多未知的 IP,我随便 ...
- CANoe _ DBC 的创建过程
在Canoe中创建DBC(Database Container)文件,用于描述和定义CAN总线上的节点.消息和信号,遵循以下步骤: 1.打开Canoe 启动Canoe软件. 2.创建新项目 在Cano ...
- 【HarmonyOS】如何获取公共目录的图片等文件(API7 FA模型JS语言)
[关键字] API7.JS.公共目录.@ohos.multimedia.mediaLibrary [前言] 在使用API7 JS开发HarmonyOS应用时,需要获取非应用目录即内部存储公共目录下 ...
- celery笔记六之worker介绍
本文首发于公众号:Hunter后端 原文链接:celery笔记六之worker介绍 前面我们介绍过 celery 的理想的设计方式是几个 worker 处理特定的任务队列的数据,这样可以避免任务在队列 ...
- 自然语言处理 Paddle NLP - 开放域对话系统-理论
常见的对话系统 个人助手 •Apple Siri, Amazon Alexa, Baidu Xiaodu 客户服务•餐厅预定.商品咨询.债务催收 休闲娱乐 •Microsoft XiaoIce,Rep ...
- 揭开 RocketMQ 事务消息的神秘面纱
事务消息是 RocketMQ 的高级特性之一,相信很多同学都对于其实现机制很好奇. 这篇文章,笔者会从应用场景.功能原理.实战例子.实现细节四个模块慢慢为你揭开事务消息的神秘面纱. 1 应用场景 以电 ...
- Flutter 屏幕采集如何实现(提供示例demo)
在视频会议.线上课堂.游戏直播等场景,屏幕共享是一个最常见的功能.屏幕共享就是对屏幕画面的实时共享,端到端主要有几个步骤:录屏采集.视频编码及封装.实时传输.视频解封装及解码.视频渲染.一般来说,实时 ...
- 王道oj/problem7(判断数字是否为对称数)
网址:http://oj.lgwenda.com/problem/7 思路:用temp保存原数: 不断对原数进行/10及取余运算,并加到num2中: 最后判断num2是否与temp相等. 代码: #d ...