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数据类型(最⼤值和最⼩值)MySQL数据类型(最⼤值和最⼩值)1、整型MySQL数据类型含义(有符号)tinyint(m)1个字节范围(-128~127)smallint(m)2个字节范围(-32768~32767)mediumint(m)3个字节范围(-8388608~8388607)int(m)4个字节范围(-2147483648~2147483647)bigint(m)8个字节范围(+-9.22*10的18次⽅)取值范围如果加了unsigned,则最⼤值翻倍,如tinyint unsigned的取值范围为(0~255)。
int(m)⾥的m是表⽰SELECT查询结果集中的显⽰宽度,不知道这个m有什么⽤。
int 占10位,存不了⼿机号(11位)2、浮点型(float和double) 浮点型在数据库中存放的是近似值MySQL数据类型含义float(m,d)单精度浮点型 8位精度(4字节) m总个数,d⼩数位double(m,d)双精度浮点型 16位精度(8字节) m总个数,d⼩数位设⼀个字段定义为float(5,3),如果插⼊⼀个数123.45678,实际数据库⾥存的是123.457,但总个数还以实际为准,即6位。
3、定点数定点类型在数据库中存放的是精确值浮点型在数据库中存放的是近似值,⽽定点类型在数据库中存放的是精确值。
decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是⼩数位。
4、字符串(char,varchar,_text)MySQL数据类型含义char(n)固定长度,最多255个字符varchar(n)可变长度,最多65535个字节tinytext可变长度,最多255个字符text可变长度,最多65535个字符mediumtext可变长度,最多2的24次⽅-1个字符longtext可变长度,最多2的32次⽅-1个字符。
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提供的数据类型包括数值类型(整数类型和⼩数类型)、字符串类型、⽇期类型、复合类型(复合类型包括enum类型和set类型)以及⼆进制类型。
1,整数类型:整数类型的数,默认情况下既可以表⽰正整数⼜可以表⽰负整数(此时称为有符号数)。
如果只希望表⽰零和正整数,可以使⽤⽆符号关键字“unsigned”对整数类型进⾏修饰。
例如:score tinyint unsigned各个类别存储空间及取值范围。
2,⼩数类型decimal(length, precision)⽤于表⽰精度确定(⼩数点后数字的位数确定)的⼩数类型,length决定了该⼩数的最⼤位数,precision⽤于设置精度(⼩数点后数字的位数)。
例如: decimal (5,2)表⽰⼩数取值范围:999.99~999.99 decimal (5,0)表⽰: -99999~99999的整数。
3,字符串char()与varchar(): 例如对于简体中⽂字符集gbk的字符串⽽⾔,varchar(255)表⽰可以存储255个汉字,⽽每个汉字占⽤两个字节的存储空间。
假如这个字符串没有那么多汉字,例如仅仅包含⼀个‘中’字,那么varchar(255)仅仅占⽤1个字符(两个字节)的储存空间;⽽char(255)则必须占⽤255个字符长度的存储空间,哪怕⾥⾯只存储⼀个汉字。
4,⽇期类型。
date表⽰⽇期,默认格式为‘YYYY-MM-DD’; time表⽰时间,格式为‘HH:ii:ss’; year表⽰年份; datetime与timestamp是⽇期和时间的混合类型,格式为'YYYY-MM-DD HH:ii:ss'datetime与timestamp都是⽇期和时间的混合类型,区别在于:表⽰的取值范围不同,datetime的取值范围远远⼤于timestamp的取值范围。
将NULL插⼊timestamp字段后,该字段的值实际上是MySQL服务器当前的⽇期和时间。
Mysql中的数据类型
ENUM(x,y,z,etc.) 允许你输入可能值的列表。可以在ENUM列表中列出最大65535个值。如果列表中不存在插入的值,则插入空值。注释:这些值是按照你输入的顺序存储的。可以按照此格式输入可能的值:ENUM('X','Y','Z')
TINYTEXT 存放最大长度为255个字符的字符串。
TEXT 存放最大长度为65,535个字符的字符串。
BLOB 用于BLOBs (Binary Large OBjects) 。存放最多65,535 字节的数据。
数据类型 描述
TINYINT(size) -128 到127 常规。0到255 无符号*。在括号中规定最大位数。
SMALLINT(size) -32768 到32767 常规。0 到65535 无符号*。在括号中规定最大位数。
DOUBLE(size,d) 带有浮动小数点的大数字。在括号中规定最大位数。在d参数中规定小数点右侧的最大位数。
DECIMAL(size,d) 作为字符串存储的DOUBLE类型,允许固定的小数点。
Date 类型: (*即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD 。)
MEDIUMINT(size) -8388608 到8388607 普通。0 to 16777215 无符号*。在括号中规定最大位 数。
MySQL的数据类型和字段属性详解
MySQL的数据类型和字段属性详解1. 引言MySQL数据库是一种广泛使用的关系型数据库管理系统,用于存储和管理大量数据。
在MySQL中,数据类型和字段属性对于定义数据库表的结构和存储数据的格式非常重要。
本文将详细讨论MySQL支持的数据类型和各种字段属性的用途和限制。
2. 常见的MySQL数据类型2.1 整型数据类型MySQL提供了多种整型数据类型,如TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。
这些数据类型用于存储不同范围和大小的整数值。
例如,TINYINT可以存储-128到127的整数值,而BIGINT可以存储非常大的整数值。
2.2 浮点型数据类型浮点型数据类型用于存储带有小数部分的数值。
MySQL支持FLOAT和DOUBLE类型,其中FLOAT可以存储4字节浮点数,DOUBLE可以存储8字节浮点数。
如果需要更高精度的浮点数,可以使用DECIMAL类型。
2.3 字符串类型MySQL提供了多种字符串类型,如CHAR、VARCHAR、TEXT和BLOB。
CHAR类型用于存储固定长度的字符串,VARCHAR类型用于存储可变长度的字符串。
TEXT类型用于存储大量文本数据,而BLOB类型用于存储大量二进制数据。
2.4 日期和时间类型日期和时间类型用于存储日期、时间和日期时间数据。
MySQL支持DATE、TIME、DATETIME和TIMESTAMP等类型。
DATE类型用于存储年月日,TIME类型用于存储时分秒,DATETIME类型用于存储日期和时间,而TIMESTAMP类型用于存储自动更新的日期和时间。
3. 字段属性详解3.1 NULL和NOT NULL属性NULL属性表示该字段可以为空,即允许存储NULL值。
如果不指定NULL属性,默认情况下字段可以为空。
NOT NULL属性表示该字段不能为空,即不允许存储NULL值。
3.2 默认值属性默认值属性指定了在插入新记录时,如果没有提供该字段的值,则使用的默认值。
MySQL数据库的数据类型和字段属性详解
MySQL数据库的数据类型和字段属性详解引言MySQL是一种非常流行和常用的关系型数据库管理系统,广泛应用于各种网站和应用程序中。
在使用MySQL进行数据库设计和开发时,数据类型和字段属性的选择非常重要,它们直接影响着数据库的性能和数据的完整性。
本文将详细介绍MySQL数据库中常用的数据类型和字段属性,以便读者能够更好地理解和应用它们。
一、数值类型1. 整型(INT)整型是MySQL中最基本和常用的数据类型之一。
在MySQL中,整型包括int、tinyint、smallint、mediumint和bigint五种。
它们的区别在于存储范围和占用空间的大小。
例如,int类型的范围是-2147483648到2147483647,占用空间为4字节。
2. 浮点型(FLOAT和DOUBLE)浮点型用于存储小数,包括单精度浮点类型(FLOAT)和双精度浮点类型(DOUBLE)。
FLOAT类型占用4字节,DOUBLE类型占用8字节。
浮点型能够存储非常大和非常小的数字,但是在精度上有一定的限制。
3. 定点类型(DECIMAL)定点类型用于存储精确的小数,其精度和范围可以由用户自定义。
DECIMAL类型在数据库中的存储是以字符串形式存储的,它具有较高的精度和较小的存储空间。
二、字符串类型1. 字符型(CHAR和VARCHAR)字符型用于存储字符串,包括固定长度的字符类型(CHAR)和可变长度的字符类型(VARCHAR)。
CHAR类型在数据库中占用固定的空间,而VARCHAR 类型根据存储的内容变化而变化。
CHAR类型在存储短字符串时效率较高,而VARCHAR类型适用于存储可变长度的内容。
2. 文本型(TEXT)文本型用于存储较长的字符串,其分为四种类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。
它们分别用于存储不同长度的文本内容,MEDIUMTEXT类型可以存储最大长度为16MB的文本。
三、日期和时间类型1. 日期类型(DATE)日期类型用于存储日期,包括年、月、日。
MySQL中常见的数据类型及其用途
MySQL中常见的数据类型及其用途MySQL是一种常用的关系型数据库管理系统,被广泛应用于Web开发和其他领域。
在MySQL中,数据类型是数据表中各列的属性之一,它定义了数据的存储格式、占用空间和操作行为。
不同的数据类型适用于不同的数据存储需求和数据操作操作。
本文将介绍MySQL中常见的数据类型及其用途。
1. 整型数据类型整型数据类型用于存储整数值,常见的有以下几种:- TINYINT:存储范围为-128到127的整数。
通常用于存储布尔值,0表示假,1表示真。
- SMALLINT:存储范围为-32768到32767的整数。
适用于存储较小的整数值。
- MEDIUMINT:存储范围为-8388608到8388607的整数。
适用于存储中等大小的整数值。
- INT:存储范围为-2147483648到2147483647的整数。
适用于存储一般大小的整数值。
- BIGINT:存储范围为-9223372036854775808到9223372036854775807的整数。
适用于存储较大的整数值。
整型数据类型用于存储整数,经常用于记录索引、主键或表示计数值。
2. 浮点型数据类型浮点型数据类型用于存储浮点数值,即带有小数点的数值。
常见的有以下几种:- FLOAT:单精度浮点数,占用4字节。
通常用于存储较小范围的浮点数。
- DOUBLE:双精度浮点数,占用8字节。
适用于存储较大范围的浮点数。
浮点型数据类型用于存储需要保留小数位的数值,如货币金额、科学计数法表示的数值等。
3. 定点型数据类型定点型数据类型用于存储固定精度的数值,适用于需要精确计算的场景。
常见的有以下几种:- DECIMAL:用于存储固定精度的十进制数值。
可以指定精度和小数位数。
定点型数据类型适用于要求高精度计算的场景,如财务计算、精确测量等。
4. 字符串型数据类型字符串型数据类型用于存储文本数据,常见的有以下几种:- CHAR:固定长度字符串,最多可以存储255个字符。
四、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中的数据类型选择与性能影响分析
MySQL中的数据类型选择与性能影响分析引言在数据库设计与建模的过程中,选择合适的数据类型对于存储和检索数据是至关重要的。
不同的数据类型会对数据库的性能产生不同的影响。
因此,在MySQL数据库中合理选择与使用数据类型对于提高数据库的性能和效率至关重要。
本文将从不同数据类型的特性入手,分析其对数据库性能的影响,并提供一些优化建议。
1. 数值类型选择数值类型在数据库中广泛应用于存储整数、小数和货币等。
MySQL提供不同的数值类型供选择,包括整型、浮点型和定点型。
不同的数值类型在存储空间和计算速度上存在差异。
1.1 整数类型MySQL提供了多种整数类型,如TINYINT、SMALLINT、INT和BIGINT等。
根据实际需求选择合适的整数类型可以节省存储空间并提高计算性能。
通常情况下,尽量选择最小的整数类型来存储数据,以节省存储空间。
例如,如果需要存储的数字范围在-128到127之间,可以选择TINYINT类型,而不是INT类型。
1.2 浮点类型浮点类型适用于存储具有小数部分的数字,如FLOAT和DOUBLE。
浮点类型相对于整数类型在存储空间上更为占用,并且在计算时也相对较慢。
因此,在选择浮点类型时,应根据具体需求权衡存储空间和计算速度的关系。
1.3 定点类型定点类型用于精确存储小数,如DECIMAL。
与浮点类型相比,定点类型具有更高的精度,但相应地也占用更多的存储空间。
在需要精确计算的场景中,如财务系统,建议使用定点类型。
2. 字符串类型选择字符串类型用于存储文本、字符和日期时间等数据。
MySQL提供多种字符串类型,如CHAR、VARCHAR、TEXT等。
不同的字符串类型在存储空间和检索速度上具有不同的特性。
2.1 CHAR类型CHAR类型用于存储固定长度的字符数据。
CHAR类型在存储时会按照指定长度进行填充,所以它在存储空间方面相对较大。
然而,由于存储的是固定长度的数据,检索速度相对较快。
在存储长度固定的数据时,如性别、国家代码等,可以选择CHAR类型。
数据表中字段数据类型
数据表中字段数据类型数据表中的字段数据类型取决于所使用的数据库管理系统(DBMS)。
不同的DBMS支持不同的数据类型。
以下是一些常见的DBMS和它们支持的数据类型示例:1. MySQL:数值类型:INT, FLOAT, DECIMAL, TINYINT, SMALLINT, MEDIUMINT, BIGINT, BIT日期和时间类型:DATE, TIME, DATETIME, TIMESTAMP, YEAR字符串类型:CHAR, VARCHAR, TEXT, TINYTEXT, MEDIUMTEXT, LONGTEXT二进制类型:BINARY, VARBINARY, BLOB, TINYBLOB, MEDIUMBLOB, LONGBLOB2. PostgreSQL:数值类型:INTEGER, SMALLINT, BIGINT, DECIMAL, NUMERIC, REAL, DOUBLE PRECISION日期和时间类型:DATE, TIME, TIME WITH TIME ZONE, TIMESTAMP, TIMESTAMP WITH TIME ZONE字符串类型:CHAR, VARCHAR, TEXT二进制类型:BYTEA3. SQL Server:数值类型:INT, TINYINT, SMALLINT, BIGINT, FLOAT, DECIMAL, NUMERIC日期和时间类型:DATE, TIME, DATETIME, DATETIME2字符串类型:CHAR, VARCHAR, TEXT二进制类型:BINARY, VARBINARY4. Oracle Database:数值类型:NUMBER日期和时间类型:DATE, TIMESTAMP字符串类型:CHAR, VARCHAR2二进制类型:RAW, BLOB5. SQLite:数值类型:INTEGER, REAL, TEXT, BLOB日期和时间类型:DATETIME字符串类型:TEXT (default for string columns)二进制类型:BLOB这只是一些常见的DBMS和它们支持的数据类型的示例,实际上还有许多其他的数据类型可供选择,具体取决于您使用的DBMS。
mysql和Oracle数据类型对照
mysql和Oracle数据类型对照MySQL与Oracle两种数据库在⼯作中,都是⽤的⽐较多的数据库,由于MySQL与Oracle在数据类型上有部分差异,在我们迁移数据库时,会遇上⼀定的⿇烦,下⾯介绍MySQL与Oracle数据库数据类型的对应关系。
⼀、常见数据类型在MySQL与Oracle数据库中的表现形式说明mysql oracle变长字符串VARCHAR[0-65535]定义长度默认按字符长度计算,如果是GBK编码的汉字将占⽤2个字节VARCHAR2[1-4000]VARCHAR是VARCHAR2的同义词定义默认按字节长度计算整数TINYINT(-128-127)SMALLINT(-32768-32767)MEDIUMINT(-8388608-8388607)INT(-2147483648-2147483647)BIGINT(-9223372036854775808-9223372036854775807)⽆专⽤类型,TINYINT可以⽤NUMBER(3,0)代替SMALLINT可以⽤NUMBER(5,0)代替MEDUIMINT可以⽤NUMBER(7,0)代替INT可以⽤NUMBER(10,0)代替BIGINT可以⽤NUMBER(20,0)代替ORACLE中有SMALLINT,INT,INTEGER类型,不过这是NUMBER(38,0)的同义词数值类型DECIMAL[1-65[,0-30]]NUMERIC是DECIMAL的同义词NUMBER 可表⽰数范围: 1*10^-130⾄1*10^126NUMBER([1-38][,-84-127])DECIMAL、NUMERIC、DEC是NUMBER的同义词浮点型FLOAT(D,M)oracle10g开始增加BINARY_FLOAT类型10g以前⽆专⽤类型,可以⽤NUMBER代替ORACLE中有FLOAT和REAL类型,不过这是NUMBER的同义词双精度浮点型DOUBLE(D,M)oracle10g开始增加BINARY_DOUBLE类型10g以前⽆专⽤类型,可以⽤NUMBER代替ORACLE中有DOUBLE PRECISION类型,不过这是NUMBER的同义词位类型BIT(1-64)⽆DATE,3字节存储,只存储⽇期,没有时间,⽀持范围是[1000-01-01]⾄[9999-12-31]TIME,3字节存储,只存储时⽇期类型TIME,3字节存储,只存储时间,没有⽇期,⽀持范围是[-838:59:59]⾄[838:59:59]DATETIME,占8字节存储,可表⽰⽇期和时间,⽀持范围是[1000-01-01 00:00:00]⾄[9999-12-31 23:59:59]TIMESTAMP,占4字节存储,可表⽰⽇期和时间,范围是[1970-01-01 00:00:00]⾄[2038-01-19 03:14:07]DATE类型7字节存储,可表⽰⽇期和时间,⽀持范围是[-4712-01-01 00:00:00]⾄[9999-12-31 23:59:59]⾼精度⽇期5.6.4以前不⽀持⼩数秒精度5.6.4开始TIME,DATETIME,TIMESTAMP⽀持,最多可以6位⼩数秒,也就是微秒级别TIMESTAMP[0-9]占⽤空间7-11个字节,当⼩数秒精度为0时与DATE类型相同,⼩数秒最⾼精度可达9位,也就是纳精度年份份,⽀持范围是[1901]⾄[2155]⽆对应类型,可以⽤NUMBER(3,0)代替定长字符串CHAR[0-255],定义长度默认按字符长度计算,最⼤保存255字符CHAR[1-2000]定义默认按字节长度计算⽆符号说明⽀持,⽤于数值类型不⽀持⼤字符串,⼀般⽤于存储⽂本⽂件或超⼤描述及备注类信息TINYTEXT 最⼤⽀持255个字节TEXT最⼤⽀持65535个字节MEDIUMTEXT最⼤⽀持16MB个字节LONGTEXT最⼤⽀持4GB字节字段不⽀持默认值⽀持(CLOB)oracle10g以前最⼤⽀持4GB个字节oracle10g开始最⼤⽀持4GB个数据块,数据块⼤⼩为2KB-32KBoracle还有⼀个LONG类型,是早期的存储⼤字符串类型,最⼤⽀持2GB字节,现已不推荐使⽤⼆进制对象,⼀般⽤于存储⽂件或图⽚数据TINYBLOB 最⼤⽀持255个字节BLOB最⼤⽀持65535个字节MEDIUMBLOB最⼤⽀持16MB个字节LONGBLOB最⼤⽀持4GB字节字段不⽀持默认值⽀持(BLOB)oracle10g以前最⼤⽀持4GB个字节oracle10g开始最⼤⽀持4G个数据块,数据块⼤⼩为2KB-32KBoracle还有⼀个LONGRAW类型,是早期的存储⼆进制类型,最⼤⽀持2GB字节,现已不推荐使⽤⼆进制信息BINARY(0-255),定长VARBINARY(0-65535),变长RAW(1-2000)枚举类型ENUM(v1,v2,v3,...),最多65535个元素不⽀持集合类型SET(v1,v2,v3,...),最多64个元素不⽀持国际化字符集类型,较少使⽤⽆,MYSQL可以对每个字段指定字符编码⽀持NCHAR(1-2000) NVARCHAR(1-4000)外部⽂件指针类型不⽀持⽀持⽂件⼤⼩最⼤4GB⽂件名称最长255字符不⽀持⽀持⾃动增长类型⽀持使⽤简单不⽀持⼀般使⽤SEQUENCE解决,⽤法与⾃增类型差别较⼤,使⽤较复杂,但能实现⾮常灵活的应⽤,包括字符⾃增主键、全局主括字符⾃增主键、全局主键等等不⽀持函数和表达式TEXT和BLOB字段类型不⽀持默认值⽀持函数和表达式⽀持,例如,把emp表的id字段顺序放在name字段后⾯:alter table emp modify column id varchar(20) after name;不⽀持,只能重建表或字段虚拟字段是⼀个逻辑字段定义,其结果值通常是⼀个表达式,并在表中存储物理值,不占⽤空间,主要⽤于简化查询逻辑。
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 数据类型2009年07月18日星期六15:57在计算机中数据有两种特征:类型和长度。
所谓数据类型就是以数据的表现方式和存储方式来划分的数据的种类。
在SQL Server 中每个变量、参数、表达式等都有数据类型。
系统提供的数据类型分为几大类,。
其中,BIGINT、SQL_V ARIANT 和TABLE 是SQL Server 2000 中新增加的3 种数据类型。
下面分类讲述各种数据类型。
4.3.1 整数数据类型整数数据类型是最常用的数据类型之一。
1、INT (INTEGER)INT (或INTEGER)数据类型存储从-2的31次方(-2 ,147 ,483 ,648)到2的31次方-1 (2 ,147 ,483,647)之间的所有正负整数。
每个INT 类型的数据按4 个字节存储,其中1 位表示整数值的正负号,其它31 位表示整数值的长度和大小。
2、SMALLINTSMALLINT 数据类型存储从-2的15次方(-32,768)到2的15次方-1(32 ,767 )之间的所有正负整数。
每个SMALLINT 类型的数据占用2 个字节的存储空间,其中1 位表示整数值的正负号,其它15 位表示整数值的长度和大小。
3、TINYINTTINYINT数据类型存储从0 到255 之间的所有正整数。
每个TINYINT类型的数据占用1 个字节的存储空间。
4、BIGINTBIGINT 数据类型存储从-2^63 (-9 ,223,372,036,854,775,807)到2^63-1(9,223,372,036 ,854 ,775,807)之间的所有正负整数。
每个BIGINT 类型的数据占用8个字节的存储空间。
4.3.2 浮点数据类型浮点数据类型用于存储十进制小数。
浮点数值的数据在SQL Server 中采用上舍入(Round up 或称为只入不舍)方式进行存储。
所谓上舍入是指,当(且仅当)要舍入的数是一个非零数时,对其保留数字部分的最低有效位上的数值加1 ,并进行必要的进位。
mysql的数据类型int、bigint、smallint和tinyint取值范围
mysql的数据类型int、bigint、smallint和tinyint取值范围
使⽤整数数据的精确数字数据类型。
bigint
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。
存储⼤⼩为 8个字节。
int
从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。
存储⼤⼩为4个字节。
int 的 SQL-92 同义字为 integer。
smallint
从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。
存储⼤⼩为2个字节。
tinyint
从 0 到 255 的整型数据。
存储⼤⼩为1字节。
注释
在⽀持整数值的地⽅⽀持 bigint 数据类型。
但是,bigint ⽤于某些特殊的情况,当整数值超过 int 数据类型⽀持的范围时,就可以采⽤bigint。
在 SQL Server 中,int 数据类型是主要的整数数据类型。
在数据类型优先次序表中,bigint 位于 smallmoney 和 int 之间。
只有当参数表达式是 bigint 数据类型时,函数才返回 bigint。
SQL Server 不会⾃动将其它整数数据类型(tinyint、smallint 和 int)提升为bigint。
Mysql各数据类型以及取值范围和适用场合
Mysql各数据类型以及取值范围和适⽤场合编号数据类型⼤⼩有符值域⽆符值域适⽤场合1Bit1~64 Bit0~1位标⽰2TinyInt 1 Byte-128~1270~255⼩整数值3SmallInt 2 Byte -32768~32767 0~65535中整数值4MediumInt 3 Byte -8388608~8388607 0~16777215⼤整数值5Int 4 Byte -2147483648~2147483647 0~4294967295整数值6BigInt8 Byte -9223372036854775808~92233720368547758070~18446744073709551615极⼤整数值7Float 4 Byte单精浮点数值8Double8 Byte双精浮点数值9Deciaml依赖于M和D的值依赖于M和D的值10Date 3 Byte格式 : YYYY-MM-DD1000-01-01~9999-12-31⽇期值11DateTime8 Byte格式 : YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~9999-12-31 23:59:59⽇期和时间值12Timestamp8 Byte格式 : YYYYMMDDHHMMSS 1970-01-01 00:00:00~2037年某时时间戳13Time 3 Byte格式 : HH:MM:SS-838:59:59~838:59:59时间值14Year 1 Byte格式 : YYYY1901/2155年份值15Char0~255 Byte定长字符串16VarChar0~255 Byte变长字符串17Binary18VarBinary19TinyText0~255 Byte短⽂本字符串20MediumText 0~16777215Byte中长⽂本21LongText 0~4294967295Byte极⼤⽂本22Text0~65535 Byte长⽂本23TinyBlob0~255 Byte不超过255个字符的⼆进制字符串24Blob0~65535 Byte⼆进制形式的长⽂本数据25MediumBlob 0~16777215Byte⼆进制形式的中等长⽂本数据26LongBlob 0~4294967295Byte⼆进制形式的极⼤长⽂本数据27Enum28Set29Geometry30Point31MultiPoint32Polygon33MultiPolygon34LineString35MultiLineString36GeometryCollection数据尚未填写完成,跟进中。
MySQL表结构(含数据类型、字段备注注释)导出成Excel
MySQL表结构(含数据类型、字段备注注释)导出成Excel 博客⾸次发布于个⼈博客:吾勇⼠的博客,转载请标明出处)像我们使⽤的数据库图形化⼯具Navicat Premium、Navicat for XXX、SQLyog、DataGrip等等都可以导出表结构SQL脚本,但是当我们要将数据库整理成⽂档时导出表结构的sql脚本肯定是不⽅便的,在这⾥要说的是,将表结构(含注释)导出到Excel中的⽅法Navicat系列⼯具只⽀持将数据导出成以下格式但是不⽀持将表结构导出成以上的那些格式,这个⽐较悲痛。
这⾥就提供⼀种如果使⽤的⼯具不⽀持表结构导出成Excel或者HTML等格式的⽅法;⽅法⼀:以下⽤的是Navicat Premium,可以换成任意图形化客户端[sql]1. SELECT2. COLUMN_NAME 列名,3. COLUMN_TYPE 数据类型,4. DATA_TYPE 字段类型,5. CHARACTER_MAXIMUM_LENGTH 长度,6. IS_NULLABLE 是否为空,7. COLUMN_DEFAULT 默认值,8. COLUMN_COMMENT 备注9. FROM10. INFORMATION_SCHEMA.COLUMNS11. where12. -- developerclub为数据库名称,到时候只需要修改成你要导出表结构的数据库即可13. table_schema ='developerclub'14. AND15. -- article为表名,到时候换成你要导出的表的名称16. -- 如果不写的话,默认会查询出所有表中的数据,这样可能就分不清到底哪些字段是哪张表中的了,所以还是建议写上要导出的名名称17. table_name = 'article'2.查询结果图3.然后全选复制结果到Excel表中即可⽅法⼆:使⽤的是SQLyog,SQLyog⽀持将表结构导出成HTML的样式,⽽且⾮常的⽅便1.创建数据库架构HTML2.选择要导出表结构的表3.创建HTML4.导出效果图。
mysql中的数据类型enum和set
mysql中的数据类型enum和setmysql中的字符串数据类型set,enum1、enum 单选字符串数据类型,适合存储表单界⾯中的“单选值”。
设定enum的时候,需要给定“固定的⼏个选项”;存储的时候就只存储其中的⼀个值。
设定enum的格式: enum("选项1","选项2","选项3",...); 实际上,enum的选项都会对应⼀个数字,依次是1,2,3,4,5...,最多有65535个选项 使⽤的时候,可以使⽤选项的字符串格式,也可以使⽤对应的数字。
2、set 多选字符串数据类型,适合存储表单界⾯的“多选值”。
设定set的时候,同样需要给定“固定的⼏个选项”;存储的时候,可以存储其中的若⼲个值。
设定set的格式: set("选项1","选项2","选项3",...) 同样的,set的每个选项值也对应⼀个数字,依次是1,2,4,8,16...,最多有64个选项 使⽤的时候,可以使⽤set选项的字符串本⾝(多个选项⽤逗号分隔),也可以使⽤多个选项的数字之和(⽐如:1+2+4=7)代码如下:/* 创建表格 */mysql>create table enum_set_table(-> id int auto_increment primary key,-> gender enum('M','F'),-> hobby set('music','movie','swimming','footbal')-> );Query OK, 0 rows affected (0.01 sec)/* ⼀个enum值,⼀个set值,⼆者均使⽤选项的字符串格式 */mysql>insert into enum_set_table(id,gender,hobby) values(null,'M','music');Query OK, 1 row affected (0.01 sec)/* ⼀个enum值,多个set值,⼆者均使⽤选项的字符串格式 */mysql>insert into enum_set_table(id,gender,hobby) values(null,'F','music,movie,footbal');Query OK, 1 row affected (0.00 sec)/* ⼀个enum值,⼀个set值,⼆者均使⽤选项的数字格式 */mysql>insert into enum_set_table(id,gender,hobby) values(null,1,1);Query OK, 1 row affected (0.00 sec)/* ⼀个enum值,多个set值,⼆者均使⽤选项的数字格式,其中enum的值 2<=>'F',15=1+2+4+8 <=> 'music,movie,swimming,footbal' */mysql>insert into enum_set_table(id,gender,hobby) values(null,2,15);Query OK, 1 row affected (0.00 sec)/* ⼀个enum值,多个set值,enum值使⽤选项的字符串格式,set值使⽤选项的数字格式,7=1+2+4 <=> 'music,movie,swimming' */mysql>insert into enum_set_table(id,gender,hobby) values(null,'F',7);Query OK, 1 row affected (0.01 sec)/* 查询结果 */mysql>select*from enum_set_table;+----+--------+------------------------------+| id | gender | hobby |+----+--------+------------------------------+|1| M | music ||2| F | music,movie,footbal ||3| M | music ||4| F | music,movie,swimming,footbal ||5| F | music,movie,swimming |+----+--------+------------------------------+5 rows in set (0.00 sec)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表类型
MySQL的数据表类型很多,其中比较重要的是MyISAM,InnoDB这两种。
这两种类型各有优缺点,需要根据实际情况选择适合的,MySQL支持对不同的表设置不同的类型。
下面做个对比:
一般情况下我觉得选择MyISAM就行,如果需要事务,或者需要很多用户同时修改某个数据表里的数据时,可以考虑InnoDB数据表。
数据类型
1.整型(xxxint)
右侧的取值范围是在未加unsigned关键字的情况下,如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。
书上说int(m)括弧里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,我测了一下,定义一个字段number 类型为int(4),插入一条记录"123456",用mysql query broswer执行SELECT查询,返回的结果集中123456正确显示,没有影响到显示的宽度,不知道这个m有什么用。
2.浮点型(float和double)
参数m只影响显示效果,不影响精度,d却不同,会影响到精度。
比如设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,小数点后面的数别四舍五入截成457了,但总个数不受到限制(6位,超过了定义的5位)。
3.定点数(decimal)
decimal(m,d) 定点类型
浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
参数m是定点类型数字的最大个数(精度),范围为0~65,d小数点右侧数字的个数,范围为0~30,但不得超过m。
对定点数的计算能精确到65位数字。
4.字符串(char,varchar,xxxtext)
1.都可以通过指定n,来限制存储的最大字符数长度,char(20)和varchar(20)将最多只能存储20个字符,超过的字符将会被截掉。
n必须小于该类型允许的最大字符数。
2.char类型指定了n之后,如果存入的字符数小于n,后面将会以空格补齐,查询的时候再将末尾的空格去掉,所以char类型存储的字符串末尾不能有空格,varchar不受此限制。
3.内部存储的机制不同。
char是固定长度,char(4)不管是存一个字符,2个字符或者4个字符(英文的),都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入一个字符将占用2个字节,2个字符占用3个字节,4个字符占用5个字节。
4.char类型的字符串检索速度要比varchar类型的快。
varchar和text:
1.都是可变长度的,最多能存储65535个字符。
2.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节
(n<=255)或2个字节(n>255),text是实际字符数+2个字节。
3.text类型不能有默认值。
4.varchar可直接创建索引,text创建索引要指定前多少个字符。
查询速度varchar要快于text,在都创建了索引的情况下,text的索引好像没起作用,参见这篇文章:
/read.php?24,105964,105964
5.二进制数据(xxxBlob)
XXXBLOB和xxxtext是对应的,不过存储方式不同,xxxTEXT是以文本方式存储的,如果存储英文的话区分大小写,而xxxBlob是以二进制方式存储的,不区分大小写。
xxxBlob存储的数据只能整体读出。
xxxTEXT可以指定字符集,xxxblob不用指定字符集。
6.日期时间类型(date,time,datetime,timestamp)
时间会在其他字段修改的时候自动刷新。
所以这个数据类型的字段可以存放这条记录最后被修改的时间,而不是真正来的存放时间。
数据类型的属性。