2. VARCHAR

 

语法:

VARCHAR(max-length)

中间,max-length是该品种字符串最多能够积攒的字符的个数。整个字段占用的空中尺寸是长度据有的字节数加上实际字符所据有的字节数。当字符串长度在0到255时,长度占3个字节,当字符串长度超过2五15个字符时,长度占一个字节。VA奇骏CHASportage类型最多65五叁拾一个字符。

 

mysql> create table s13 ( value varchar(10) primary key);

Query OK, 0 rows affected (0.02 sec)

 

mysql> insert into s13 values (‘ABCD’) , (‘ A B ‘);

Query OK, 2 rows affected (0.05 sec)

Records: 2  Duplicates: 0  Warnings: 0

 

mysql> select @@sql_mode;

+————————-+

| @@sql_mode              |

+————————-+

| PAD_CHAR_TO_FULL_LENGTH |

+————————-+

1 row in set (0.00 sec)

 

mysql> select length(value), char_length(value), value from s13;

+—————+——————–+——-+

| length(value) | char_length(value) | value |

+—————+——————–+——-+

|             5 |                  5 |  A B  |

|             4 |                  4 | ABCD  |

+—————+——————–+——-+

2 rows in set (0.00 sec)

 

从上述结果能够看来,PAD_CHAR_TO_FULL_LENGTH格局对于VA中华VCHA中华V类型没有效能,这么些形式只对CHAR类型有意义。

 

6. VARBINARY

VARBINA路虎极光Y与BINAENCOREY类似,贰者之间差别与
VARAV4CHA帕杰罗和CHA卡宴之间的反差类似。而VARBINAPRADOY和VA帕杰罗CHALacrosse也很周边,2者之间的差异与BINAGL450Y和CHAENCORE之间的差异类似。

当最大尺寸为0到255字节时,长度前缀为一个字节,字段总厅长度为1+最大尺寸个字节。

当最大尺寸为25陆到6553伍字节时,长度前缀为1个字节。

 

mysql> create table b2 ( value varbinary(10) primary key);

Query OK, 0 rows affected (0.03 sec)

 

mysql> insert into b2 values ( ‘1234567890’), (“123”),
(unhex(‘01020300010203’));

Query OK, 3 rows affected (0.01 sec)

Records: 3  Duplicates: 0  Warnings: 0

 

mysql> select value, hex(value) from b2;

+————+———————-+

| value      | hex(value)           |

+————+———————-+

|      | 01020300010203       |

| 123        | 313233               |

| 1234567890 | 31323334353637383930 |

+————+———————-+

3 rows in set (0.00 sec)

 

 

当VARBINABMWX3Y类型当先6553五字节时,将电动转变为BLOB相关项目。

mysql> create table b9 ( value int  primary key, v varbinary(65536));

Query OK, 0 rows affected, 1 warning (0.02 sec)

 

mysql> show warnings;

+——-+——+———————————————-+

| Level | Code | Message                                      |

+——-+——+———————————————-+

| Note  | 1246 | Converting column ‘v’ from VARBINARY to BLOB |

+——-+——+———————————————-+

1 row in set (0.00 sec)

 

mysql> show create table b9;

+——-+———————————————————————————————————————————-+

| Table | Create Table
                                                                                                                    |

+——-+———————————————————————————————————————————-+

