mysql字段类型

合集下载

MySQL字段类型说明

MySQL字段类型说明

MySQL字段类型说明MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。

本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。

概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式。

由MySQL支持的列类型列在下面。

下列代码字母用于描述中:M指出最大的显示尺寸。

最大的合法的显示尺寸是255 。

D适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。

最大可能的值是30,但是应该不大于M-2。

方括号(“[”和“]”)指出可选的类型修饰符的部分。

注意,如果你指定一个了为ZEROFILL,MySQL将为该列自动地增加UNSIGNED属性。

TINYINT[(M)] [UNSIGNED] [ZEROFILL]一个很小的整数。

有符号的范围是-128到127,无符号的范围是0到255。

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]一个小整数。

有符号的范围是-32768到32767,无符号的范围是0到65535。

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]一个中等大小整数。

有符号的范围是-8388608到8388607,无符号的范围是0到16777215。

INT[(M)] [UNSIGNED] [ZEROFILL]一个正常大小整数。

有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。

INTEGER[(M)] [UNSIGNED] [ZEROFILL]这是INT的一个同义词。

BIGINT[(M)] [UNSIGNED] [ZEROFILL]一个大整数。

有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到18446744073709551615。

MySql修改表【字段类型】,添加新列并赋默认值

MySql修改表【字段类型】,添加新列并赋默认值

-- 修改字段注释 ALTER TABLE tab1 MODIFY COLUMN name VARCHAR(30) NOT NULL COMMENT '姓名2';
mysql修改字段名: ALTER TABLE 表名 CHANGE [column] 旧字段名 新字段名 新数据类型; alter table table1 change column1 column1 varchar(100) DEFAULT 1.2 COMMENT '注释'; -- 正常,此时字段名称没有改变,能修改字段类型、类型长度、默认值、注释 alter table table1 change column1 column2 decimal(10,1) DEFAULT NULL COMMENT '注释' -- 正常,能修改字段名、字段类型、类型长度、默认值、注释 alter table table1 change column2 column1 decimal(10,1) DEFAULT NULL COMMENT '注释' -- 正常,能修改字段名、字段类型、类型长度、默认值、注释
网络错误421请刷新页面重试持续报错 改 表 【 字 段 类 型 】 , 添 加 新 列 并 赋 默 认 值
-- 添加字段 ALTER TABLE `tab1` add COLUMN create_user VARCHAR(50) DEFAULT 'admin' COMMENT '添加人', add COLUMN create_time datetime DEFAULT now() COMMENT '添加时间'

MySQL(二)数据库数据类型详解

MySQL(二)数据库数据类型详解

MySQL(⼆)数据库数据类型详解 序⾔ 今天去健⾝了,感觉把⾝体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这⾥讲清楚了,以后在看到什么数据类型,咱度应该认识,下⾯就跟着我的节奏去把这个拿下吧。

---WZY⼀、数据类型 MySQL的数据类型有⼤概可以分为5种,分别是整数类型、浮点数类型和定点数类型、⽇期和时间类型、字符串类型、⼆进制类型。

现在可以来看看你对这5种类型的熟悉程度,哪个看起来懵逼了,那就说明⾃⼰哪个不熟悉,不理解。

注意:整数类型和浮点数类型可以统称为数值数据类型,这不难理解。

数值数据类型 整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT 浮点数类型:FLOAT、DOUBLE 定点⼩数:DECIMAL ⽇期/时间类型 YEAR、TIME、DATE、DATETIME、TIMESTAMP 字符串类型 CHAR、VARCHAR、TEXT、ENUM、SET等 ⼆进制类型 BIT、BINARY、VARBINARY、BLOB 1、整数类型 不管你学什么语⾔,在基础⽅⾯,都应该知道 1个字节= 8位⼆进制数。

每个类型的取值范围也就能够知道,⽐如TINYINT占⽤1个字节,也就是8位,2的8次⽅减1等于255,也就是说如果代表没符号的整数,该取值范围为0~255,如果是有符号的,最⾼位为符号号位,也就是2的7次⽅减1,也就是127,取值范围为-128~127,为什么需要减1,这个问题就需要考虑临界值的问题了。

⽽考虑临界值问题⼜有需要讨论原码补码反码的知识,这些度不是我们讨论的重点,所以在这就⾃⾏百度。

给出⼀张范围表,给⼤家做参考。

不同整数类型的取值范围 根据⾃⼰所需去选取不同的类型名称, 例如: CREATE TABLE aaa( id INT(10) PRIMARY KEY, age INT(6) ); 这个例⼦中INT(10)、INT(6) 括号中的数字表⽰的是该数据类型指定的显⽰宽度,指定能够显⽰的数值中数字的个数。

MYSQL各字段的长度是多少?

