MySQL:MySQL下的常用类型,主键和唯一键

    xiaoxiao2025-07-19  15

    一、MySQL下的类型

    整型

    TINYINT , SMALLINT , INT , BIGINT

    小数
    浮点数(不是高精度) FLOAT/DOUBLE保证精度 DECIMAL/NUMEROUS
    几个坑
    bit 显式的时候是 ASCII 码CHAR 最多 255 个字符VARCHAR 最多是 65535 个字节,具体多少字符65535/3(每个utf8 占 3 字节)
    字符类型
    定长 CHAR(字符个数)变长 VARCHAR(字符个数)TEXT 字符(常用于特别长的文字,文章)BLOB 字节流
    日期、时间
    DATETIME 年-月-日 时:分:秒DATE 年-月-日TIME 时:分:秒TIMESTAMP 时间戳(1970 的秒数) TIMESTAMPDATETIME4 个字节8 个字节1970 - 2037年0000-9999年
    MySQL 规范上不建议使用 ENUM 和 SET
    修改表结构的代价非常大ENUM/SET 信息保存在表结构中所以,更新 ENUM 及 SET 都需要修改表结构,风险较大所以不建议使用
    带括号的数据类型
    CHAR(字符个数,会影响字段长度)VARCHAR(字符个数,会影响字段长度)BIT(位的长度,会会影响字段长度)FLOAT(整体的显式位数,小数点后显式位数;不影响字段长度)INT(显式长度,不影响字段长度) ZEROFILL

    二、NULL

    NULL 不区分大小写 NULL 的真实含义时,这个字段值不知道 所以一般来说,有 NULL 参与的运算结果都是 NULL 定义表时,字段后可以跟 NOT NULL 强制不允许出现空 没有特殊理由,建议都加上 NOT NULL

    主键

    主键,每个信息都有主键,用来唯一标识一条信息 可以是一个字段,可以是多个字段组成(复合主键)

    在 InnoDB 的引擎下,数据在硬盘存储是按照主键的排序方式存储的,为了避免中间插入主键,通常建议把主键设置成一个永远递增,永不修改的值

    主键不允许为空/主键不允许重复

    每个表上都有一个主键,通常用自增字段作为主键

    唯一键

    唯一键 Unique Key 相似的点:主键和唯一键都不允许重复 不同点:

    主键不允许为空,唯一键允许为空存储上,数据的存储是按照 主键 递增顺序保存的 唯一键,看作另外有一套数据结构

    举个栗子

    创建一个学生表

    //注意最后一行不能有逗号!!! CREATE TABLE students ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT "利用自增字段作为表主键", sn INT NOT NULL UNIQUE COMMENT "学号,事实上的主键,唯一键,不允许重复", name VARCHAR(10) NOT NULL COMMENT "姓名", gender TINYINT NOT NULL COMMENT "性别: 1 女 2 男 3 不想说", school VARCHAR (40) NOT NULL DEFAULT "西安财经大学" COMMENT "学校", registerd_at DATETIME NOT NULL COMMENT "报名时间", created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "入表时间" ) COMMENT "学生表"; CREATE TABLE students ( ... PRIMARY KEY (id, sn) -- 支持单字段 或者 多字段 UNIQUE KEY (sn, name) ) insert into students(sn,name,gender,registerd_at) values (125,"王五",2,"2019-9-9 21:44:20");
    最新回复(0)