Mysql数据库学习(二):数据类型(数值类型日期和时间类型字符_MySQL
Mysql数据库学习(二):数据类型(数值类型日期和时间类型字符_MySQL
数据类型
数值类型
日期和时间类型
字符串类型
一、数值类型
整数
tinyint[M] [unsigned] [zerofill] // [ ] 表示可选,这里的M表示显示宽度,并不是取值范围,显示宽度不够前面以0填充
bool是tinyint(1)的别名
浮点型
IEEE 754浮点数表示
S:符号位
E:指数位
M:尾数位,也叫有效数字位
N =(-1)^S * M * 2^E
单精度float 4个字节 ,取值范围-3.402823466E+38~3.402823466E+38, 精度大约7位
双精度double 8个字节,取值范围 -1.7976931348623157E+308~1.7976931348623157E+308, 精度大约15位
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] // M总位数,D是小数点后面的位数,这里是取值范围
real是double的别名
定点型
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] //M缺省是10,D缺省是0
decimal取值范围与double是一样的,但是有更高的精度。
decimal存储方式,参考:http://dev.mysql.com/doc/refman/5.1/zh/precision-math.html
numeric是decimal的别名
SQL Code create table t_number(a tinyint, b tinyint unsigned); insert into t_number values(100, 200); insert into t_number values(-129, 200); insert into t_number values(128, 200); insert into t_number values(127, 200); insert into t_number values(127, -1); create table t_number2(a int(4) zerofill); insert into t_number2 values(123); insert into t_number2 values(123456); create table t_number3(a bool); create table t_number4(a float, b double); insert into t_number4 values(12345678.12345, 12345678.12345); insert into t_number4 values(12345678.12345, 123456789123456789.12345); /* 12345700 | 1.2345678912345678e17 */ insert into t_number4 values(12345678.12345, 12345678912345.12345); create table t_number5(a double(5,2)); /* -999.99 ~999.99 */ create table t_number6(a decimal(30,6)); insert into t_number6 values(123456789123456789.12345); create table t_number7(a decimal(5,2)); /* -999.99 ~999.99*/
二、字符串类型
char(M)
varchar(M) //这里的M表示字符数
CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。
VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。VARCHAR的最大有效长度由最大行大小和使用的字符集确定。举例来说,如果字符集为uft8,那么一个字符需要3个字节来存储,则可以保存的字符数为65535/3=21845,此外还需要一个字符的位置来存储字符个数,故最大可填写的字符数为21844。若是latin1,一个字符只需1个字节存储,那么可填写的字符数为65532。
binary/varbinary
BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
字符串存储需求
VARCHAR、BLOB和TEXT类是变长类型。每个类型的存储需求取决于列值的实际长度(用前面的表中的L表示),而不是该类型的最大可能的大小。例如,VARCHAR(10)列可以容纳最大长度为10的字符串。实际存储需求是字符串(L)的长度,加上一个记录字符串长度的字节。对于字符串'abcd',L是4,存储需要5个字节。
对于CHAR、VARCHAR和TEXT类型,前面的表中的值L和M应解释为字符数目,并且列定义中的这些类型的长度表示字符数目。例如,要想保存一个TINYTEXT值需要L字符+ 1个字节。
enum/set SQL Code create table t_enum(sex enum('male', 'female')); /* 1 2 */ insert into t_enum values('male'); insert into t_enum values('female'); insert into t_enum values(1); select sex+0 from t_enum;create table t_set(favourite set('dog', 'cat', 'bird')); /* 1 10 100 */ insert into t_set values('dog,cat'); insert into t_set values('dog,bird'); select favourite+0 from t_set;
枚举/集合看过去像是字符串,实际上保存的是整数。
三、日期和时间
日期和时间看起来像字符串,但是以整数来保存的。
SQL Code create table t_datetime(a datetime); insert into t_datetime values('2014-01-15 10:10:10'); insert into t_datetime values('9999-12-31 23:59:59'); insert into t_datetime values('10000-01-01 00:00:00'); insert into t_datetime values('999-01-01 00:00:00'); insert into t_datetime values('99-01-01 00:00:00'); insert into t_datetime values('69-01-01 00:00:00'); create table t_timestamp(a timestamp); insert into t_timestamp values('2014-01-15 10:10:10'); insert into t_timestamp values('2038-01-19 03:14:07'); insert into t_timestamp values('2038-01-19 03:14:08'); insert into t_timestamp values('2038-01-19 11:14:07'); insert into t_timestamp values('2038-01-19 11:14:08'); create table t_date(a date); insert into t_date values('2012-01-01'); create table t_time(a time); /* 可以表示时间差 */ insert into t_time values('23:12:12'); insert into t_time values('823:12:12'); insert into t_time values('3 23:12:12'); /* 3表示3小时 */ create table t_year(a year); insert into t_year values (2000); insert into t_year values ('2155'); insert into t_year values (2156);
参考:
《数据库系统概论》
mysql 5.1 参考手册
以上就是Mysql数据库学习(二):数据类型(数值类型日期和时间类型字符_MySQL的内容,更多相关内容请关注PHP中文网(www.php.cn)!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

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

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

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

Dreamweaver CS6
视觉化网页开发工具

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

大数据结构处理技巧:分块:分解数据集并分块处理,减少内存消耗。生成器:逐个产生数据项,无需加载整个数据集,适用于无限数据集。流:逐行读取文件或查询结果,适用于大文件或远程数据。外部存储:对于超大数据集,将数据存储在数据库或NoSQL中。

在PHP中备份和还原MySQL数据库可通过以下步骤实现:备份数据库:使用mysqldump命令转储数据库为SQL文件。还原数据库:使用mysql命令从SQL文件还原数据库。

可以通过以下方式优化MySQL查询性能:建立索引,将查找时间从线性复杂度降至对数复杂度。使用PreparedStatements,防止SQL注入并提高查询性能。限制查询结果,减少服务器处理的数据量。优化连接查询,包括使用适当的连接类型、创建索引和考虑使用子查询。分析查询,识别瓶颈;使用缓存,减少数据库负载;优化PHP代码,尽量减少开销。

如何将数据插入MySQL表中?连接到数据库:使用mysqli建立与数据库的连接。准备SQL查询:编写一个INSERT语句以指定要插入的列和值。执行查询:使用query()方法执行插入查询,如果成功,将输出一条确认消息。

使用PHP创建MySQL表需要以下步骤:连接到数据库。创建数据库(如果不存在)。选择数据库。创建表。执行查询。关闭连接。

要在PHP中使用MySQL存储过程:使用PDO或MySQLi扩展连接到MySQL数据库。准备调用存储过程的语句。执行存储过程。处理结果集(如果存储过程返回结果)。关闭数据库连接。

MySQL 8.4(截至 2024 年的最新 LTS 版本)中引入的主要变化之一是默认情况下不再启用“MySQL 本机密码”插件。此外,MySQL 9.0完全删除了这个插件。 此更改会影响 PHP 和其他应用程序

Oracle数据库和MySQL都是基于关系模型的数据库,但Oracle在兼容性、可扩展性、数据类型和安全性方面更胜一筹;而MySQL则侧重速度和灵活性,更适合小到中等规模的数据集。①Oracle提供广泛的数据类型,②提供高级安全功能,③适合企业级应用程序;①MySQL支持NoSQL数据类型,②安全性措施较少,③适合小型到中等规模应用程序。
