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列定义的更多相关文章

  1. MySQL 列定义的类型是varchar,已建立索引,查询时如果传入的是数字,则无法利用索引,查询特别慢。

    类型不对,导致无法充分利用索引. 比如:select * from table_name_xxx where name = "1234";  ----  查询很快 ,能够使用到na ...

  2. MySQL 建表语句 create table 中的列定义

    MySQL 建表语句 create table 中的列定义: column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value ...

  3. MySQL服务 - MySQL列类型、SQL模式、数据字典

    MySQL列类型的作用: 列类型可以简单理解为用来对用户往列种存储数据时做某种范围"限定",它可以定义数据的有效值(字符.数字等).所能占据的最大存储空间.字符长度(定长或变长). ...

  4. mysql 自己定义存储过程和触发器

    mysql 自己定义存储过程和触发器 --存储过程示范 DROP PROCEDURE IF EXISTS PRO_TEST; CREATE PROCEDURE PRO_TEST(IN NUM_IN I ...

  5. mysql基础: mysql列类型--字符串

    mysql列类型:整型   http://blog.csdn.net/jk110333/article/details/9342283 mysql列类型--时间和日期  http://blog.csd ...

  6. mysql基础:mysql列类型--时间和日期

    mysql列类型--整型 http://blog.csdn.net/jk110333/article/details/9342283 mysql列类型--字符串http://blog.csdn.net ...

  7. MySQL 列,可选择的数据类型(通过sql命令查看:`help create table;`)

    MySQL 列,可选择的数据类型(通过sql命令查看:help create table;) BIT[(length)] | TINYINT[(length)] [UNSIGNED] [ZEROFIL ...

  8. mysql查询列定义,是否自增等

    SELECT ORDINAL_POSITION AS Colorder, Column_Name AS ColumnName, data_type AS TypeName, COLUMN_COMMEN ...

  9. MySQL表定义缓存

    表定义 MySQL的表包含表名,表空间.索引.列.约束等信息,这些表的元数据我们暂且称为表定义信息. 对于InnoDB来说,MySQL在server层和engine层都有表定义信息.server层的表 ...

  10. MySQL数据库定义与操作语言

    文章为作者原创,未经许可,禁止转载.    -Sun Yat-sen University 冯兴伟 实验1.1 数据库定义 (1)实验目的 理解和掌握数据库DDL语言,能够熟练地使用SQL DDL语句 ...

随机推荐

  1. JVM 诊断神器-Arthas实战

    什么是Arthas(阿尔萨斯) 阿里开源的Java诊断工具,它可以在运行时对Java应用程序进行动态诊断和调试 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决 这个类从哪个 jar 包加 ...

  2. Python生成器深度解析:构建强大的数据处理管道

    前言 生成器是Python的一种核心特性,允许我们在请求新元素时再生成这些元素,而不是在开始时就生成所有元素.它在处理大规模数据集.实现节省内存的算法和构建复杂的迭代器模式等多种情况下都有着广泛的应用 ...

  3. LINQ检索使用

    我看网上对LINQ的讲解 自己整合了一下 是语言集成查询(Language Integrated Query)是一组用于C#和Visual Basic语言的扩展.能够允许编写C#或VB代码以查询数据相 ...

  4. CKS 考试题整理 (07)-RBAC - RoleBinding

    Context 绑定到 Pod 的 ServiceAccount 的 Role 授予过度宽松的权限,完成以下项目以减少权限集. Task 一个名为 web-pod 的现有 Pod 已在 namespa ...

  5. GPT3的内部结构:基于自回归、注意力机制等技术的语言处理框架

    目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 6. 结论与展望 7. 附录:常见问题与解答 GPT-3 是当前最为先进的自然语言处理框架之一,由 Open ...

  6. ElasticSearch - 批量更新bulk死锁问题排查

    一.问题系统介绍 监听商品变更MQ消息,查询商品最新的信息,调用BulkProcessor批量更新ES集群中的商品字段信息; 由于商品数据非常多,所以将商品数据存储到ES集群上,整个ES集群共划分了2 ...

  7. Mybatis-SQL分析组件

    背景 大促备战,最大的隐患项之一就是慢sql,带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,而且对sql好坏的评估有一定的技术要求,有一些缺乏经验或者因为不够仔细造成一个坏的sql成 ...

  8. Redis的设计与实现(4)-跳跃表

    跳跃表 (skiplist) 是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的. 跳跃表支持平均 O(log N) 最坏 O(N) 复杂度的节点查找, ...

  9. 使用clip-path将 GIF 绘制成跳动的字母

    前言 之前看到过一个有趣的CSS效果,今天我们也来实现一遍,将动图GIF通过clip-path绘制成一个个跳动的字母. 效果如下: GIF随便找的,嗯?这不是重点,重点是下面的实现过程,别被GIF吸引 ...

  10. Oracle随机生成大数据

    Oracle随机插入大数据 话不多说,安排 示例: -- 创建新表并批量插入五千万数据 create table TEST_TAB as select rownum as id, to_char(sy ...