mysql相关知识总结

mysql相关知识总结

码农世界 2024-05-22 后端 59 次浏览 0个评论

目录

  • 1.建表
  • 2.添加字段
  • 3.修改字段类型
  • 4.添加索引
  • 5.遇到的问题

    1.建表

    CREATE TABLE `test`.`table_test` (
    `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键id',
    `day` date DEFAULT NULL COMMENT '日期',
    `show_cnt` bigint(20) DEFAULT 0 COMMENT '曝光次数',
    `play_time` double(20, 2) DEFAULT 0.00 COMMENT '播放时长',
    `start_type` varchar(100) DEFAULT '' COMMENT '启动方式',
    PRIMARY KEY (`id`),
    KEY `idx_start_type` (`day`,`start_type`)
    ) ENGINE = InnoDB CHARSET = utf8 ROW_FORMAT=DYNAMIC COMMENT '该表用于测试,天增量';
    

    注意:

    1、表有主键,PRIMARY KEY;

    2、有索引,idx_start_type;

    3、各字段有字段类型

    2.添加字段

    ALTER TABLE `user` 
    ADD COLUMN `age` INT DEFAULT 0 COMMENT '年龄',
    ADD COLUMN `sex` VARCHAR(10) DEFAULT '' COMMENT '性别';
    ALTER TABLE `user` ADD (
        `age`          INT DEFAULT 0 COMMENT '年龄',,
        `sex`          VARCHAR(10) DEFAULT '' COMMENT '性别'
        );
    

    3.修改字段类型

    ALTER TABLE mytable MODIFY COLUMN mycolumn INT;
    

    4.添加索引

    ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
    ALTER TABLE `payment` ADD INDEX idx_customer_id_staff_id(`customer_id`, `staff_id`);
    ALTER TABLE  table_name ADD INDEX idx1 ( `aaa`), ADD INDEX idx2 ( `bbb`,`ccc`), ADD INDEX idx3( `ddd`);
    

    5.遇到的问题

    在创建要给表的时候遇到一个有意思的问题,提示Specified key was too long; max key length is 767 bytes,从描述上来看,是Key太长,超过了指定的 767字节限制。通常出现在尝试创建一个过长的唯一键(UNIQUE KEY)或主键(PRIMARY KEY)时。MySQL对于InnoDB存储引擎有一个索引键长度的限制,这个限制基于字符集的不同而不同。

    下面是建表时的语句:

    CREATE TABLE `test_table` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(1000) NOT NULL DEFAULT '',
      `link` varchar(1000) NOT NULL DEFAULT '',
      PRIMARY KEY (`id`),
      KEY `name` (`name`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
    

    分析原因:

    在使用utf8字符集时,每个字符可能占用3个字节,那么对于innodb表,索引键的最大长度大约为1000个字符左右(因为3072 / 3 ≈ 1024)。若字符集是utf8mb4,每个字符可能占用4个字节,所以最大长度会进一步减少到768个字符左右(3072 / 4 = 768)

    解决方法:

    修改索引中字段的长度,比如你的索引字段是字符串,类型是varchar(512),修改到varchar(225),或者更低,比如varchar(100),

    注意:UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。

转载请注明来自码农世界,本文标题:《mysql相关知识总结》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,59人围观)参与讨论

还没有评论,来说两句吧...

Top