MYSQL各字段的长度是多少?
8
FLOAT
4个字节
9
DOUBLE
8个字节
11
DOUBLE PRECISION
8个字节
12
REAL
8个字节
13
DECIMAL(M,D)
M字节(D+2 ,如果M < D)
14
NUMERIC(M,D)
M字节(D+2 ,如果M < D)
日期和时间类型
序号
列类型
需要的存储量
1
DATE
3个字节
2
DATETIME
L+2字节,在此L< 2 ^ 16
5
MEDIUMBLOB,
MEDIUMTEXT
L+3字节,在此L< 2 ^ 24
6
LONGBLOB, LONGTEXT
L+4字节,在此L< 2 ^ 32
7
ENUM('value1','value2',...)
1或2个字节,取决于枚举值的数目(最大值65535)
8
SET('value1','value2',...)
MYSQL各字段的长度是多少?
MYSQL各字段的长度是多少?
见下表:
序号
列类型
需要的存储量
1
TINYINT
1字节
2
SMALLINT
2个字节
3
MEDIUMINT
3个字节
4
INT
4个字节
5
INTEGER
4个字节
6
BIGINT
8个字节
7
FLOAT(X)
4如果X < = 24或8如果25 < = X < = 53

Mysql数据类型(字段)介绍

Mysql数据类型(字段)介绍

MySql数据库的列类型(字段类型)MySQL数据库的表是一个二维表,由一个或多个数据列构成。

每个数据列都有它的特定类型,该类型决定了MySQL如何看待该列数据,我们可以把整型数值存放到字符类型的列中,MySQL则会把它看成字符串来处理。

MySQL中的列类型有三种:数值类、字符串类和日期/时间类。

从大类来看列类型和数值类型一样,都是只有三种。

但每种列类型都还可细分。

下面对各种列类型进行详细介绍。

数值类的数据列类型数值型的列类型包括整型和浮点型两大类。

TINYINT:1字节非常小的正整数,带符号:-128~127,不带符号:0~255SMALLINT:2字节小整数,带符号:-32768~32767,不带符号:0~65535MEDIUMINT:3字节中等大小的整数,带符号:-8388608~8388607,不带符号:0~16777215INT:4字节标准整数,带符号:-2147483648~2147483647,不带符号:0~4294967295BIGINT:8字节大整数,带符号:-9223372036854775808~9233372036854775807,不带符号:0~18446744073709551615FLOAT:4字节单精度浮点数,最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38 DOUBLE:8字节双精度浮点数,最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308DECIMAL:M+2字节以字符串形式表示的浮点数,它的取值范围可变,由M和D的值决定。

整型数据列类型MySQL有五种整型数据列类型,即TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT。

它们之间的区别是取值范围不同,存储空间也各不相同。

在整型数据列后加上UNSIGNED属性可以禁止负数,取值从0开始。

Mysql修改字段类型,修改字段名

Mysql修改字段类型,修改字段名

Mysql修改字段类型,修改字段名Mysql修改字段类型,修改字段名1. mysql修改字段类型:2. --能修改字段类型、类型长度、默认值、注释3. --对某字段进⾏修改4. ALTER TABLE 表名 MODIFY COLUMN 字段名新数据类型新类型长度新默认值新注释; -- COLUMN可以省略5. alter table table1 modify column column1 decimal(10,1) DEFAULT NULL COMMENT '注释'; -- 正常,能修改字段类型、类型长度、默认值、注释6.7. mysql修改字段名:8. ALTER TABLE 表名 CHANGE 旧字段名新字段名新数据类型;9. alter table table1 change column1 column1 varchar(100) DEFAULT 1.2 COMMENT '注释'; -- 正常,此时字段名称没有改变,能修改字段类型、类型长度、默认值、注释10. alter table table1 change column1 column2 decimal(10,1) DEFAULT NULL COMMENT '注释' -- 正常,能修改字段名、字段类型、类型长度、默认值、注释11. alter table table1 change column2 column1 decimal(10,1) DEFAULT NULL COMMENT '注释' -- 正常,能修改字段名、字段类型、类型长度、默认值、注释12. alter table table1 change column1 column2; -- 报错。

四、MySQL数据类型和运算符

四、MySQL数据类型和运算符

四、MySQL数据类型和运算符 数据库表由多列字段构成,每⼀个字段指定了不同的数据类型。

指定字段的数据类型之后,也就决定了向字段插⼊的数据内容。

不同的数据类型也决定了MySQL在存储它们的时候使⽤的⽅式,以及在使⽤它们的时候选择什么运算符号进⾏运算。

⼀、MySQL数据类型介绍 MySQL⽀持多种数据类型,主要有数值类型、⽇期/时间类型和字符串类型。

(1)数值数据类型:包括整数类型TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,浮点⼩数数据类型FLOAT和DOUBLE,定点⼩数类型DECIMAL。

(2)⽇期/时间类型:包括YEAR、TIME、DATE、DATETIME和TIMESTAMP。

(3)字符串类型:包括CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET等。

字符串类型⼜分为⽂本字符串和⼆进制字符串。

1.1 整数类型 数值型数据类型主要⽤来存储数字,MySQL提供了多种数值数据类型,不同的数据类型提供不同的取值范围,可以存储的值范围越⼤,其所需的存储空间也会越⼤。

MySQL主要提供的整数类型有:TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)、BIGINT。

整数类型的属性字段可以添加AUTO_INCREMENT⾃增约束条件。

下表列出了MySQL中的数值类型:MySQL中的整数型数据类型数据名称说明存储需求默认宽度值TINYINT很⼩的整数1个字节4SMALLINT⼩的整数2个字节6MEDIUMINT中等⼤⼩的整数3个字节9INT(INTEGER)普通⼤⼩的整数4个字节11BIGINT⼤整数8个字节20 根据占⽤字节数可以求出每⼀种数据类型的取值范围,例如TINYINT需要1个字节(8bits)来存储,那么TINYINT⽆符号数的最⼤值为28-1,即255;TINYINT有符号数的最⼤值为27-1,即127。

