数据库 -- mysql支持的数据类型
mysql支持的数据类型数值类型MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。 关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。 MySQL支持的整数类型有TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。 对于小数的表示,MYSQL分为两种方式:浮点数和定点数。浮点数包括float(单精度)和double(双精度),而定点数只有decimal一种,在mysql中以字符串的形式存放,比浮点数更精确,适合用来表示货币等精度高的数据。 BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。 <table class="reference"> |
mysql
<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t1 <span style="color: #0000ff;">values (<span style="color: #800000; font-weight: bold;">1,<span style="color: #800000; font-weight: bold;">1<span style="color: #000000;">);Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.01<span style="color: #000000;"> sec)
可以看出结果上并没有异常
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t1;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+
<span style="color: #808080;">| id1 <span style="color: #808080;">| id2 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
那么当我们插入了比宽度更大的值,会不会发生报错呢?
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t1 <span style="color: #0000ff;">values (<span style="color: #800000; font-weight: bold;">222221,<span style="color: #800000; font-weight: bold;">222221<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
答案是否定的,id2仍然显示了正确的数值,没有受到宽度限制的影响
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t1;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----------+--------+
<span style="color: #808080;">| id1 <span style="color: #808080;">| id2 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----------+--------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">0000000001 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">00001 <span style="color: #808080;">|
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">0000222221 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">222221 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----------+--------+
<span style="color: #800000; font-weight: bold;">2 rows <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
修改id1字段 给字段添加一个unsigned表示无符号
mysql<span style="color: #808080;">> <span style="color: #0000ff;">alter <span style="color: #0000ff;">table t1 modify id1 <span style="color: #0000ff;">int<span style="color: #000000;"> unsigned;
Query OK,<span style="color: #800000; font-weight: bold;">0 rows affected (<span style="color: #800000; font-weight: bold;">0.01<span style="color: #000000;"> sec)
Records: <span style="color: #800000; font-weight: bold;">0 Duplicates: <span style="color: #800000; font-weight: bold;">0 Warnings: <span style="color: #800000; font-weight: bold;">0<span style="color: #000000;">
mysql<span style="color: #808080;">> <span style="color: #0000ff;">desc<span style="color: #000000;"> t1;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+------------------+------+-----+---------+-------+
<span style="color: #808080;">| Field <span style="color: #808080;">| Type <span style="color: #808080;">| <span style="color: #0000ff;">Null <span style="color: #808080;">| <span style="color: #0000ff;">Key <span style="color: #808080;">| <span style="color: #0000ff;">Default <span style="color: #808080;">| Extra <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+------------------+------+-----+---------+-------+
<span style="color: #808080;">| id1 <span style="color: #808080;">| <span style="color: #0000ff;">int(<span style="color: #800000; font-weight: bold;">10) unsigned <span style="color: #808080;">| YES <span style="color: #808080;">| <span style="color: #808080;">| <span style="color: #0000ff;">NULL <span style="color: #808080;">| <span style="color: #808080;">|
<span style="color: #808080;">| id2 <span style="color: #808080;">| <span style="color: #0000ff;">int(<span style="color: #800000; font-weight: bold;">5) <span style="color: #808080;">| YES <span style="color: #808080;">| <span style="color: #808080;">| <span style="color: #0000ff;">NULL <span style="color: #808080;">| <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+------------------+------+-----+---------+-------+
<span style="color: #800000; font-weight: bold;">2 rows <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.01<span style="color: #000000;"> sec)
当给id1添加的数据大于214748364时,可以顺利插入
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t1 <span style="color: #0000ff;">values (<span style="color: #800000; font-weight: bold;">2147483648,<span style="color: #800000; font-weight: bold;">2147483647<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
当给id2添加的数据大于214748364时,会报错
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t1 <span style="color: #0000ff;">values (<span style="color: #800000; font-weight: bold;">2147483647,<span style="color: #800000; font-weight: bold;">2147483648<span style="color: #000000;">);
ERROR <span style="color: #800000; font-weight: bold;">1264 (<span style="color: #800000; font-weight: bold;">22003): Out <span style="color: #0000ff;">of range value <span style="color: #0000ff;">for <span style="color: #0000ff;">column <span style="color: #ff0000;">'<span style="color: #ff0000;">id2<span style="color: #ff0000;">' at row <span style="color: #800000; font-weight: bold;">1
mysql
<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t2 <span style="color: #0000ff;">values (<span style="color: #800000; font-weight: bold;">1.23,<span style="color: #800000; font-weight: bold;">1.23,<span style="color: #800000; font-weight: bold;">1.23<span style="color: #000000;">);Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
mysql
<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t2;<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+------+
<span style="color: #808080;">| id1 <span style="color: #808080;">| id2 <span style="color: #808080;">| id3 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+------+
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
向表中插入1.<span style="color: #800000; font-weight: bold;">234<span style="color: #000000;">,会发现4都被截断了
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t2 <span style="color: #0000ff;">values (<span style="color: #800000; font-weight: bold;">1.234,<span style="color: #800000; font-weight: bold;">1.234,<span style="color: #800000; font-weight: bold;">1.234<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 row affected,<span style="color: #800000; font-weight: bold;">1 warning (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t2;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+------+
<span style="color: #808080;">| id1 <span style="color: #808080;">| id2 <span style="color: #808080;">| id3 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">|
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+------+
<span style="color: #800000; font-weight: bold;">2 rows <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
向表中插入1.235发现数据虽然被截断,但是遵循了四舍五入的规则
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t2 <span style="color: #0000ff;">values (<span style="color: #800000; font-weight: bold;">1.235,<span style="color: #800000; font-weight: bold;">1.235,<span style="color: #800000; font-weight: bold;">1.235<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 warning (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t2;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+------+
<span style="color: #808080;">| id1 <span style="color: #808080;">| id2 <span style="color: #808080;">| id3 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">|
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23 <span style="color: #808080;">|
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.24 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.24 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.24 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+------+
<span style="color: #800000; font-weight: bold;">3 rows <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
建新表去掉参数约束
mysql<span style="color: #808080;">> <span style="color: #0000ff;">create <span style="color: #0000ff;">table t3 (id1 <span style="color: #0000ff;">float,id2 <span style="color: #0000ff;">double,id3 <span style="color: #0000ff;">decimal<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">0 rows affected (<span style="color: #800000; font-weight: bold;">0.02<span style="color: #000000;"> sec)
分别插入1.<span style="color: #800000; font-weight: bold;">234<span style="color: #000000;">
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t3 <span style="color: #0000ff;">values (<span style="color: #800000; font-weight: bold;">1.234,<span style="color: #800000; font-weight: bold;">1 warning (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
发现decimal默认值是(<span style="color: #800000; font-weight: bold;">10,<span style="color: #800000; font-weight: bold;">0<span style="color: #000000;">)的整数
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t3;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+-------+------+
<span style="color: #808080;">| id1 <span style="color: #808080;">| id2 <span style="color: #808080;">| id3 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+-------+------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.234 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.234 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+-------+------+
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
当对小数位没有约束的时候,输入超长的小数,会发现float和double的区别
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t3 <span style="color: #0000ff;">values (<span style="color: #800000; font-weight: bold;">1.2355555555555555555,<span style="color: #800000; font-weight: bold;">1.2355555555555555555,<span style="color: #800000; font-weight: bold;">1.2355555555555555555555<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 warning (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t3;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------+--------------------+------+
<span style="color: #808080;">| id1 <span style="color: #808080;">| id2 <span style="color: #808080;">| id3 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------+--------------------+------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.234 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.234 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1 <span style="color: #808080;">|
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.23556 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1.2355555555555555 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------+--------------------+------+
<span style="color: #800000; font-weight: bold;">2 rows <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00 sec)
日期和时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
TIMESTAMP类型有专有的自动更新特性,将在后面描述。
<table class="reference">
<tr>
<th width="10%">类型
<th width="10%">大小(字节)
<th width="40%">范围
<th width="20%">格式
<td width="10%">TIME</td>
<td width="10%">3</td>
<td>'-838:59:59'/'838:59:59'</td>
<td>HH:MM:SS</td>
<td>时分秒</td>
</tr>
<tr>
<td width="10%">YEAR</td>
<td width="10%">1</td>
<td>1901/2155</td>
<td>YYYY</td>
<td>年份值</td>
</tr>
<tr>
<td width="10%">DATETIME</td>
<td width="10%">8</td>
<td width="40%">1000-01-01 00:00:00/9999-12-31 23:59:59</td>
<td>YYYY-MM-DD HH:MM:SS</td>
<td>年月日时分秒</td>
</tr>
<tr>
<td width="10%">TIMESTAMP</td>
<td width="10%">4</td>
<td width="40%">
1970-01-01 00:00:00/2038
结束时间是第?2147483647?秒,北京时间?2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07
</td>
<td>YYYYMMDD HHMMSS</td>
<td>混合日期和时间值,时间戳</td>
</tr>
t4 (d date,t time,dt rows affected (mysql<span style="color: #808080;">> <span style="color: #0000ff;">desc<span style="color: #000000;"> t4;<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+----------+------+-----+---------+-------+
<span style="color: #808080;">| Field <span style="color: #808080;">| Type <span style="color: #808080;">| <span style="color: #0000ff;">Null <span style="color: #808080;">| <span style="color: #0000ff;">Key <span style="color: #808080;">| <span style="color: #0000ff;">Default <span style="color: #808080;">| Extra <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+----------+------+-----+---------+-------+
<span style="color: #808080;">| d <span style="color: #808080;">| date <span style="color: #808080;">| YES <span style="color: #808080;">| <span style="color: #808080;">| <span style="color: #0000ff;">NULL <span style="color: #808080;">| <span style="color: #808080;">|
<span style="color: #808080;">| t <span style="color: #808080;">| time <span style="color: #808080;">| YES <span style="color: #808080;">| <span style="color: #808080;">| <span style="color: #0000ff;">NULL <span style="color: #808080;">| <span style="color: #808080;">|
<span style="color: #808080;">| dt <span style="color: #808080;">| <span style="color: #0000ff;">datetime <span style="color: #808080;">| YES <span style="color: #808080;">| <span style="color: #808080;">| <span style="color: #0000ff;">NULL <span style="color: #808080;">| <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+----------+------+-----+---------+-------+
<span style="color: #800000; font-weight: bold;">3 rows <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.01<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t4 <span style="color: #0000ff;">values<span style="color: #000000;"> (now(),now(),now());
Query OK,<span style="color: #800000; font-weight: bold;">1 warning (<span style="color: #800000; font-weight: bold;">0.01<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t4;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----------+----------+---------------------+
<span style="color: #808080;">| d <span style="color: #808080;">| t <span style="color: #808080;">| dt <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----------+----------+---------------------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2018<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">09<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">21 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">14:<span style="color: #800000; font-weight: bold;">51:<span style="color: #800000; font-weight: bold;">51 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2018<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">09<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">21 <span style="color: #800000; font-weight: bold;">14:<span style="color: #800000; font-weight: bold;">51:<span style="color: #800000; font-weight: bold;">51 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----------+----------+---------------------+
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t4 <span style="color: #0000ff;">values (<span style="color: #0000ff;">null,<span style="color: #0000ff;">null,<span style="color: #0000ff;">null<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.01<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t4;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----------+----------+---------------------+
<span style="color: #808080;">| d <span style="color: #808080;">| t <span style="color: #808080;">| dt <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----------+----------+---------------------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2018<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">09<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">21 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">14:<span style="color: #800000; font-weight: bold;">51:<span style="color: #800000; font-weight: bold;">51 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2018<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">09<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">21 <span style="color: #800000; font-weight: bold;">14:<span style="color: #800000; font-weight: bold;">51:<span style="color: #800000; font-weight: bold;">51 <span style="color: #808080;">|
<span style="color: #808080;">| <span style="color: #0000ff;">NULL <span style="color: #808080;">| <span style="color: #0000ff;">NULL <span style="color: #808080;">| <span style="color: #0000ff;">NULL <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----------+----------+---------------------+
<span style="color: #800000; font-weight: bold;">2 rows <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00 sec)
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+-----------+------+-----+-------------------+-----------------------------+
<span style="color: #808080;">| Field <span style="color: #808080;">| Type <span style="color: #808080;">| <span style="color: #0000ff;">Null <span style="color: #808080;">| <span style="color: #0000ff;">Key <span style="color: #808080;">| <span style="color: #0000ff;">Default <span style="color: #808080;">| Extra <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+-----------+------+-----+-------------------+-----------------------------+
<span style="color: #808080;">| id1 <span style="color: #808080;">| <span style="color: #0000ff;">timestamp <span style="color: #808080;">| NO <span style="color: #808080;">| <span style="color: #808080;">| <span style="color: #ff00ff;">CURRENT_TIMESTAMP <span style="color: #808080;">| <span style="color: #0000ff;">on <span style="color: #0000ff;">update <span style="color: #ff00ff;">CURRENT_TIMESTAMP <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+-----------+------+-----+-------------------+-----------------------------+
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
插入数据null,会自动插入当前时间的时间
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t5 <span style="color: #0000ff;">values (<span style="color: #0000ff;">null<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t5;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------------+
<span style="color: #808080;">| id1 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2018<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">09<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">21 <span style="color: #800000; font-weight: bold;">14:<span style="color: #800000; font-weight: bold;">56:<span style="color: #800000; font-weight: bold;">50 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------------+
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
添加一列 默认值是<span style="color: #ff0000;">'<span style="color: #ff0000;">0000-00-00 00:00:00<span style="color: #ff0000;">'<span style="color: #000000;">
mysql<span style="color: #808080;">> <span style="color: #0000ff;">alter <span style="color: #0000ff;">table t5 <span style="color: #0000ff;">add id2 <span style="color: #0000ff;">timestamp<span style="color: #000000;">;
Query OK,<span style="color: #800000; font-weight: bold;">0 rows affected (<span style="color: #800000; font-weight: bold;">0.02<span style="color: #000000;"> sec)
Records: <span style="color: #800000; font-weight: bold;">0 Duplicates: <span style="color: #800000; font-weight: bold;">0 Warnings: <span style="color: #800000; font-weight: bold;">0<span style="color: #000000;">
mysql<span style="color: #808080;">> show <span style="color: #0000ff;">create <span style="color: #0000ff;">table<span style="color: #000000;"> t5 G;
<span style="color: #808080;"> <span style="color: #800000; font-weight: bold;">1. row <span style="color: #808080;">
<span style="color: #0000ff;">Table<span style="color: #000000;">: t5
<span style="color: #0000ff;">Create <span style="color: #0000ff;">Table: <span style="color: #0000ff;">CREATE <span style="color: #0000ff;">TABLE<span style="color: #000000;"> t5
(
id1
<span style="color: #0000ff;">timestamp <span style="color: #808080;">NOT <span style="color: #0000ff;">NULL <span style="color: #0000ff;">DEFAULT <span style="color: #ff00ff;">CURRENT_TIMESTAMP <span style="color: #0000ff;">ON <span style="color: #0000ff;">UPDATE <span style="color: #ff00ff;">CURRENT_TIMESTAMP<span style="color: #000000;">,id2
<span style="color: #0000ff;">timestamp <span style="color: #808080;">NOT <span style="color: #0000ff;">NULL <span style="color: #0000ff;">DEFAULT <span style="color: #ff0000;">'<span style="color: #ff0000;">0000-00-00 00:00:00<span style="color: #ff0000;">'<span style="color: #000000;">
) ENGINE<span style="color: #808080;">=InnoDB <span style="color: #0000ff;">DEFAULT CHARSET<span style="color: #808080;">=<span style="color: #000000;">utf8
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
ERROR:
No query specified
手动修改新的列默认值为当前时间
mysql<span style="color: #808080;">> <span style="color: #0000ff;">alter <span style="color: #0000ff;">table t5 modify id2 <span style="color: #0000ff;">timestamp <span style="color: #0000ff;">default <span style="color: #ff00ff;">current_timestamp<span style="color: #000000;">;
Query OK,id2
<span style="color: #0000ff;">timestamp <span style="color: #808080;">NOT <span style="color: #0000ff;">NULL <span style="color: #0000ff;">DEFAULT <span style="color: #ff00ff;">CURRENT_TIMESTAMP<span style="color: #000000;">
) ENGINE<span style="color: #808080;">=InnoDB <span style="color: #0000ff;">DEFAULT CHARSET<span style="color: #808080;">=<span style="color: #000000;">utf8
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
ERROR:
No query specified
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t5 <span style="color: #0000ff;">values (<span style="color: #0000ff;">null,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.01<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t5;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------------+---------------------+
<span style="color: #808080;">| id1 <span style="color: #808080;">| id2 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------------+---------------------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2018<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">09<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">21 <span style="color: #800000; font-weight: bold;">14:<span style="color: #800000; font-weight: bold;">56:<span style="color: #800000; font-weight: bold;">50 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">0000<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">00<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">00 <span style="color: #800000; font-weight: bold;">00:<span style="color: #800000; font-weight: bold;">00:<span style="color: #800000; font-weight: bold;">00 <span style="color: #808080;">|
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2018<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">09<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">21 <span style="color: #800000; font-weight: bold;">14:<span style="color: #800000; font-weight: bold;">59:<span style="color: #800000; font-weight: bold;">31 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2018<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">09<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">21 <span style="color: #800000; font-weight: bold;">14:<span style="color: #800000; font-weight: bold;">59:<span style="color: #800000; font-weight: bold;">31 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------------+---------------------+
<span style="color: #800000; font-weight: bold;">2 rows <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00 sec)
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+-----------+------+-----+-------------------+-----------------------------+
<span style="color: #808080;">| Field <span style="color: #808080;">| Type <span style="color: #808080;">| <span style="color: #0000ff;">Null <span style="color: #808080;">| <span style="color: #0000ff;">Key <span style="color: #808080;">| <span style="color: #0000ff;">Default <span style="color: #808080;">| Extra <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+-----------+------+-----+-------------------+-----------------------------+
<span style="color: #808080;">| t1 <span style="color: #808080;">| <span style="color: #0000ff;">timestamp <span style="color: #808080;">| NO <span style="color: #808080;">| <span style="color: #808080;">| <span style="color: #ff00ff;">CURRENT_TIMESTAMP <span style="color: #808080;">| <span style="color: #0000ff;">on <span style="color: #0000ff;">update <span style="color: #ff00ff;">CURRENT_TIMESTAMP <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-----+-----------+------+-----+-------------------+-----------------------------+
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.01<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t6 <span style="color: #0000ff;">values (<span style="color: #800000; font-weight: bold;">19700101080001<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t6;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------------+
<span style="color: #808080;">| t1 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">1970<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">01<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">01 <span style="color: #800000; font-weight: bold;">08:<span style="color: #800000; font-weight: bold;">00:<span style="color: #800000; font-weight: bold;">01 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------------+
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
timestamp时间的下限是19700101080001
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t6 <span style="color: #0000ff;">values (<span style="color: #800000; font-weight: bold;">19700101080000<span style="color: #000000;">);
ERROR <span style="color: #800000; font-weight: bold;">1292 (<span style="color: #800000; font-weight: bold;">22007): Incorrect <span style="color: #0000ff;">datetime value: <span style="color: #ff0000;">'<span style="color: #ff0000;">19700101080000<span style="color: #ff0000;">' <span style="color: #0000ff;">for <span style="color: #0000ff;">column <span style="color: #ff0000;">'<span style="color: #ff0000;">t1<span style="color: #ff0000;">' at row <span style="color: #800000; font-weight: bold;">1<span style="color: #000000;">
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t6 <span style="color: #0000ff;">values (<span style="color: #ff0000;">'<span style="color: #ff0000;">2038-01-19 11:14:07<span style="color: #ff0000;">'<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
timestamp时间的上限是2038<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">01<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">19 <span style="color: #800000; font-weight: bold;">11:<span style="color: #800000; font-weight: bold;">14:<span style="color: #800000; font-weight: bold;">07<span style="color: #000000;">
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t6 <span style="color: #0000ff;">values (<span style="color: #ff0000;">'<span style="color: #ff0000;">2038-01-19 11:14:08<span style="color: #ff0000;">'<span style="color: #000000;">);
ERROR <span style="color: #800000; font-weight: bold;">1292 (<span style="color: #800000; font-weight: bold;">22007): Incorrect <span style="color: #0000ff;">datetime value: <span style="color: #ff0000;">'<span style="color: #ff0000;">2038-01-19 11:14:08<span style="color: #ff0000;">' <span style="color: #0000ff;">for <span style="color: #0000ff;">column <span style="color: #ff0000;">'<span style="color: #ff0000;">t1<span style="color: #ff0000;">' at row <span style="color: #800000; font-weight: bold;">1<span style="color: #000000;">
mysql<span style="color: #808080;">>
Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t7;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+
<span style="color: #808080;">| y <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2018 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00 sec)
Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.01<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t8 <span style="color: #0000ff;">values (<span style="color: #ff0000;">'<span style="color: #ff0000;">2018/9/26 12+20+10<span style="color: #ff0000;">'<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t8 <span style="color: #0000ff;">values (<span style="color: #ff0000;">'<span style="color: #ff0000;">20180926122010<span style="color: #ff0000;">'<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t8 <span style="color: #0000ff;">values (<span style="color: #800000; font-weight: bold;">20180926122010<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t8;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------------+
<span style="color: #808080;">| dt <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2018<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">09<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">26 <span style="color: #800000; font-weight: bold;">12:<span style="color: #800000; font-weight: bold;">20:<span style="color: #800000; font-weight: bold;">10 <span style="color: #808080;">|
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2018<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">09<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">26 <span style="color: #800000; font-weight: bold;">12:<span style="color: #800000; font-weight: bold;">20:<span style="color: #800000; font-weight: bold;">10 <span style="color: #808080;">|
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2018<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">09<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">26 <span style="color: #800000; font-weight: bold;">12:<span style="color: #800000; font-weight: bold;">20:<span style="color: #800000; font-weight: bold;">10 <span style="color: #808080;">|
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2018<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">09<span style="color: #808080;">-<span style="color: #800000; font-weight: bold;">26 <span style="color: #800000; font-weight: bold;">12:<span style="color: #800000; font-weight: bold;">20:<span style="color: #800000; font-weight: bold;">10 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------------+
<span style="color: #800000; font-weight: bold;">4 rows <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00 sec)
字符串类型
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
CHAR列的长度固定为创建表是声明的长度,范围(0-255);而VARCHAR的值是可变长字符串范围(0-65535)。
mysql t9 (v (),c ( rows affected (mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t9 <span style="color: #0000ff;">values (<span style="color: #ff0000;">'<span style="color: #ff0000;">ab <span style="color: #ff0000;">',<span style="color: #ff0000;">'<span style="color: #ff0000;">ab <span style="color: #ff0000;">'<span style="color: #000000;">);Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
在检索的时候char数据类型会去掉空格
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t9;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+
<span style="color: #808080;">| v <span style="color: #808080;">| c <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+
<span style="color: #808080;">| ab <span style="color: #808080;">| ab <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
来看看对查询结果计算的长度
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select length(v),length(c) <span style="color: #0000ff;">from<span style="color: #000000;"> t9;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">---------+-----------+
<span style="color: #808080;">| length(v) <span style="color: #808080;">| length(c) <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">---------+-----------+
<span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">4 <span style="color: #808080;">| <span style="color: #800000; font-weight: bold;">2 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">---------+-----------+
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
给结果拼上一个加号会更清楚
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select concat(v,<span style="color: #ff0000;">'<span style="color: #ff0000;">+<span style="color: #ff0000;">'),concat(c,<span style="color: #ff0000;">'<span style="color: #ff0000;">+<span style="color: #ff0000;">') <span style="color: #0000ff;">from<span style="color: #000000;"> t9;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------+---------------+
<span style="color: #808080;">| concat(v,<span style="color: #ff0000;">'<span style="color: #ff0000;">+<span style="color: #ff0000;">') <span style="color: #808080;">| concat(c,<span style="color: #ff0000;">'<span style="color: #ff0000;">+<span style="color: #ff0000;">') <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------+---------------+
<span style="color: #808080;">| ab <span style="color: #808080;">+ <span style="color: #808080;">| ab<span style="color: #808080;">+ <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">-------------+---------------+
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
当存储的长度超出定义的长度,会截断
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t9 <span style="color: #0000ff;">values (<span style="color: #ff0000;">'<span style="color: #ff0000;">abcd <span style="color: #ff0000;">',<span style="color: #ff0000;">'<span style="color: #ff0000;">abcd <span style="color: #ff0000;">'<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 warning (<span style="color: #800000; font-weight: bold;">0.01<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t9;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+
<span style="color: #808080;">| v <span style="color: #808080;">| c <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+
<span style="color: #808080;">| ab <span style="color: #808080;">| ab <span style="color: #808080;">|
<span style="color: #808080;">| abcd <span style="color: #808080;">| abcd <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+------+
<span style="color: #800000; font-weight: bold;">2 rows <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00 sec)
BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。
有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。
ENUM和SET类型
ENUM中文名称叫枚举类型,它的值范围需要在创建表时通过枚举方式显示。ENUM只允许从值集合中选取单个值,而不能一次取多个值。
SET和ENUM非常相似,也是一个字符串对象,里面可以包含0-64个成员。根据成员的不同,存储上也有所不同。set类型可以允许值集合中任意选择1或多个元素进行组合。对超出范围的内容将不允许注入,而对重复的值将进行自动去重。
<table border="0">
<tr>
<td>类型</td>
<td>大小</td>
<td>用途</td>
</tr>
<tr>
<td>ENUM</td>
<td>
对1-255个成员的枚举需要1个字节存储;
对于255-65535个成员,需要2个字节存储;
最多允许65535个成员。
9-16个成员的集合,占2个字节17-24个成员的集合,占3个字节
25-32个成员的集合,占4个字节
33-64个成员的集合,占8个字节
t10 (name (),gender enum(, rows affected (选择enum(<span style="color: #ff0000;">'<span style="color: #ff0000;">female<span style="color: #ff0000;">',<span style="color: #ff0000;">'<span style="color: #ff0000;">male<span style="color: #ff0000;">'<span style="color: #000000;">)中的一项作为gender的值,可以正常插入mysql
<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t10 <span style="color: #0000ff;">values (<span style="color: #ff0000;">'<span style="color: #ff0000;">nezha<span style="color: #ff0000;">',<span style="color: #ff0000;">'<span style="color: #ff0000;">male<span style="color: #ff0000;">'<span style="color: #000000;">);Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
不能同时插入<span style="color: #ff0000;">'<span style="color: #ff0000;">male,female<span style="color: #ff0000;">'两个值,也不能插入不属于<span style="color: #ff0000;">'<span style="color: #ff0000;">male,female<span style="color: #ff0000;">'<span style="color: #000000;">的值
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t10 <span style="color: #0000ff;">values (<span style="color: #ff0000;">'<span style="color: #ff0000;">nezha<span style="color: #ff0000;">',<span style="color: #ff0000;">'<span style="color: #ff0000;">male,female<span style="color: #ff0000;">'<span style="color: #000000;">);
ERROR <span style="color: #800000; font-weight: bold;">1265 (<span style="color: #800000; font-weight: bold;">01000): Data truncated <span style="color: #0000ff;">for <span style="color: #0000ff;">column <span style="color: #ff0000;">'<span style="color: #ff0000;">gender<span style="color: #ff0000;">' at row <span style="color: #800000; font-weight: bold;">1<span style="color: #000000;">
mysql<span style="color: #808080;">> <span style="color: #0000ff;">create <span style="color: #0000ff;">table t11 (name <span style="color: #0000ff;">char(<span style="color: #800000; font-weight: bold;">20),hobby <span style="color: #0000ff;">set(<span style="color: #ff0000;">'<span style="color: #ff0000;">抽烟<span style="color: #ff0000;">',<span style="color: #ff0000;">'<span style="color: #ff0000;">喝酒<span style="color: #ff0000;">',<span style="color: #ff0000;">'<span style="color: #ff0000;">烫头<span style="color: #ff0000;">',<span style="color: #ff0000;">'<span style="color: #ff0000;">翻车<span style="color: #ff0000;">'<span style="color: #000000;">));
Query OK,<span style="color: #800000; font-weight: bold;">0 rows affected (<span style="color: #800000; font-weight: bold;">0.01<span style="color: #000000;"> sec)
可以任意选择set(<span style="color: #ff0000;">'<span style="color: #ff0000;">抽烟<span style="color: #ff0000;">',<span style="color: #ff0000;">'<span style="color: #ff0000;">翻车<span style="color: #ff0000;">'<span style="color: #000000;">)中的项,并自带去重功能
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t11 <span style="color: #0000ff;">values (<span style="color: #ff0000;">'<span style="color: #ff0000;">yuan<span style="color: #ff0000;">',<span style="color: #ff0000;">'<span style="color: #ff0000;">烫头,喝酒,烫头<span style="color: #ff0000;">'<span style="color: #000000;">);
Query OK,<span style="color: #800000; font-weight: bold;">1 row affected (<span style="color: #800000; font-weight: bold;">0.01<span style="color: #000000;"> sec)
mysql<span style="color: #808080;">> <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t11;
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+---------------+
<span style="color: #808080;">| name <span style="color: #808080;">| hobby <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+---------------+
<span style="color: #808080;">| yang <span style="color: #808080;">| 喝酒,烫头 <span style="color: #808080;">|
<span style="color: #808080;">+<span style="color: #008080;">--<span style="color: #008080;">----+---------------+
<span style="color: #800000; font-weight: bold;">1 row <span style="color: #808080;">in <span style="color: #0000ff;">set (<span style="color: #800000; font-weight: bold;">0.00<span style="color: #000000;"> sec)
不能选择不属于set(<span style="color: #ff0000;">'<span style="color: #ff0000;">抽烟<span style="color: #ff0000;">',<span style="color: #ff0000;">'<span style="color: #ff0000;">翻车<span style="color: #ff0000;">'<span style="color: #000000;">)中的项,
mysql<span style="color: #808080;">> <span style="color: #0000ff;">insert <span style="color: #0000ff;">into t11 <span style="color: #0000ff;">values (<span style="color: #ff0000;">'<span style="color: #ff0000;">alex<span style="color: #ff0000;">',翻车,看妹子<span style="color: #ff0000;">'<span style="color: #000000;">);
ERROR <span style="color: #800000; font-weight: bold;">1265 (<span style="color: #800000; font-weight: bold;">01000): Data truncated <span style="color: #0000ff;">for <span style="color: #0000ff;">column <span style="color: #ff0000;">'<span style="color: #ff0000;">hobby<span style="color: #ff0000;">' at row <span style="color: #800000; font-weight: bold;">1
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!