MYSQL字段类型介绍

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

二、数字类型
1、TINYINT
一个很小的整数。

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

2、SMALLINT
一个小整数。

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

3、MEDIUMINT
一个中等大小整数。

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

4、INT
一个正常大小整数。

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

5、INTEGER
这是INT的一个同义词。

6、BIGINT
一个大整数。

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

7、FLOAT
一个小(单精密)浮点数字。

不能无符号。

允许的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。

8、DOUBLE
一个正常大小(双精密)浮点数字。

不能无符号。

允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308。

二、日期和时间类型
1、DATE
一个日期。

支持的范围是'1000-01-01'到'9999-12-31'。

MySQL以'YYYY-MM-DD'格式来显示DA TE 值,但是允许你使用字符串或数字把值赋给DA TE列。

2、DATETIME
一个日期和时间组合。

支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

MySQL以'YYYY-MM-DD HH:MM:SS'格式来显示DA TETIME值,但是允许你使用字符串或数字把值赋给DA TETIME的列。

3、TIME
一个时间。

范围是'-838:59:59'到'838:59:59'。

MySQL以'HH:MM:SS'格式来显示TIME值,但是允许你使用字符串或数字把值赋给TIME列。

4、YEAR
一个2或4位数字格式的年(缺省是4位)。

允许的值是1901到2155,和0000(4位年格式),如果你使用2位,1970-2069( 70-69)。

MySQL以YYYY格式来显示YEAR值,但是允许你把使用字符串或数字值赋给YEAR列。

三、字符串类型
1、CHAR(M)
一个定长字符串,当存储时,总是是用空格填满右边到指定的长度。

M的范围是1 ~255个字符。

当值被检索时,空格尾部被删除。

2、V ARCHAR
一个变长字符串。

注意:当值被存储时,尾部的空格被删除。

3、TINYTEXT
一个BLOB或TEXT列,最大长度为255(2^8-1)个字符。

4、TEXT
一个BLOB或TEXT列,最大长度为65535(2^16-1)个字符。

5、MEDIUMTEXT
一个BLOB或TEXT列,最大长度为16777215(2^24-1)个字符。

6、LONGTEXT
一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符。

合集下载

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字段写法

mysql字段写法在MySQL中,字段(column)是数据库表中的一个列。

以下是关于MySQL字段的一些常见写法:1.创建表时定义字段:sql复制代码CREATE TABLE表名 (字段1数据类型,字段2数据类型,...);例如,创建一个名为users的表,包含id、name和age三个字段:sql复制代码CREATE TABLE users (id INT,name VARCHAR(50),age INT);2.修改表时添加字段:sql复制代码ALTER TABLE表名ADD字段名数据类型;例如,向users表中添加一个名为email的字段:sql复制代码ALTER TABLE users ADD email VARCHAR(100);3.修改表时删除字段:sql复制代码ALTER TABLE表名DROP字段名;例如,从users表中删除email字段:sql复制代码ALTER TABLE users DROP email;4.修改字段的数据类型:sql复制代码ALTER TABLE表名 MODIFY 字段名新数据类型;例如,将users表中name字段的数据类型从VARCHAR(50)修改为TEXT:sql复制代码ALTER TABLE users MODIFY name TEXT;5.重命名字段:sql复制代码ALTER TABLE表名 RENAME 旧字段名TO新字段名;例如,将users表中name字段重命名为fullname:sql复制代码ALTER TABLE users RENAME name TO fullname;。

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数据类型——字符串类型⼀、字符串类型在SQL中,将字符串类型分成了6类:char,varchar,text,blob,enum和set。

1.1 定长字符串定义:char,磁盘(⼆维表)在定义结构的时候,就以及确定了最终数据的存储长度。

Char(L): L代表length,可以存储的长度,单位为字符,最⼤长度值可以为255.Char(4):在UTF8环境下,需要4*3=12个字节。

1.2 变长字符串定义:varchar,在分配空间的时候,按照最⼤的空间分配,但是实际上最终⽤了多少,是根据具体的数据来确定。