mysql中数据类型N

mysql中数据类型N

mysql中数据类型N我们要把现实世界中的各种信息转换成计算机能理解的东西,这些转换后的信息就形成了数据。

例如,某⼈的出⽣⽇期是“1987年5⽉23⽇”,他的⾝⾼是170厘⽶,等等。

数据不仅包括数字、字母、⽂字和其他特殊字符组成的⽂本形式的数据,⽽且还包括图形、图像、动画、影像、声⾳等多媒体数据。

但使⽤最多、最基本的仍然是⽂本数据。

1. mysql的数据类型在mysql中有如下⼏种数据类型:(1)数值型数值是诸如32 或153.4 这样的值。

mysql ⽀持科学表⽰法,科学表⽰法由整数或浮点数后跟“e”或“e”、⼀个符号(“+”或“-”)和⼀个整数指数来表⽰。

1.24e+12 和23.47e-1 都是合法的科学表⽰法表⽰的数。

⽽1.24e12 不是合法的,因为指数前的符号未给出。

浮点数由整数部分、⼀个⼩数点和⼩数部分组成。

整数部分和⼩数部分可以分别为空,但不能同时为空。

数值前可放⼀个负号“-”以表⽰负值。

(2)字符(串)型字符型(也叫字符串型,简称串)是诸如“hello, world!”或“⼀个馒头引起的⾎案”这样的值,或者是电话号码87398413这样的值。

既可⽤单引号也可⽤双引号将串值括起来。

初学者往往分不清数值87398143和字符串87398143的区别。

都是数字啊,怎么⼀个要⽤数值型,⼀个要⽤字符型呢?关键就在于:数值型的87398143是要参与计算的,⽐如它是⾦融中的⼀个货款总额;⽽字符型的87398143是不参与计算的,只是表⽰电话号码,这样的还有街道号码、门牌号码等等,它们都不参与计算。

(3)⽇期和时间型⽇期和时间是⼀些诸如“2006-07-12”或“12:30:43”这样的值。

mysql还⽀持⽇期/时间的组合,如“2006-07-12 12:30:43”。

(4)null值null表⽰未知值。

⽐如填写表格中通讯地址不清楚留空不填写,这就是null值。

我们⽤create table语句创建⼀个表(参看前⾯的章节),这个表中包含列的定义。

mysql转换字段类型的函数

mysql转换字段类型的函数

mysql转换字段类型的函数在MySQL中,可以使用ALTER TABLE语句来修改表的字段类型。

以下是一些常用的字段类型转换函数:1. CONVERT()函数:将字段从一种数据类型转换为另一种数据类型。

例如,将字段"age"从整数类型(INT)转换为字符串类型(VARCHAR):```ALTER TABLE table_name MODIFY COLUMN age VARCHAR(10);```2. CAST()函数:将字段从一种数据类型转换为另一种数据类型。

例如,将字段"salary"从浮点数类型(FLOAT)转换为整数类型(INT):```ALTER TABLE table_name MODIFY COLUMN salary INT; ```3. DATE_FORMAT()函数:将日期或时间字段转换为指定格式的字符串。

例如,将日期字段"birth_date"转换为"YYYY-MM-DD"格式的字符串:```ALTER TABLE table_name MODIFY COLUMN birth_date VARCHAR(10);UPDATE table_name SET birth_date =DATE_FORMAT(birth_date, '%Y-%m-%d');```4. STR_TO_DATE()函数:将字符串转换为日期或时间字段。

例如,将字符型字段"date_string"转换为日期字段"date":```ALTER TABLE table_name ADD COLUMN date DATE;UPDATE table_name SET date = STR_TO_DATE(date_string, '%Y-%m-%d');ALTER TABLE table_name DROP COLUMN date_string;```请注意,在进行字段类型转换时,需要注意数据是否丢失或损坏,并在操作之前备份数据以防止意外发生。

MySQL的数据类型

MySQL的数据类型

MySQL的数据类型⽬录MySQL的数据类型数据库中的每个列都应该有适当的数据类型,⽤于限制或允许该列中存储的数据。

例如,列中存储的为数字,则相应的数据类型应该为数值类型。

如果使⽤错误的数据类型可能会严重影响应⽤程序的功能和性能,所以在设计表时,应该特别重视数据列所⽤的数据类型。

更改包含数据的列不是⼀件⼩事,这样做可能会导致数据丢失。

因此,在创建表时必须为每个列设置正确的数据类型和长度。

MySQL中定义数据字段的类型对你数据库的优化是⾮常重要的。

MySQL⽀持所有标准SQL数值数据类型。

MySQL⽀持多种类型,⼤致可以分为三类:数值⽇期/时间字符(串)类型。

数据类型分类1. 数值类型(整数类型和⼩数类型)整数类型:包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。

⼩数类型:浮点数类型包括 FLOAT 和 DOUBLE。

定点数类型为 DECIMAL。

2. ⽇期/时间类型包括 YEAR、TIME、DATE、DATETIME 和 TIMESTAMP。

