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可以增加代码的可读性、可维护性和易用性。在实际开发中,合理使用注释可以使代码更加规范和易于理解。