网站首页 > 教程文章 正文
在MySQL中数据类型有以下五种:
数字
整数:
常用的有2种,一是int型,int型最多可以表示10位数字(无符号的4开头,有符号的2开头;二是tinyint unsigned,用来表示年龄(值范围是0-255)。
小数:
注意float(m,n)表示法中的m表示数字总共有m位,n表示小数有n位,那么整数部分只能有m-n位。
float默认保留5位小数、double默认保留16位小数、decimal默认是10位数字不含小数(它的最大范围是65位数字,其中小数可以保留30位)。
时间
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
时间类型可以增加限定属性:
not null 非空
default current_timestamp 默认时间为当前时间
on update current_timestamp 更新数据时自动更新当前时间
date:用来记录各种日期,如出生日期、入职日期等关注日期而不关注时间的等信息。
time:用来记录时间安排(课程表、日程表)的信息、时长的等信息。
datetime:用户登录时间等
字符串
以上类型中char和varchar类型用得最多。
char类型为定长字符型,长度固定为声明的长度,范围是0-255字符数(注意不是字节数!使用utf8编码中文会占3个字节,也就是说255个中文字符实际上会占用765字节)。存储时数据长度不够声明的长度时末尾会被填充空格,取值时会舍弃末尾的空格部分,数据超过声明长度的部分会被舍弃。适合使用char类型的如身份证号、手机号、qq号、用户名、密码、银行卡号等。
varchar类型为不定长字符型,长度不固定但最长不能超过声明的长度,范围是0-65535字符数。存储时数据长度不够声明的长度时不会填充空格,数据最后会附加2个字节的长度信息,数据超过声明长度的部分会被舍弃。适合使用varchar类型的如评论、朋友圈、微博等。
char类型优点是检索速度快,缺点是浪费存储空间;varchar类型优点是节省存储空间,缺点是检索速度慢。
由于现在存储空间不再是瓶颈,所以在强调检索速度的场景优先使用char,只有在不确定字符串长度又不强调检索速度的场景才使用varchar。
enum单选
案例:
在下面的sql语句中创建了test表,它的gender字段约束了数据只能是’male’或’female’。
create table test(id int,name char(18),gender enum('male','female'));
如果该字段输其它内容会报错并导致整条数据不能存入数据库。如下面这条语句就会报错且数据不会保存到数据库。
insert into test values(1,'mike','不详');
只有输入正确的选项数据才能存入数据库。
insert into test values(1,'mike','male');
set多选
案例:
在下面的sql语句中创建了test表,它的hobby字段约束了数据只能从列表中选择’。
create table test(id int,name char(18),hobby set('抽烟','喝酒','烫头','洗脚'));
如果该字段输其它内容会报错并导致整条数据不能存入数据库。如下面这条语句就会报错且数据不会保存到数据库。
insert into test values (1,'mike','烫头,喝酒,抽烟,按摩’);
只有输入正确的选项数据才能存入数据库。
insert into test values (1,'mike','烫头,喝酒,抽烟');
注意上述多选中整个选项作为一个字符串且选项之间用英文逗号隔开。
- 上一篇: 面试官:count(*) 怎么优化?
- 下一篇: MySQL高频面试题:如何给亿级大表快速添加字段?
猜你喜欢
- 2025-04-26 面试官:count(*) 怎么优化?
- 2025-04-26 MYSQL经典面试题汇总
- 2025-04-26 Mysql实战总结&面试20问
- 2025-04-26 MySQL 9.3发布,这些新功能太实用!
- 2025-04-26 MySQL体系架构
- 2025-04-26 数据库:MySQL 高性能优化规范建议
- 2025-04-26 MySQL 单表可以放多少数据,最多 2000 万?
- 2025-04-26 Mysql的varchar字段按照数字来排序
- 2025-04-26 一条简单的更新语句,MySQL是如何加锁的?
- 2025-04-26 MySQL 批量操作,一次插入多少行数据效率最高?
- 最近发表
-
- 一个可以用来练手的C++开源编译器!
- Linux开发工具使用指南(linux软件开发工具)
- Linux下Makefile文件的模式规则和自动化变量
- 程序员的副业秘籍!一款可以快速搭建各类系统的后台管理系统
- postgresql自定义函数实现,通过contrib模块进行扩展
- Linux GCC编译及Makefile使用(gcc makefile编写)
- wordpress独立站上线两周没收录?原来是robots.txt搞的鬼…
- make sure用法解析(make sure sth)
- 每天一个 Python 库:Django全能Web框架,一站式后台开发
- Makefile实践(makefile经典教程)
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)