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语句创建⼀个表(参看前⾯的章节),这个表中包含列的定义。

  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个字节。

相关文档
最新文档