mysql基础-字段类型及几点讨论事项

目录

1.主要字段类型

1.1整数

1.2.浮点数类型

1.3.文本类型

1.4.日期与时间类型

2.讨论几点有关字段类型的事

2.1 时间类型字段用字符还是datetime?

2.2 时间类型字段如何设置随时间更新?

2.3 字段长度够用即可

2.4 小数的字段类型选择,一定要选择decimal

2.5 int(1) 和 int(12)是能存一样范围数据吗?

2.6 varchar(5)字段的数据长度为多少?


1.主要字段类型

主要的字段类型:整数、浮点数、文本类型、日期与时间类型

1.1整数

类型 占用字节数 取值范围
tinyint 1 -128~127
smallint 2 -32768~32767
mediumint 3 -8388608~8388607
int 4 -2147483648~2147483647
bigint 8 -9223372036854775808~9223372036854775807

1.2.浮点数类型

类型 占用字节
float 4
double 8

1.3.文本类型

类型 占用字节
char 指定字符长度
varchar 变长字符长度
tinytext 255
text 65535
mediumtext 16777215
longtext 4294967295

1.4.日期与时间类型

类型 占用字节
year 1
time 3
date 3
datetime 8
timestamp 4

2.讨论几点有关字段类型的事

2.1 时间类型字段用字符还是datetime?

应该用dateime字段,

存储空间来看:如果精确到s的时间,varchar类型占用14个字符,而datetime只占用8个字符

查询性能:datetime类型比较依然比字符类型比较性能更好

2.2 时间类型字段如何设置随时间更新?

表结构设计如下:

CREATE TABLE `t_time` (
  `id` int(12) NOT NULL,
  `value` varchar(255) DEFAULT NULL COMMENT '数值',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

注意上边的创建时间和更新时间,默认值设置为CURRENT_TIMESTAMP,即为当前时间,数据创建的时间就会赋值为当前时间。设置为ON UPDATE CURRENT_TIMESTAMP,当数据修改时就会随更新数据而更新时间。管理页面设置如下:

2.3 字段长度够用即可

一定不要随意设置,只要够用即可。例如:varchar(255),不要随便设置这么长度。虽然是变长存储,但是对于查询依然有损性能。

2.4 小数的字段类型选择,一定要选择decimal

示例,表结构如下:

CREATE TABLE `t_calc` (
  `id` int(12) NOT NULL,
  `money` float DEFAULT NULL COMMENT '金额',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

表中插入数据如下:

INSERT INTO `ys_t1`.`t_calc`(`id`, `money`) VALUES (1, 0.1);
INSERT INTO `ys_t1`.`t_calc`(`id`, `money`) VALUES (2, 0.9);
INSERT INTO `ys_t1`.`t_calc`(`id`, `money`) VALUES (3, 0.2);
select sum(money) from t_calc ;

查询结果:

所以,小数一定要用decimal类型

2.5 int(1) 和 int(12)是能存一样范围数据吗?

答案:是。

很奇怪,大家可以试一下。

2.6 varchar(5)字段的数据长度为多少?

如果存的全是汉字,则长度为15;

如果存的全是字母或数字,则长度为5;

我们可以使用函数LENGTH()测试一下。

相关推荐

  1. 【GoLang基础】函数体的注意事项和细节讨论

    2024-01-02 03:42:05       32 阅读
  2. mysql基础注意事项

    2024-01-02 03:42:05       30 阅读
  3. MySQL常见的种索引类型对应的应用场景

    2024-01-02 03:42:05       30 阅读
  4. 关于MySql字段类型的实践总结

    2024-01-02 03:42:05       65 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-02 03:42:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-02 03:42:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-02 03:42:05       82 阅读
  4. Python语言-面向对象

    2024-01-02 03:42:05       91 阅读

热门阅读

  1. golang的大杀器协程goroutine

    2024-01-02 03:42:05       64 阅读
  2. 常见的漏洞

    2024-01-02 03:42:05       52 阅读
  3. 编码和解码的未来之路

    2024-01-02 03:42:05       47 阅读
  4. 【无标题】

    2024-01-02 03:42:05       67 阅读
  5. 【从浅到深的算法技巧】3.数组

    2024-01-02 03:42:05       47 阅读
  6. iostat采集的IO数据来源是哪里?

    2024-01-02 03:42:05       50 阅读
  7. [NAND Flash 5.1] 闪存芯片物理结构与SLC/MLC/TLC/QLC

    2024-01-02 03:42:05       50 阅读
  8. string类

    string类

    2024-01-02 03:42:05      46 阅读
  9. 力扣题目学习笔记(OC + Swift)27.移除元素

    2024-01-02 03:42:05       56 阅读