关于MySQL数据类型的一些介绍
MySQL中定义数据字段的类型对你数据库的优化是非常重要的;
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型;
整数类型
Int(N)中N的涵义
定义了 init(5)zerofill 当和int(10)join时显示宽度对不上有可能出现临时表
N表示显示宽度为N,但仍占4字节存储,存储范围不变;
>create table int_test(a int zerofill NOT NULL auto_increment, PRIMARY KEY (a)); >createtable int_test_4(a int(4) zerofill NOT NULL auto_increment, PRIMARY KEY (a)); >select * from int_test_4; +------------+ |a | +------------+ | 0001 | | 0002 | |2147483648 | +------------+ >select * from int_test; +------------+ |a | +------------+ |0000000001 | |0000000002 | |2147483648 | +------------+
关于浮点数类型:1)能不用到尽量不要用,2)浮点数不能用在等号比较的场景
建议TINYINT替换enum
日期和时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
MySQL5.6不支持year(2)
日期类型注意事项
Timestamp,datatime从MySQL5.6.5支持自动更新为当前的时间:current timestamp
日期转换:cast(datatime_col as DATE)
>select now()+0;
5.6的us支持
>select now(4),MICROSECOND(now(4)); +--------------------------+---------------------+ |now(4) |MICROSECOND(now(4)) | +--------------------------+---------------------+ |2016-04-16 08:50:01.6589 | 658900 | +--------------------------+---------------------+
timestamp5.6.6之后支持 null
建议datetime 来替换timestamp
字符串类型
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型;
字符型
varchar与char的区别
char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是: char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)varchar存储可变长字符串,小于255字节时需要1个额外字节(大于255需要2个额外字节)存储长度,最大长度为65532字节(所有列总和);
char存储定长,读取时会截断末尾空格,长度最大为255字符;
1)CHAR(M)的涵义:
实际分配的长度是:M*字符编码长度=存储空间
例如:存储了255个字符 中文汉字是占用3个字节
255*3 = 765 一共是765字节
2)varchar(N)中N的涵义
最大存储N个字符;varchar(5)和varchar(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为order by col采用fixed_length计算col长度(memory引擎也一样)
例如:
varchar(200)utf8下面占用多少字节
200*3+ 2
varchar(64) utf8
64*3=192<255
192+1=193
建议:
通常使用MySQL是innodb引擎 innodb引擎本来就是变长存储
行存储着:
trx_id, row-id,rollback, filed_pointer, null-flag, filed1,....
innodb存储引擎推荐varchar
char更快是针对MyISAM这种堆表 char 定长分配会更快一点
计算例子
举两个例说明一下实际长度的计算。
a)若一个表只有一个varchar类型,如定义为
createtable t4(c varchar(N)) charset=gbk;
则此处N的最大值为(65535-1-2)/2= 32766。
减1的原因是实际行存储从第二个字节开始’;
减2的原因是varchar头部的2个字节表示长度;
除2的原因是字符编码是gbk。
b)若一个表定义为
createtable t4(c int, c2 char(30), c3 varchar(N)) charset=utf8;
则此处N的最大值为 (65535-1-2-4-30*3)/3=21812
减1和减2与上例相同;
减4的原因是int类型的c占4个字节;
减30*3的原因是char(30)占用90个字节,编码是utf8。
以上是关于MySQL数据类型的一些介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

MySQL和phpMyAdmin是强大的数据库管理工具。1)MySQL用于创建数据库和表、执行DML和SQL查询。2)phpMyAdmin提供直观界面进行数据库管理、表结构管理、数据操作和用户权限管理。

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。 MySQL以其高性能、可扩展性和跨平台支持着称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

在MySQL中,外键的作用是建立表与表之间的关系,确保数据的一致性和完整性。外键通过引用完整性检查和级联操作维护数据的有效性,使用时需注意性能优化和避免常见错误。

MySQL和MariaDB的主要区别在于性能、功能和许可证:1.MySQL由Oracle开发,MariaDB是其分支。2.MariaDB在高负载环境中性能可能更好。3.MariaDB提供了更多的存储引擎和功能。4.MySQL采用双重许可证,MariaDB完全开源。选择时应考虑现有基础设施、性能需求、功能需求和许可证成本。

SQL是一种用于管理关系数据库的标准语言,而MySQL是一个使用SQL的数据库管理系统。SQL定义了与数据库交互的方式,包括CRUD操作,而MySQL实现了SQL标准并提供了额外的功能,如存储过程和触发器。

文章首段摘要:在选择开发 Yi 框架应用程序的软件时,需要考虑多个因素。虽然原生移动应用程序开发工具(如 XCode 和 Android Studio)可以提供强大的控制和灵活性,但跨平台框架(如 React Native 和 Flutter)凭借其编写一次,即可部署到多个平台的优点而越来越受欢迎。对于刚接触移动开发的开发者,低代码或无代码平台(如 AppSheet 和 Glide)可以快速轻松地构建应用程序。另外,云服务提供商(如 AWS Amplify 和 Firebase)提供了全面的工具

MySQL和phpMyAdmin可以通过以下步骤进行有效管理:1.创建和删除数据库:在phpMyAdmin中点击几下即可完成。2.管理表:可以创建表、修改结构、添加索引。3.数据操作:支持插入、更新、删除数据和执行SQL查询。4.导入导出数据:支持SQL、CSV、XML等格式。5.优化和监控:使用OPTIMIZETABLE命令优化表,并利用查询分析器和监控工具解决性能问题。

安全地处理JSON中的函数和正则表达式在前端开发中,经常需要将JavaScript...
