MySQL数据类型 -- 字符型

栏目: 数据库 · 发布时间: 7年前

内容简介:版权声明:本文为博主原创文章,欢迎扩散,扩散请务必注明出处。 https://blog.csdn.net/robinson_0612/article/details/82824320

版权声明:本文为博主原创文章,欢迎扩散,扩散请务必注明出处。 https://blog.csdn.net/robinson_0612/article/details/82824320

MySQL 关系型数据库中,MySQL支持的数据类型非常丰富。它主要分为3大类,即:数值型,日期时间性,字符型。而实际上这三类数据类型可以进一步的细分扩展,可以根据业务需要选择最适合的一种。本文主要介绍字符类型,并演示其用法。

一、字符型

MySQL支持的字符类型可以进一步细分,即可以分为定(变)长字符型,大值字符型,枚举集合类型等。如下图所示:

MySQL数据类型 -- 字符型

二、字符型空间需求

MySQL数据类型 -- 字符型

三、字符型演示

mysql> show variables like 'version';
+---------------+------------+
| Variable_name | Value |
+---------------+------------+
| version | 5.7.22-log |
+---------------+------------+
mysql> select 'Leshami' as Author
    -> union all
    -> select 'http://blog.csdn.net/leshami';
+------------------------------+
| Author |
+------------------------------+
| Leshami |
| http://blog.csdn.net/leshami |
+------------------------------+

-- 创建表,包含2种数据类型的列
mysql> CREATE TABLE vc
    -> (
    -> v VARCHAR(4),
    -> c CHAR(4)
    -> );
Query OK, 0 rows affected (0.12 sec)

mysql> INSERT INTO vc
    -> VALUES ('ab ', 'ab ');
Query OK, 1 row affected (0.02 sec)

-- 通过字符串函数可知,第二列定长类型ab后的空格被截断
mysql> SELECT CONCAT('(', v, ')'), 
    -> CONCAT('(', c, ')') FROM vc;
+---------------------+---------------------+
| CONCAT('(', v, ')') | CONCAT('(', c, ')') |
+---------------------+---------------------+
| (ab ) | (ab) |
+---------------------+---------------------+
1 row in set (0.00 sec)

-- 创建包含枚举和集合类型的表
mysql> CREATE TABLE tb5(status ENUM('a','b'),
    -> range_set SET ('a','b','c','d'));
Query OK, 0 rows affected (0.16 sec)

mysql> INSERT INTO tb5
    -> VALUES ('a', ('a,b')), ('b', ('a,d'));
Query OK, 2 rows affected (0.05 sec)
Records: 2 Duplicates: 0 Warnings: 0

-- 以下insert操作仅为status插入值,报错,因为c值不在枚举范围内
mysql> INSERT INTO tb5(status)
    -> VALUES ('c');
ERROR 1265 (01000): Data truncated for column 'status' at row 1

-- 以下insert操作仅为status插入值,报错,因为a,b联合值不在枚举范围内
mysql> INSERT INTO tb5(status)
    -> VALUES ('a,b');
ERROR 1265 (01000): Data truncated for column 'status' at row 1

-- 以下insert操作仅为range_set插入值,报错,因为值超出集合范围 
mysql> INSERT INTO tb5(range_set)
    -> VALUES ('a,b,c,f');
ERROR 1265 (01000): Data truncated for column 'range_set' at row 1

-- 以下操作成功
mysql> INSERT INTO tb5(range_set)
    -> VALUES ('a,b,c,d,a,c');
Query OK, 1 row affected (0.02 sec)

-- 查看数据行
mysql> SELECT * FROM tb5;
+--------+-----------+
| status | range_set |
+--------+-----------+
| a | a,b |
| b | a,d |
| NULL | a,b,c,d |
+--------+-----------+
3 rows in set (0.00 sec)

mysql> SELECT status + 0, range_set + 0
    -> FROM tb5;
+------------+---------------+
| status + 0 | range_set + 0 |
+------------+---------------+
| 1 | 3 |
| 2 | 9 |
| NULL | 15 |
+------------+---------------+
3 rows in set (0.00 sec)

-- 对于枚举型与集合型,不能超出枚举和集合范围
-- 集合型列值插入时可以重复,插入成功后重复值被过滤

以上所述就是小编给大家介绍的《MySQL数据类型 -- 字符型》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Algorithms + Data Structures = Programs

Algorithms + Data Structures = Programs

Niklaus Wirth / Prentice Hall / 1975-11-11 / GBP 84.95

It might seem completely dated with all its examples written in the now outmoded Pascal programming language (well, unless you are one of those Delphi zealot trying to resist to the Java/.NET dominanc......一起来看看 《Algorithms + Data Structures = Programs》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具