3. 字符类型(⽂本字符串和⼆进制字符串)字符串类型:包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 等。

⼆进制类型:包括 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。

数值类型MySQL⽀持所有标准SQL数值数据类型。

这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLEPRECISION)。

关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

BIT数据类型保存位字段值,并且⽀持MyISAM、MEMORY、InnoDB和BDB表。

作为SQL标准的扩展,MySQL也⽀持整数类型TINYINT、MEDIUMINT和BIGINT。

MySQL的SET字段类型

MySQL的SET字段类型

MySQL的SET字段类型MySQL的SET字段类型~(2011-04-23 13:21:31)标签:分类:SET是⼀个字符串对象,可以有零或多个值,其值来⾃表创建时规定的允许的⼀列值。

指定包括多个SET成员的SET列值时各成员之间⽤逗号(‘,’)间隔开。

这样SET成员值本⾝不能包含逗号。

例如,指定为SET('one', 'two') NOT NULL的列可以有下⾯的任何值:'''one''two''one,two'SET最多可以有64个不同的成员。

当创建表时,SET成员值的尾部空格将⾃动被删除。

当检索时,保存在SET列的值使⽤列定义中所使⽤的⼤⼩写来显⽰。

请注意可以为SET列分配字符集和校对规则。

对于⼆进制或⼤⼩写敏感的校对规则,当为列分配值时应考虑⼤⼩写。

MySQL⽤数字保存SET值,所保存值的低阶位对应第1个SET成员。

如果在数值上下⽂中检索⼀个SET值,检索的值的位设置对应组成列值的SET成员。

例如,你可以这样从⼀个SET列检索数值值:mysql> SELECT set_col+0 FROM tbl_name;如果将⼀个数字保存到SET列中,数字中⼆进制表⽰中的位确定了列值中的SET成员。

对于指定为SET('a','b','c','d')的列,成员有下⾯的⼗进制和⼆进制值:SET成员⼗进制值⼆进制值'a'10001'b'20010'c'40100'd'81000如果你为该列分配⼀个值9,其⼆进制形式为1001,因此第1个和第4个SET值成员'a'和'd'被选择,结果值为 'a,d'。

对于包含多个SET元素的值,当插⼊值时元素所列的顺序并不重要。

mysql转换字段类型的函数

mysql转换字段类型的函数

mysql转换字段类型的函数在MySQL中,可以使用`ALTERTABLE`语句来转换字段类型。

以下是一些常用的数据类型转换函数:1.转换为整数类型:使用`CAST`函数或`CONVERT`函数。

示例:```ALTER TABLE table_name MODIFY column_name INT;```或```ALTER TABLE table_name MODIFY column_name INTEGER;```或```ALTER TABLE table_name MODIFY column_name VARCHAR(255);```或```ALTER TABLE table_name MODIFY column_name TEXT;2.转换为浮点数类型:使用`CAST`函数或`CONVERT`函数。

示例:```ALTER TABLE table_name MODIFY column_name FLOAT;```或```ALTER TABLE table_name MODIFY column_name DOUBLE;```3.转换为日期类型:使用`STR_TO_DATE`函数。

示例:```ALTER TABLE table_name MODIFY column_name DATE;```或```ALTER TABLE table_name MODIFY column_name DATETIME;``````ALTER TABLE table_name MODIFY column_name TIMESTAMP;```这些函数可以根据需要进行适当的修改来转换为其他特定类型。

请注意,在进行字段类型转换之前,请确保备份数据库以防止数据丢失。

MySQL字段类型详解

MySQL字段类型详解

MySQL‎字段类型详‎解MySQL‎提供了整数‎和浮点数的‎数值类型。

可根据所要‎表示的值的‎范围选择相‎应的类型。

对于整数类‎型,如果指定了‎A UTO_‎I NCRE‎M ENT 属性,则列必须为‎P RIMA‎R Y KEY 或UNIQ‎U E 索引。

将NULL‎插入AUT‎O_INC‎R EMEN‎T列将会插入‎一个大于该‎列中当前最‎大值的值。

如果指定了‎U NSIG‎N ED 属性,则相应的整‎数类型不允‎许取负值。

如果指定了‎Z EROF‎I LL 属性,则用前导零‎填充数值类‎型值以达到‎列的显示宽‎度。

1. TINYI‎N T[(M)]说明:非常小的整‎数允许的属性‎:AUTO _ I N C R E M E N T, UNSIG‎N ED, ZEROF‎I LL取值范围:-128 到127(-27 到27-1),或者如果为‎U N S I G N E D,则0 到2 5 5(0 到2 8-1)缺省值:如果列可为‎N ULL;则为NUL‎L;如果列为N‎O T NULL,则为0存储需求:1字节2. SMALL‎I NT[(M)]说明:小整数允许的属性‎:AUTO _ I N C R E M E N T, UNSIG‎N ED, ZEROF‎I LL取值范围:-32768‎到3 27 6 7(-215 到215-1),或者如果为‎U N S I G N E D,则0 到6 5 5 3 5(0 到216-1)缺省值:如果列可为‎N ULL;则为NUL‎L;如果列为N‎O T NULL,则为0存储需求:2 字节3. MEDIU‎M INT[(M)]说明:中等大小的‎整数允许的属性‎:AUTO _ I N C R E M E N T, UNSIG‎N ED, ZEROF‎I LL取值范围:-83886‎08 到8 3 8 8 6 07(-22 3 到22 3-1),或者如果为‎U N S I G N E D,则0 到16 7 7 2 15(0 到22 4-1)缺省值:如果列可为‎N ULL,则为NUL‎L;如果列为N‎O T NULL,则为0存储需求:4 字节4. INT[(M)]说明:标准大小的‎整数允许的属性‎:AUTO _ I N C R E M E N T, UNSIG‎N ED, ZEROF‎I LL取值范围:-21474‎83648‎到2 14 7 4 8 3 6 4 7(-231到2‎3 1-1),或者如果为‎U N S I G N E D,则0 到4 2 9 4 9 6 7 2 9 5(0 到2 3 2-1)缺省值:如果列为N‎U LL,则为NUL‎L;如果列为N‎O T FULL,则为0存储需求:4 字节同义词:I N T E G E R [(M)]5. BIGIN‎T[(M)]说明:大整数允许的属性‎:AUTO _ I N C R E M E N T, UNSIG‎N ED, ZEROF‎I LL取值范围:-92233‎72036‎85477‎5808 到9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 8 07(-263 到2 6 3-1),或者如果为‎U N S I G N E D,则0 到18 4 4 6 7 4 4 07 3 7 0 9 5 5 16 15(0 到26 4 -1)缺省值:如果列可为‎N ULL,则为NUL‎L;如果列为N‎O T NULL,则为0存储需求:8 字节6. FLOAT‎[(M, D)]说明:小浮点数;单精度(精度小于D‎O U B L E)允许的属性‎:Z E R O F I L L取值范围:最小非零值‎为±1.75494‎351E -38; 最大非零值‎为±3 . 4 0 2 8 2 3 4 6 6 E + 3 8缺省值:如果列可为‎N ULL,则为NUL‎L;如果列为N‎O T NULL,则为0存储需求:4 字节同义词:MySQL‎3.23 版以前,FLOAT‎(4) 为具有缺省‎M和D 值的FLO‎A T的同义‎词。

Mysql字段数据类型长度及表类型详细说明

Mysql字段数据类型长度及表类型详细说明

mysql字段数据类型、长度及表类型说明一、MySQL 字段数据类型/长度1、数值类型列类型需要的存储量TINYINT 1 字节SMALLINT 2 个字节MEDIUMINT 3 个字节INT 4 个字节INTEGER 4 个字节BIGINT 8 个字节FLOAT(X) 4 如果X < = 24 或8 如果25 < = X < = 53FLOAT 4 个字节DOUBLE 8 个字节DOUBLE PRECISION 8 个字节REAL 8 个字节DECIMAL(M,D) M字节(D+2 , 如果M < D)NUMERIC(M,D) M字节(D+2 , 如果M < D)MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。

许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补。

INT 类型在MySQL 中支持的5 个主要整数类型是TINYINT,SMALLINT,MEDIUMINT,INT 和BIGINT。

这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的。

MySQL 以一个可选的显示宽度指示器的形式对SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。

例如,指定一个字段的类型为INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。

需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。

万一我们需要对一个字段存储一个超出许可范围的数字,MySQL 会根据允许范围最接近它的一端截短后再进行存储。

还有一个比较特别的地方是,MySQL 会在不合规定的值插入表前自动修改为0。

UNSIGNED(未签署)修饰符规定字段只保存正值。

因为不需要保存数字的正、负符号,可以在储时节约一个“位”的空间。

mysql中常用的字段类型

mysql中常用的字段类型

mysql中常用的字段类型
以下是MySQL中常用的字段类型:
1. INT (整型):用于存储整数值,可以指定长度。

常见的INT类型有INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT等。

2. DECIMAL (定点数):用于存储精确的小数值,可以指定总共的位数和小数的位数。

3. FLOAT (浮点数):用于存储近似的小数值,可以指定总共的位数和小数的位数。

4. VARCHAR (可变长度字符串):用于存储可变长度的字符串,可以指定最大长度。

5. CHAR (固定长度字符串):用于存储固定长度的字符串,需要指定固定长度。

6. TEXT (文本):用于存储较长的文本数据,可以存储较大的数据量。

7. DATE (日期):用于存储日期,包括年、月、日。

8. TIME (时间):用于存储时间,包括小时、分钟、秒。

9. DATETIME (日期时间):用于存储日期和时间,包括年、月、日、小时、分钟、秒。

10. TIMESTAMP (时间戳):用于存储记录被创建或修改的时间,使用特定的格式进行存储。

这些是MySQL中常用的字段类型,根据实际需求选择合适的字段类型来存储数据。

mysql依据字段类型查询字段名称的方法

mysql依据字段类型查询字段名称的方法

mysql依据字段类型查询字段名称的方法
如果你想查询MySQL数据库中所有表的字段名称和对应的字段类型,你可以使用以下的查询:
```sql
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_
WHERE TABLE_SCHEMA = 'your_database_name';
```
在上面的查询中,你需要将 `'your_database_name'` 替换为你的数据库名称。

这个查询将返回一个结果集,其中包含每个表的字段名称、字段类型以及对应的表名。

如果你只想查询某个特定表的字段信息,你可以在 `WHERE` 子句中指定表名,像这样:
```sql
SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_
WHERE TABLE_NAME = 'your_table_name' AND TABLE_SCHEMA = 'your_database_name';
```
同样,你需要将 `'your_table_name'` 和 `'your_database_name'` 替换为你的表名和数据库名称。

这个查询将返回指定表中所有字段的名称和类型。

MySQL中TEXT与BLOB字段类型的区别

MySQL中TEXT与BLOB字段类型的区别

MySQL中TEXT与BLOB字段类型的区别在MySQL中有两个字段类型容易让⼈感觉混淆,那就是TEXT与BLOB,特别是⾃⼰写博客程序的博主不知道改为⾃⼰的博客正⽂字段选择TEXT还是BLOB类型。

下⾯给出⼏点区别:⼀、主要差别TEXT与BLOB的主要差别就是BLOB保存⼆进制数据,TEXT保存字符数据。

⽬前⼏乎所有博客内容⾥的图⽚都不是以⼆进制存储在数据库的,⽽是把图⽚上传到服务器然后正⽂⾥使⽤<img>标签引⽤,这样的博客就可以使⽤TEXT类型。

⽽BLOB就可以把图⽚换算成⼆进制保存到数据库中。

⼆、类型区别BLOB有4种类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。

它们只是可容纳值的最⼤长度不同。

TEXT也有4种类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。

这些类型同BLOB类型⼀样,有相同的最⼤长度和存储需求。

三、字符集BLOB列没有字符集,并且排序和⽐较基于列值字节的数值值。

TEXT列有⼀个字符集,并且根据字符集的校对规则对值进⾏排序和⽐较四、⼤⼩写在TEXT或BLOB列的存储或检索过程中,不存在⼤⼩写转换,都⼀样!五、严格模式运⾏在⾮严格模式时,如果你为BLOB或TEXT列分配⼀个超过该列类型的最⼤长度的值值,值被截取以保证适合。

如果截掉的字符不是空格,将会产⽣⼀条警告。

使⽤严格SQL模式,会产⽣错误,并且值将被拒绝⽽不是截取并给出警告。

六、其它当保存或检索BLOB和TEXT列的值时不删除尾部空格。

对于BLOB和TEXT列的索引,必须指定索引前缀的长度。

BLOB和TEXT列不能有默认值。

当排序时只使⽤该列的前max_sort_length个字节。

max_sort_length的默认值是1024。

当你想要使超过max_sort_length的字节有意义,对含长值的BLOB或TEXT列使⽤GROUP BY或ORDER BY的另⼀种⽅式是将列值转换为固定长度的对象。

MySQL中TEXT与BLOB字段类型的区别

MySQL中TEXT与BLOB字段类型的区别

MySQL中TEXT与BLOB字段类型的区别⼀、类型。

BLOB是⼀个⼆进制⼤对象,可以容纳可变数量的数据。

有4种 BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。

它们只是可容纳值的最⼤长度不同。

有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。

这些对应4种BLOB类型,有相同的最⼤长度和存储需求。

⼆、类型区别。

BLOB是⼀个⼆进制⼤对象,可以容纳可变数量的数据。

有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。

它们只是可容纳值的最⼤长度不同。

有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。

这些对应4种BLOB类型,有相同的最⼤长度和存储需求。

三、字符集、⼤⼩写。

BLOB 列被视为⼆进制字符串(字节字符串)。

TEXT列被视为⾮⼆进制字符串(字符字符串)。

BLOB列没有字符集,并且排序和⽐较基于列值字节的数值值。

TEXT列有⼀个字符集,并且根据字符集的校对规则对值进⾏排序和⽐较。

在TEXT或BLOB列的存储或检索过程中,不存在⼤⼩写转换。

四、严格模式。

当未运⾏在严格模式时,如果你为BLOB或TEXT列分配⼀个超过该列类型的最⼤长度的值值,值被截取以保证适合。

如果截掉的字符不是空格,将会产⽣⼀条警告。

使⽤严格SQL模式,会产⽣错误,并且值将被拒绝⽽不是截取并给出警告。

五、在⼤多数⽅⾯,可以将BLOB列视为能够⾜够⼤的VARBINARY列。

同样,可以将TEXT列视为VARCHAR列。

BLOB和TEXT在以下⼏个⽅⾯不同于VARBINARY和VARCHAR:· 当保存或检索BLOB和TEXT列的值时不删除尾部空格。

(这与VARBINARY和VARCHAR列相同)。

请注意⽐较时将⽤空格对TEXT进⾏扩充以适合⽐较的对象,正如CHAR和VARCHAR。

MySqlInt类型和varchar类型进行比较。

MySqlInt类型和varchar类型进行比较。

MySqlInt类型和varchar类型进⾏⽐较。

今天遇到个⽐较奇葩的问题,简单讲就是在Mysql中进⾏查询的时候在Where语句中使⽤的int类型的字段和Varchar类型的字段进⾏对⽐。

例如:我这有⼀张表:
表中的数据如下:
当我进⾏查询的时候:
奇葩的问题出现了:
按道理讲,234是不等于234dgdgdgdgdgd的,可为什么Mysql会在这⾥认为他们是相等的?
把ID的类型转换为Varchar以后,该问题就不存在了。

不知道Mysql内部的机制是怎样的,但应该是把234dgdgdgdgdgd开始截取的数字转换成int类型然后进⾏的⽐较。

该类型的问题告诉我们必须要注意在数据库中的⽐较要确保字段的类型⼀致。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. mysql的数据类型在mysql中有如下几种数据类型:(1)数值型数值是诸如32 或153.4 这样的值。

mysql 支持科学表示法,科学表示法由整数或浮点数后跟“e”或“e”、一个符号(“+”或“-”)和一个整数指数来表示。

1.24e+12 和23.47e-1 都是合法的科学表示法表示的数。

而1.24e12 不是合法的,因为指数前的符号未给出。

浮点数由整数部分、一个小数点和小数部分组成。

整数部分和小数部分可以分别为空,但不能同时为空。

数值前可放一个负号“-”以表示负值。

(2)字符(串)型字符型(也叫字符串型,简称串)是诸如“hello,world!”或“一个馒头引起的血案”这样的值,或者是电话号码这样的值。

既可用单引号也可用双引号将串值括起来。

初学者往往分不清数值和字符串的区别。

都是数字啊,怎么一个要用数值型,一个要用字符型呢?关键就在于:数值型的是要参与计算的,比如它是金融中的一个货款总额;而字符型的是不参与计算的,只是表示电话号码,这样的还有街道号码、门牌号码等等,它们都不参与计算。

(3)日期和时间型日期和时间是一些诸如“2006-07-12”或“12:30:43”这样的值。

mysql还支持日期/时间的组合,如“2006-07-12 12:30:43”。

(4)null值null表示未知值。

比如填写表格中通讯地址不清楚留空不填写,这就是null 值。

我们用create table语句创建一个表(参看前面的章节),这个表中包含列的定义。

例如我们在前面创建了一个joke表,这个表中有content和writer 两个列:create table(content varchar(20) not null,writer varchar(10) null)定义一个列的语法如下:col_name col_typy [col_attributes] [general_attributes]其中列名由col_name 给出。

列名可最多包含64个字符,字符包括字母、数字、下划线及美元符号。

列名可以名字中合法的任何符号(包括数字)开头。

但列名不能完全由数字组成,因为那样可能使其与数据分不开。

mysql保留诸如select、delete和create这样的词,这些词不能用做列名,但是函数名(如pos 和min)是可以使用的。

列类型col_type表示列可存储的特定值。

列类型说明符还能表示存放在列中的值的最大长度。

对于某些类型,可用一个数值明确地说明其长度。

而另外一些值,其长度由类型名蕴含。

例如,char(10) 明确指定了10个字符的长度,而tinyblob值隐含最大长度为255个字符。

有的类型说明符允许指定最大的显示宽度(即显示值时使用多少个字符)。

浮点类型允许指定小数位数,所以能控制浮点数的精度值为多少。

可以在列类型之后指定可选的类型说明属性,以及指定更多的常见属性。

属性起修饰类型的作用,并更改其处理列值的方式,属性有以下类型:(1)专用属性用于指定列。

例如,unsigned 属性只针对整型,而binary 属性只用于char 和varchar。

(2)通用属性除少数列之外可用于任意列。

可以指定null 或not null 以表示某个列是否能够存放null。

还可以用default,def_value 来表示在创建一个新行但未明确给出该列的值时,该列可赋予值def_value。

def_value 必须为一个常量;它不能是表达式,也不能引用其他列。

不能对blob 或text 列指定缺省值。

如果想给出多个列的专用属性,可按任意顺序指定它们,只要它们跟在列类型之后、通用属性之前即可。

类似地,如果需要给出多个通用属性,也可按任意顺序给出它们,只要将它们放在列类型和可能给出的列专用属性之后即可。

2. mysql的列(字段)类型数据库中的每个表都是由一个或多个列(字段)构成的。

在用create table 语句创建一个表时,要为每列(字段)指定一个类型。

列(字段)的类型比数据类型更为细化,它精确地描述了给定表列(字段)可能包含的值的种类,如是否带小数、是否文字很多。

2.1数值列类型mysql有整数和浮点数值的列类型,如表1所示。

整数列类型可以有符号也可无符号。

有一种特殊的属性允许整数列值自动生成,这对需要唯一序列或标识号的应用系统来说是非常有用的。

表1:数值列类型每种数值类型的名称和取值范围如表2所示。

表2:数值列类型的取值范围各种类型值所需的存储量如表3所示。

表3:数值列类型的存储需求mysql提供了五种整型:tinyint、smallint、mediumint、int和bigint。

int为integer的缩写。

这些类型在可表示的取值范围上是不同的。

整数列可定义为unsigned从而禁用负值;这使列的取值范围为0以上。

各种类型的存储量需求也是不同的。

取值范围较大的类型所需的存储量较大。

mysql 提供三种浮点类型:float、double和decimal。

与整型不同,浮点类型不能是unsigned的,其取值范围也与整型不同,这种不同不仅在于这些类型有最大值,而且还有最小非零值。

最小值提供了相应类型精度的一种度量,这对于记录科学数据来说是非常重要的(当然,也有负的最大和最小值)。

在选择了某种数值类型时,应该考虑所要表示的值的范围,只需选择能覆盖要取值的范围的最小类型即可。

选择较大类型会对空间造成浪费,使表不必要地增大,处理起来没有选择较小类型那样有效。

对于整型值,如果数据取值范围较小,如人员年龄或兄弟姐妹数,则tinyint最合适。

mediumint能够表示数百万的值并且可用于更多类型的值,但存储代价较大。

bigint在全部整型中取值范围最大,而且需要的存储空间是表示范围次大的整型int类型的两倍,因此只在确实需要时才用。

对于浮点值,double占用float的两倍空间。

除非特别需要高精度或范围极大的值,一般应使用只用一半存储代价的float型来表示数据。

在定义整型列时,可以指定可选的显示尺寸m。

如果这样,m应该是一个1 到255的整数。

它表示用来显示列中值的字符数。

例如,mediumint(4)指定了一个具有4个字符显示宽度的mediumint列。

如果定义了一个没有明确宽度的整数列,将会自动分配给它一个缺省的宽度。

缺省值为每种类型的“最长”值的长度。

如果某个特定值的可打印表示需要不止m个字符,则显示完全的值;不会将值截断以适合m个字符。

对每种浮点类型,可指定一个最大的显示尺寸m 和小数位数d。

m 的值应该取1 到255。

d的值可为0 到3 0,但是不应大于m - 2(如果熟悉odbc 术语,就会知道m 和d 对应于odbc 概念的“精度”和“小数点位数”)。

m和d对float和double 都是可选的,但对于decimal是必须的。

在选项m 和d时,如果省略了它们,则使用缺省值。

2.2字符串列类型mysql提供了几种存放字符数据的串类型,其类型如下:表4:字符串列类型下表给出了mysql 定义串值列的类型,以及每种类型的最大尺寸和存储需求。

对于可变长的列类型,各行的值所占的存储量是不同的,这取决于实际存放在列中的值的长度。

这个长度在表中用l 表示。

表5:串列类型最大尺寸及存储需求l 以外所需的额外字节为存放该值的长度所需的字节数。

mysql 通过存储值的内容及其长度来处理可变长度的值。

这些额外的字节是无符号整数。

请注意,可变长类型的最大长度、此类型所需的额外字节数以及占用相同字节数的无符号整数之间的对应关系。

例如,mediumblob 值可能最多224 - 1字节长并需要3 个字节记录其结果。

3 个字节的整数类型mediumint 的最大无符号值为224 - 1。

这并非偶然。

2.3日期时间列类型mysql 提供了几种时间值的列类型,它们分别是:date、datetime、time、timestamp和year。

下表给出了mysql 为定义存储日期和时间值所提供的这些类型,并给出了每种类型的合法取值范围。

表6:日期时间列类型表7:日前时间列类型的取值范围和存储需求下面举个例子:create table student(name varchar(20) not null,chinese tinyint(3),maths tinyint(3),english tinyint(3),birthday date)这个例子创建一个student表,这个表中有name字段,字符类型列,不允许null(空值)。

有chinese、maths和english三个整数类型列。

还有个birthday 日期类型列。

MySQL decimal 类型一般赋予浮点列的值被四舍五入到这个列所指定的十进制数。

如果在一个FLOA T(8, 1)的列中存储1. 2 3 4 5 6,则结果为1. 2。

如果将相同的值存入FLOAT(8, 4) 的列中,则结果为1. 2 3 4 6。

这表示应该定义具有足够位数的浮点列以便得到尽可能精确的值。

如果想精确到千分之一,那就不要定义使该类型仅有两位小数。

浮点值的这种处理在MySQL3.23 中有例外,FLOA T(4) 和FLOAT(8) 的性能有所变化。

这两种类型现在为单精度( 4 字节)和双精度(8 字节)的类型,在其值按给出的形式存放(只受硬件的限制)这一点上说,这两种类型是真浮点类型。

DECIMAL 类型不同于FLOAT和DECIMAL,其中DECIMAL 实际是以串存放的。

DECIMAL 可能的最大取值范围与DOUBLE 一样,但是其有效的取值范围由M 和D 的值决定。

如果改变M 而固定D,则其取值范围将随M 的变大而变大。

表2 - 7的前三行说明了这一点。

如果固定M 而改变D,则其取值范围将随D 的变大而变小(但精度增加)。

表2 - 7的后三行说明了这一点。

给定的DECIMAL 类型的取值范围取决于MySQL的版本。

对于MySQL3.23 以前的版本,DECIMAL(M, D) 列的每个值占用M 字节,而符号(如果需要)和小数点包括在M 字节中。

因此,类型为DECIMAL(5, 2) 的列,其取值范围为-9.99 到9 9 . 9 9,因为它们覆盖了所有可能的5 个字符的值。

正如MySQL3.23 一样,DECIMAL 值是根据ANSI 规范进行处理的,ANSI 规范规定DECIMAL(M, D) 必须能够表示M 位数字及D 位小数的任何值。

例如,DECIMAL(5, 2) 必须能够表示从-999.99 到999.99 的所有值。

而且必须存储符号和小数点,因此自MySQL3.23以来DECIMAL 值占M + 2 个字节。

对于DECIMAL(5, 2),“最长”的值(- 9 9 9 . 9 9)需要7个字节。

相关文档
最新文档