Varchar(L): L表⽰字符长度,理论长度是65536个字符,但是会多出1到2个字节来确定存储的实际长度Varchar(10): 的确存了10个汉字,UTF8环境,10*3+1=31存储了3个汉字,UTF8环境,3*3+1=10(bytes)定长与变长的存储实际空间(UTF8)存储实际空间Char(4)Varchar(4)Char占⽤字节Varchar占⽤字节ABCD ABCD ABCD4*3=124*3+1=13A A A4*3=121*3+1=4ABCDE××数据超过长度数据超过长度如何选择定长或者是变长字符串呢?定长的磁盘空间⽐较浪费,但是效率⾼:如果数据基本上确定长度都⼀样,就是使⽤定长,如:⾝份证,电话号码,⼿机号码等变长的磁盘空间⽐较节省,但是效率低:如果数据不能确定长度(不同数据有变化),如姓名、地址等。

1.3 ⽂本字符串如果数据量⾮常⼤,通常说超过255个字符就会使⽤⽂本字符串⽂本字符串根据存储的格式进⾏分类:text和blobText: 存储⽂字(⼆进制数据实际上都是存储路径)Blob: 存储⼆进制数据(通常不⽤)1.4 枚举字符串枚举定义:enum,事先将所有可能出现的结果都设计好,实际上存储的数据都必须是规定好的数据中的⼀个。

枚举的使⽤⽅式定义:enum(可能出现的元素列表); //如 enum(‘男’,‘⼥’,‘不男不⼥’,‘妖’,‘保密’);使⽤:存储数据,只能存储上⾯定义好的数据(a) 创建枚举表1CREATE TABLE my_enum(gender enum('男','⼥','保密')) charset utf8;(b)加⼊数据作⽤之⼀:规范数据格式;数据只能是规定的数据的其中⼀个1insert into my_enum values('男'),('保密'); --有效数据2insert into my_enum values('male'); --错误数据(没有male元素)(b)作⽤之⼆:节省存储空间(枚举通常有⼀个别名:单选框):枚举实际存储的是数值⽽不是字符串本⾝。

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数据库的blob类型字段内容

更新mysql数据库的blob类型字段内容

更新mysql数据库的blob类型字段内容1.⾸先对于blob类型做⼀个说明:对于mysql或者mariadb有4个可选的blob类型:tinyblob:最⼤存储数据的长度为255字节blob:最⼤存储的数据长度为65535字节,也就是65Kbmediumblob:最⼤存储的数据长度为16777215字节,也就是16Mblongblob:最⼤存储的数据长度为4,294,967,295(232 - 1)字节,也就是4Gb2. blob类型的⽤途通常这种类型的字段⽤于存储⼆进制⽂件,例如图⽚、视频、⾳频、⽂档等3. 向数据库的blob字段中插⼊数据,并查询# -*- coding:utf-8 -*-import mariadb# 连接数据库conn = mariadb.connect(user="mysql", # 数据库账号password="passwd", #数据库密码host="192.168.1.101", # 数据库主机名或IP地址database = "employee", #指定数据库(可选)port=3306, #端⼝autocommit = True # DB更新操作是否⾃动commit(可选参数))# 打开图⽚⽂件with open('C:\\Users\\xiaoming\\Desktop\\100001.jpg', 'rb') as file:fp = file.read()# 定义sql的插⼊语句sql_insert = '''INSERT INTO staff (uid, name, photo) values(?,?,?)'''values = [('100001','⼩明',fp)]# 打开数据库游标cur = conn.cursor()# 执⾏sql语句,进⾏插⼊数据cur.executemany(sql_insert,values) #执⾏SQL语句# 定义数据库查询语句sql_select = '''select photo from staff where uid=\'100001\';'''# 执⾏sql语句cur.execute(sql_select)# 读取查询数据photo_data = cur.fetchall()print(type(photo_data))#关闭数据库连接conn.close()插⼊数据后,还可以使⽤数据库客户端⼯具进⾏查看,⽐如DBeaver4. 更新数据库中的blob类型的字段内容对于update操作,是⽐较特殊的,如果直接通过类似 UPDATE staff SET photo=b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x.... WHERE uid='100001';的更新语句,会报语法错误。

