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. 【爬虫+数据清洗+可视化】用Python分析“淄博烧烤“的评论数据

    目录 一.背景介绍 二.爬虫代码 2.1 展示爬取结果 2.2 爬虫代码讲解 三.可视化代码 3.1 读取数据 3.2 数据清洗 3.3 可视化 3.3.1 IP属地分析-柱形图 3.3.2 评论时间 ...

  2. PyInstaller 完美打包 Python 脚本,输出结构清晰、便于二次编辑的打包程序

    引入问题 如果我要写一个 Python 项目,打包成 exe 运行(方便在没有 Python 的电脑上使用),我需要打包出的根目录结构美观,没有多余的.杂乱的依赖文件在那里碍眼,而且需要在发现 bug ...

  3. 万字长文讲透 RocketMQ 4.X 消费逻辑

    RocketMQ 是笔者非常喜欢的消息队列,4.9.X 版本是目前使用最广泛的版本,但它的消费逻辑相对较重,很多同学学习起来没有头绪. 这篇文章,笔者梳理了 RocketMQ 的消费逻辑,希望对大家有 ...

  4. 【LeetCode专题#基本计算器】基本计算器I,图解中序表达式转逆波兰表达式,太难了

    基本计算器 https://leetcode.cn/problems/basic-calculator/?envType=list&envId=cKNEfNsF 给你一个字符串表达式 s ,请 ...

  5. MAUI Blazor 项目实战 - 从0到1轻松构建多平台应用UI

    前言 最近在项目中尝鲜了MAUI,总体感受下来还是挺不错的,优缺点并存,但是瑕不掩瑜,目前随着.Net版本的迭代升级对它的支持也越来越友好,相信未来可期!感兴趣的朋友欢迎关注.文章中如有不妥的地方,也 ...

  6. Mybatis Generator 配置详解

    因原版观感不佳,搬运至此. 作者:Jimin 链接:https://www.imooc.com/article/21444 来源:慕课网 <?xml version="1.0" ...

  7. 前端vue简单好用的上拉加载下拉刷新组件,支持列表分页 本地分页

    前端vue简单好用的上拉加载下拉刷新组件,支持列表分页 本地分页, 下载完整代码请访问uni-app插件市场地址: https://ext.dcloud.net.cn/plugin?id=12942 ...

  8. CompletableFuture之批量上传

    前言 最近接到一个需求,批量上传图片到服务器及实时更新上传进度.当处理大量文件上传任务时,效率是一个关键因素.传统的串行方式会导致任务耗时较长,而使用并发处理可以极大地提高上传效率.想到很久之前用Co ...

  9. Matlab学习1

    Matlab 数据类型 数字 字符和字符串 矩阵 元胞数组 结构体 清空环境变量及命令 cls % 清除Command Windows中的所有命令 clear all % 清除Workspace*中的 ...

  10. [SDOI2008] 仪仗队【题解】

    题目描述 作为体育委员,C 君负责这次运动会仪仗队的训练.仪仗队是由学生组成的 \(N \times N\) 的方阵,为了保证队伍在行进中整齐划一,C 君会跟在仪仗队的左后方,根据其视线所及的学生人数 ...