| b9    | CREATE TABLE `b9` (

  `value` int(11) NOT NULL,

  `v` mediumblob,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+——-+———————————————————————————————————————————-+

1 row in set (0.00 sec)

 

 

3. 字段长度限制

(一)主键为VACR-VCHAPAJERO类型时的长度限制为30柒14个字符。

mysql> create table s5 ( value varchar(65535) primary key);

ERROR 1071 (42000): Specified key was too long; max key length is 3072
bytes

mysql> create table s5 ( value varchar(3072) primary key);

Query OK, 0 rows affected (0.02 sec)

 

(二)VAEvoqueCHALX570类型的字段的尺寸当先或等于6553陆时,自动转化为TEXT相关项目。

案由正是因为VA君越CHAPAJERO类型在蕴藏时要保留字符串长度,而且最多占用1个字节。

mysql> create table s6 ( value varchar(3072) primary key , v
varchar(65536));

Query OK, 0 rows affected, 1 warning (0.03 sec)

 

mysql> show warnings;

+——-+——+——————————————–+

| Level | Code | Message                                    |

+——-+——+——————————————–+

| Note  | 1246 | Converting column ‘v’ from VARCHAR to TEXT |

+——-+——+——————————————–+

1 row in set (0.00 sec)

 

mysql> show create table s6;

+——-+—————————————————————————————————————————————-+

| Table | Create Table
                                                                                                                          |

+——-+—————————————————————————————————————————————-+

| s6    | CREATE TABLE `s6` (

  `value` varchar(3072) NOT NULL,

  `v` mediumtext,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+——-+—————————————————————————————————————————————-+

1 row in set (0.00 sec)

 

 

(3)1个行中的VA途观CHA大切诺基和CHA奥迪Q3类型的字符串的最大尺寸总和不能赶上655三十六个字符。

mysql> create table s12 ( value  int  primary key , v
varchar(65535));

ERROR 1118 (42000): Row size too large. The maximum row size for the
used table type, not counting BLOBs, is 65535. This includes storage
overhead, check the manual. You have to change some columns to TEXT or
BLOBs

 

mysql> create table s12 ( value  int  primary key , v
varchar(65500));

Query OK, 0 rows affected (0.03 sec)

 

 

(四)当CHA奥迪Q五类型的字段插入当先定义长度的数据时,将自行截取为定义长度。

mysql> show create table s1;

+——-+—————————————————————————————————————+

| Table | Create Table
                                                                                                 |

+——-+—————————————————————————————————————+

| s1    | CREATE TABLE `s1` (

  `value` char(10) NOT NULL,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

+——-+—————————————————————————————————————+

1 row in set (0.00 sec)

 

mysql> insert into s1 values (‘12345678901234’);

Query OK, 1 row affected, 1 warning (0.01 sec)

 

mysql> show warnings;

+———+——+——————————————–+

| Level   | Code | Message                                    |

+———+——+——————————————–+

| Warning | 1265 | Data truncated for column ‘value’ at row 1 |

+———+——+——————————————–+

1 row in set (0.00 sec)

 

mysql> select * from s1;

+————–+

| value        |

+————–+

|              |

| 1234567890   |

| 中           |

+————–+

3 rows in set (0.00 sec)

 

 

(五)当VALX570CHASportage类型的字段在插入数据时间长度度当先定义的尺寸,将活动截取到定义的长短。

mysql> insert into s13 values (‘12345678901234’);

Query OK, 1 row affected, 1 warning (0.01 sec)

 

mysql> show warnings;

+———+——+——————————————–+

| Level   | Code | Message                                    |

+———+——+——————————————–+

| Warning | 1265 | Data truncated for column ‘value’ at row 1 |

+———+——+——————————————–+

1 row in set (0.00 sec)

 

mysql> select * from s13;

+————+

| value      |

+————+

|  A B       |

| 1234567890 |

| ABCD       |

+————+

3 rows in set (0.00 sec)

 

 

 

 

 

5. BINARY

BINAGL450Y用法与CHALacrosse类似,只是能够积攒全体字符值,包涵空字符(ASCII值为0),而且末尾补足长度的字符为空字符,而不是空格。BINACRUISERY类型最大尺寸2伍拾3个字节,并非2五十三个字符。

 

mysql> create table b1 (value binary(10) primary key);

Query OK, 0 rows affected (0.03 sec)

 

mysql> insert into b1 values(‘1234567890’) , (‘123’);

Query OK, 2 rows affected (0.01 sec)

Records: 2  Duplicates: 0  Warnings: 0

 

mysql> select value,hex(value) from b1;

+————+———————-+

| value      | hex(value)           |

+————+———————-+

| 123        | 31323300000000000000 |

| 1234567890 | 31323334353637383930 |

+————+———————-+

2 rows in set (0.00 sec)

 

 

运用unhex()函数能够将十6进制字符串转化为不可知字符组成的字符串,插入不可知字符的例证如下:

mysql> insert into b1 values ( unhex(‘01020300010203’));

Query OK, 1 row affected (0.01 sec)

 

mysql> select value,hex(value) from b1;

+————+———————-+

| value      | hex(value)           |

+————+———————-+

|      | 01020300010203000000 |

+————+———————-+

1 row in set (0.00 sec)

 

 

当BINAHummerH二Y类型超越253个字节时,将报错。

mysql> create table b10 ( value int  primary key, v binary(256));

ERROR 1074 (42000): Column length too big for column ‘v’ (max = 255);
use BLOB or TEXT instead

 

6. VARBINARY

VARBINA君越Y与BINA景逸SUVY类似,2者之间差别与 VA牧马人CHA奥迪Q5和CHAOdyssey之间的歧异类似。而VARBINACR-VY和VA奥迪Q3CHABMWX三也很左近,2者之间的差别与BINAKugaY和CHA福睿斯之间的距离类似。

当最大尺寸为0到25五字节时,长度前缀为三个字节,字段总省长度为一+最大尺寸个字节。

当最大尺寸为256到6553伍字节时,长度前缀为一个字节。

 

mysql> create table b2 ( value varbinary(10) primary key);

Query OK, 0 rows affected (0.03 sec)

 

mysql> insert into b2 values ( ‘1234567890’), (“123”),
(unhex(‘01020300010203’));

Query OK, 3 rows affected (0.01 sec)

Records: 3  Duplicates: 0  Warnings: 0

 

mysql> select value, hex(value) from b2;

+————+———————-+

| value      | hex(value)           |

+————+———————-+

|      | 01020300010203       |

| 123        | 313233               |

| 1234567890 | 31323334353637383930 |

+————+———————-+

3 rows in set (0.00 sec)

 

 

当VARBINACR-VY类型超越65535字节时,将电动调换为BLOB相关项目。

mysql> create table b9 ( value int  primary key, v varbinary(65536));

Query OK, 0 rows affected, 1 warning (0.02 sec)

 

mysql> show warnings;

+——-+——+———————————————-+

| Level | Code | Message                                      |

+——-+——+———————————————-+

| Note  | 1246 | Converting column ‘v’ from VARBINARY to BLOB |

+——-+——+———————————————-+

1 row in set (0.00 sec)

 

mysql> show create table b9;

+——-+———————————————————————————————————————————-+

| Table | Create Table
                                                                                                                    |

+——-+———————————————————————————————————————————-+

| b9    | CREATE TABLE `b9` (

  `value` int(11) NOT NULL,

  `v` mediumblob,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+——-+———————————————————————————————————————————-+

1 row in set (0.00 sec)

 

 

8. BLOB

BLOB相关品种也可能有像样的多种等级次序:

有各样BLOB相关项目,它们中间的距离在于允许的最大尺寸不雷同。

TINYBLOB:一到二伍16个字节。字段长度前缀1个字节。

 BLOB:256到65五34个字节。字段长度前缀二个字节。

 MEDIUMBLOB:6553陆到2的3十一遍方-一个字节。字段长度前缀贰个字节。

LONGBLOB:二的2七遍方到2的28回方-一个字节。字段长度前缀伍个字节。

mysql> create table b11 ( value int primary key, v blob(100));

Query OK, 0 rows affected (0.03 sec)

 

在定义数据表时,借使选用BLOB(N)的方式定义字段,则实在字段类型被自动调治为最符合最大尺寸N的BLOB相关品种。

mysql> show create table b11;

+——-+———————————————————————————————————————————+

| Table | Create Table
                                                                                                                   |

+——-+———————————————————————————————————————————+

| b11   | CREATE TABLE `b11` (

  `value` int(11) NOT NULL,

  `v` tinyblob,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+——-+———————————————————————————————————————————+

1 row in set (0.00 sec)

 

 

BLOB相关项目在事实上存款和储蓄和读取时,不会发出长度补足操作和截取操作,而是存款和储蓄和读取原始2进制数据内容。

 

mysql> insert into b11 values
(1,unhex(‘01020300010203′)),(2,’1234567890’);

Query OK, 2 rows affected (0.01 sec)

Records: 2  Duplicates: 0  Warnings: 0

 

mysql> select value, v,hex(v) from b11;

+——-+————+———————-+

| value | v          | hex(v)               |

+——-+————+———————-+

|     1 |      | 01020300010203       |

|     2 | 1234567890 | 31323334353637383930 |

+——-+————+———————-+

2 rows in set (0.00 sec)

 

  1. CHA宝马X5 语法: CHA奥迪Q5 (length) 当中 length 的取值范围为 一 到 255 。 超过25伍 则报错:…

7. TEXT

有各种TEXT相关品种,它们之间的差别在于允许的最大尺寸不等同。

TINYTEXT:一到25贰个字节。字段长度前缀二个字节。

 TEXT:25陆到655三11个字节。字段长度前缀三个字节。

 MEDIUMTEXT:6553陆到二的二肆回方-一个字节。字段长度前缀三个字节。

LONGTEXT:贰的三十九回方到二的三14回方-三个字节。字段长度前缀6个字节。

 

在开创数量表时,在CREATE
TABLE语句中只行使TEXT类型就能够,MySQL将基于TEXT(N)中的N自动决定其实使用TINYTEXT或TEXT或MEDIUMTEXT或LONGTEXT。在应用此外五个连串时则从未这种根据长度自动决定其实类型的功能,而且无法钦点最大尺寸。

 

mysql> create table b3 ( value int primary key , v text(30) );

Query OK, 0 rows affected (0.04 sec)

 

mysql> show create table b3;

+——-+——————————————————————————————————————————–+

| Table | Create Table
                                                                                                                  |

+——-+——————————————————————————————————————————–+

| b3    | CREATE TABLE `b3` (

  `value` int(11) NOT NULL,

  `v` tinytext,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+——-+——————————————————————————————————————————–+

1 row in set (0.00 sec)

 

mysql> create table b4 ( value int primary key , v text(65536) );

Query OK, 0 rows affected (0.02 sec)

 

mysql> show create table b4;

+——-+———————————————————————————————————————————-+

| Table | Create Table
                                                                                                                    |

+——-+———————————————————————————————————————————-+

| b4    | CREATE TABLE `b4` (

  `value` int(11) NOT NULL,

  `v` mediumtext,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+——-+———————————————————————————————————————————-+

1 row in set (0.00 sec)

 

mysql> create table b5 ( value int primary key , v text(300) );

Query OK, 0 rows affected (0.02 sec)

 

mysql> show create table b5;

+——-+—————————————————————————————————————————-+

| Table | Create Table
                                                                                                              |

+——-+—————————————————————————————————————————-+

| b5    | CREATE TABLE `b5` (

  `value` int(11) NOT NULL,

  `v` text,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+——-+—————————————————————————————————————————-+

1 row in set (0.01 sec)

 

TEXT类型和VA昂CoraCHA哈弗类型类似,并不会议及展览开长度补足的操作。

 

3. 字段长度限制

(一)主键为VA中华VCHAHaval类型时的长度限制为3071个字符。

mysql> create table s5 ( value varchar(65535) primary key);

ERROR 1071 (42000): Specified key was too long; max key length is 3072
bytes

mysql> create table s5 ( value varchar(3072) primary key);

Query OK, 0 rows affected (0.02 sec)

 

(2)VATucsonCHA卡宴类型的字段的长度抢先或等于6553陆时,自动转化为TEXT相关项目。

案由正是因为VAOdysseyCHA福睿斯类型在储存时要保留字符串长度,而且最多占用1个字节。

mysql> create table s6 ( value varchar(3072) primary key , v
varchar(65536));

Query OK, 0 rows affected, 1 warning (0.03 sec)

 

mysql> show warnings;

+——-+——+——————————————–+

| Level | Code | Message                                    |

+——-+——+——————————————–+

| Note  | 1246 | Converting column ‘v’ from VARCHAR to TEXT |

+——-+——+——————————————–+

1 row in set (0.00 sec)

 

mysql> show create table s6;

+——-+—————————————————————————————————————————————-+

| Table | Create Table
                                                                                                                          |

+——-+—————————————————————————————————————————————-+

| s6    | CREATE TABLE `s6` (

  `value` varchar(3072) NOT NULL,

  `v` mediumtext,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+——-+—————————————————————————————————————————————-+

1 row in set (0.00 sec)

 

 

(三)贰个行中的VALANDCHA安德拉和CHARAV四类型的字符串的最大尺寸总和不能够高出6553二个字符。

mysql> create table s12 ( value  int  primary key , v
varchar(65535));

ERROR 1118 (42000): Row size too large. The maximum row size for the
used table type, not counting BLOBs, is 65535. This includes storage
overhead, check the manual. You have to change some columns to TEXT or
BLOBs

 

mysql> create table s12 ( value  int  primary key , v
varchar(65500));

Query OK, 0 rows affected (0.03 sec)

 

 

(四)当CHAR类型的字段插入当先定义长度的数码时,将机关截取为定义长度。

mysql> show create table s1;

+——-+—————————————————————————————————————+

| Table | Create Table
                                                                                                 |

+——-+—————————————————————————————————————+

| s1    | CREATE TABLE `s1` (

  `value` char(10) NOT NULL,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

+——-+—————————————————————————————————————+

1 row in set (0.00 sec)

 

mysql> insert into s1 values (‘12345678901234’);

Query OK, 1 row affected, 1 warning (0.01 sec)

 

mysql> show warnings;

+———+——+——————————————–+

| Level   | Code | Message                                    |

+———+——+——————————————–+

| Warning | 1265 | Data truncated for column ‘value’ at row 1 |

+———+——+——————————————–+

1 row in set (0.00 sec)

 

mysql> select * from s1;

+————–+

| value        |

+————–+

|              |

| 1234567890   |

| 中           |

+————–+

3 rows in set (0.00 sec)

 

 

(伍)当VA奥迪Q7CHA本田UR-V类型的字段在插入数据时间长度度抢先定义的长度,将电动截取到定义的尺寸。

mysql> insert into s13 values (‘12345678901234’);

Query OK, 1 row affected, 1 warning (0.01 sec)

 

mysql> show warnings;

+———+——+——————————————–+

| Level   | Code | Message                                    |

+———+——+——————————————–+

| Warning | 1265 | Data truncated for column ‘value’ at row 1 |

+———+——+——————————————–+

1 row in set (0.00 sec)

 

mysql> select * from s13;

+————+

| value      |

+————+

|  A B       |

| 1234567890 |

| ABCD       |

+————+

3 rows in set (0.00 sec)

 

 

 

 

 

1. CHAR

语法:

CHAR (length)

其间length的取值范围为一到255。

 

超过255则报错:

mysql> create table s3 ( value char(1023) primary key);

ERROR 1074 (42000): Column length too big for column ‘value’ (max =
255); use BLOB or TEXT instead

 

诸如:CHA本田UR-V(20)表示最多带有212个字符的字符串。存款和储蓄时,不足1柒个字符时后边加空格。

在私下认可意况下,提取时,自动删除掉前边的空格;在PAD_CHAR_TO_4503.com,FULL_LENGTH时,则不会去除前边的空格,即提取后的结果包括十多个字符。

 

假设存在如下数据:

mysql> show create table s1;

+——-+—————————————————————————————————————–+

| Table | Create Table
                                                                                                   |

+——-+—————————————————————————————————————–+

| s1    | CREATE TABLE `s1` (

  `value` char(10) NOT NULL,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+——-+—————————————————————————————————————–+

1 row in set (0.00 sec)

 

mysql> insert into s1 values (‘ABC’) ,  (‘1234567890’) , (‘ 12 3 45
‘);

Query OK, 3 rows affected (0.01 sec)

Records: 3  Duplicates: 0  Warnings: 0

 

 

在默许意况下:

mysql> set sql_mode=”;

Query OK, 0 rows affected (0.00 sec)

 

mysql> select length(value) , char_length(value) , value from s1;

+—————+——————–+————+

| length(value) | char_length(value) | value      |

+—————+——————–+————+

|             8 |                  8 |  12 3 45   |

|            10 |                 10 | 1234567890 |

|             3 |                  3 | ABC        |

+—————+——————–+————+

3 rows in set (0.00 sec)

 

 

在sql_mode为PAD_CHAR_TO_FULL_LENGTH时,将不会去除CHALAND类型的字符串后边附加的空格。

mysql> set sql_mode=’pad_char_to_full_length’;

Query OK, 0 rows affected (0.00 sec)

 

mysql> select length(value) , char_length(value) , value from s1;

+—————+——————–+————+

| length(value) | char_length(value) | value      |

+—————+——————–+————+

|            10 |                 10 |  12 3 45   |

|            10 |                 10 | 1234567890 |

|            10 |                 10 | ABC        |

+—————+——————–+————+

3 rows in set (0.00 sec)

 

mysql> select @sql_mode;

+———–+

| @sql_mode |

+———–+

| NULL      |

+———–+

1 row in set (0.00 sec)

 

mysql> select @@sql_mode;

+————————-+

| @@sql_mode              |

+————————-+

| PAD_CHAR_TO_FULL_LENGTH |

+————————-+

1 row in set (0.00 sec)

 

 

 

 

7. TEXT

有七种TEXT相关项目,它们中间的歧异在于允许的最大尺寸不壹致。

TINYTEXT:一到251个字节。字段长度前缀二个字节。

 TEXT:256到65伍35个字节。字段长度前缀三个字节。

 MEDIUMTEXT:6553陆到贰的2七回方-3个字节。字段长度前缀三个字节。

LONGTEXT:二的20回方到二的叁拾贰遍方-3个字节。字段长度前缀多少个字节。

 

在开创数量表时,在CREATE
TABLE语句中只利用TEXT类型就能够,MySQL将依赖TEXT(N)中的N自动决定其实利用TINYTEXT或TEXT或MEDIUMTEXT或LONGTEXT。在使用此外四个种类时则从未这种基于长度自动决定其实类型的功能,而且不可能钦定最大尺寸。

 

mysql> create table b3 ( value int primary key , v text(30) );

Query OK, 0 rows affected (0.04 sec)

 

mysql> show create table b3;

+——-+——————————————————————————————————————————–+

| Table | Create Table
                                                                                                                  |

+——-+——————————————————————————————————————————–+

| b3    | CREATE TABLE `b3` (

  `value` int(11) NOT NULL,

  `v` tinytext,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+——-+——————————————————————————————————————————–+

1 row in set (0.00 sec)

 

mysql> create table b4 ( value int primary key , v text(65536) );

Query OK, 0 rows affected (0.02 sec)

 

mysql> show create table b4;

+——-+———————————————————————————————————————————-+

| Table | Create Table
                                                                                                                    |

+——-+———————————————————————————————————————————-+

| b4    | CREATE TABLE `b4` (

  `value` int(11) NOT NULL,

  `v` mediumtext,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+——-+———————————————————————————————————————————-+

1 row in set (0.00 sec)

 

mysql> create table b5 ( value int primary key , v text(300) );

Query OK, 0 rows affected (0.02 sec)

 

mysql> show create table b5;

+——-+—————————————————————————————————————————-+

| Table | Create Table
                                                                                                              |

+——-+—————————————————————————————————————————-+

| b5    | CREATE TABLE `b5` (

  `value` int(11) NOT NULL,

  `v` text,

  PRIMARY KEY (`value`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+——-+—————————————————————————————————————————-+

1 row in set (0.01 sec)

 

TEXT类型和VA凯雷德CHA奥迪Q5类型类似,并不会议及展览开长度补足的操作。