mysql索引类型normal,unique,fulltext

mysql索引类型normal,unique,fulltext问题1:mysql索引类型normal,unique,full text的区别是什么?normal:表⽰普通索引unique:表⽰唯⼀的,不允许重复的索引,如果该字段信息保证不会重复例如⾝份证号⽤作索引时,可设置为uniquefull textl: 表⽰全⽂搜索的索引。

FULLTEXT ⽤于搜索很长⼀篇⽂章的时候,效果最好。

⽤在⽐较短的⽂本,如果就⼀两⾏字的,普通的INDEX 也可以。

总结,索引的类别由建⽴索引的字段内容特性来决定,通常normal最常见。

问题2:在实际操作过程中,应该选取表中哪些字段作为索引?为了使索引的使⽤效率更⾼,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引,有7⼤原则:1.选择唯⼀性索引2.为经常需要排序、分组和联合操作的字段建⽴索引3.为常作为查询条件的字段建⽴索引4.限制索引的数⽬5.尽量使⽤数据量少的索引6.尽量使⽤前缀来索引7.删除不再使⽤或者很少使⽤的索引⼀、 MySQL: 索引以B树格式保存 Memory存储引擎可以选择Hash或BTree索引,Hash索引只能⽤于=或<=>的等式⽐较。

1、普通索引:create index on Tablename(列的列表) alter table TableName add index (列的列表) create table TableName([...], index [IndexName] (列的列表) 2、唯⼀性索引:create unique index alter ... add unique 主键:⼀种唯⼀性索引,必须指定为primary key 3、全⽂索引:从3.23.23版开始⽀持全⽂索引和全⽂检索,FULLTEXT, 可以在char、varchar或text类型的列上创建。

4、单列索引、多列索引: 多个单列索引与单个多列索引的查询效果不同,因为: 执⾏查询时,MySQL只能使⽤⼀个索引,会从多个索引中选择⼀个限制最为严格的索引。

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的另⼀种⽅式是将列值转换为固定长度的对象。

数据库技术中的数据字段类型选择(六)

数据库技术中的数据字段类型选择在数据库设计和开发中,选择正确的数据字段类型是至关重要的。

数据字段类型不仅直接影响数据的存储方式和效率,还关系到数据的准确性和一致性。

在本文中,我们将探讨数据库技术中的数据字段类型选择,并给出一些建议。

一、字符型字段类型选择字符型字段类型是数据库中最常见的字段类型之一。

在选择字符型字段类型时,需要考虑存储的最大长度和字符集。

一般常见的字符型字段类型有CHAR、VARCHAR和TEXT等。

1. CHAR类型:CHAR类型是一种固定长度的字符类型,长度上限一般为255个字符。

由于其固定长度的特性,使用CHAR类型可以提高查询效率。

但是,在存储数据时,如果字符长度小于字段定义的长度,系统会自动填充空格,因此这会带来一些空间浪费。

2. VARCHAR类型:VARCHAR类型是一种可变长度的字符类型,长度上限一般为65535个字符。

与CHAR类型相比,VARCHAR类型可以更节省空间,因为它只存储实际需要的字符。

但是,VARCHAR类型在查询时会降低一些效率。

3. TEXT类型:TEXT类型是一种可变长度的大文本类型,它的长度上限一般为65535个字符。

与VARCHAR类型相比,TEXT类型可以存储更大的文本数据。

然而,由于其大文本的特点,查询效率相对较低。

在选择字符型字段类型时,需要根据具体应用场景来选择。

如果字段的长度是固定的,建议使用CHAR类型;如果字段的长度不确定,但是数据量不大,建议使用VARCHAR类型;如果字段的长度不确定,并且数据量较大,建议使用TEXT类型。

二、数值型字段类型选择数值型字段类型用于存储各种数值类型的数据,如整数、小数等。

在选择数值型字段类型时,需要考虑数据的精度和范围。

常见的数值型字段类型有INT、FLOAT和DECIMAL等。

1. INT类型:INT类型是一种整数类型,它可以存储不超过的整数。

在存储整数时,INT类型占用的存储空间较小,查询效率较高。

四、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。

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