3、MySQL的数据类型介绍

上一章节内容主要介绍了一些MySQL中对表和库的增删改查操作,对于上一章中对与表中字段的一些定义进行说明,本章主要介绍关于数据库类型的一些定义。

一、概述:

MySQL数据库中的数据大致可以分为以下几类,从而实现数据库在操作的时候对不同类型的处理。对数据库分类的优点主要有以下几种:

1、使系统能够根据数据类型来操作数据

2、预防数据运算的时候出错

通过分类,可以将每个类型不特定的行为联系在一起执行这些行为时,数据分类将有效避免不同类型数据之间的错误,做场见的是字符串数字相加。

3、更见有效的利用空间。

4、定义数据类型实际是定义表中的列

二、数据库类型的分类

数据库的分类可以分为数值类型,字符型,日期型、文本型TEXT及复合型。

2.1 数值型

2.1.1 整型

tinyint(-127~128之间的整数)

smallint(短整型:(-32768~32767)数值占用2字节, 用带符号的二进制整数形式存储)

mediumint

auto_increment(自增长类型)

row num

int (整型默认为11个字节)

bigint(大整型)

Population

举例:

创建表包含以上类型,且每个字段中均输入99999999数值,并查看

mysql> insert into mydata values(99999999,999999999,99999999,999999999,999999999);
ERROR 1264 (22003): Out of range value for column ‘id1‘ at row 1
提示id1,报错
mysql> select * from mydata;
+------+--------+--------+-----------+-----------+
| id1  | id2    | id3    | id4       | id5       |
+------+--------+--------+-----------+-----------+
|  127 | -32768 |  65535 | 999999999 | 999999999 |
|  127 | -32768 | 655356 | 999999999 | 999999999 |
+------+--------+--------+-----------+-----------+

在MySQL5.5及以上版本之后各个字段类型数字超出长度限制则均不能创建成功;

mysql> insert into mydata(id1) values(‘NIHAO‘);
ERROR 1366 (HY000): Incorrect integer value: ‘NIHAO‘ for column ‘id1‘ at row 1

类型不同的数据也限制执行插入操作

类型直接均可使用int(n)这里的n则是对整型数据的长度进行限制,n的最大值为255

2.2 整型修饰符:

unsigned 无符号整数,修饰符:规定字段只能保存正的数据。其可以增大这个字段正整数的支持范围。

zerofill 规定0填充(默认是空格)填补输出的值,使用这个值可以防止MySQL存储负值。

例如:超时会员卡编号

No 0000000000000001
mysql> create table mydata2(id int(10) unsigned zerofill);
Query OK, 0 rows affected (0.14 sec)
mysql> insert into mydata2 values(1);
Query OK, 1 row affected (0.01 sec)
mysql> select * from mydata2;
+------------+
| id         |
+------------+
| 0000000001 |
+------------+
1 row in set (0.00 sec)
mysql>

2.2 浮点型数值

float(单精度),double(双精度),decimal(精度确定)

float和dobule是浮点数,数值越大与不精确

Decimal是定点数,常用来存储财务工资方面,具备高精度

float(5,2):表示字段有限长度是5位,其中整数部分为3位,小数部分为2位,小数点超出部分则执行四舍五入,其占用4个字节

double:8个字节村粗

decimal:用来存储精度的小数,消耗空间,运算较慢。可以使用bigint替代。

8762435.543 mm=x*1000 = 8762435543
select mm/1000 from tb_name;
mysql> create table mydata3(tb float(4,1),td double(5,2),tc decimal(5,2));
Query OK, 0 rows affected (0.09 sec)
mysql> insert into mydata3 values(45.6789,45.6789,45.6789);
Query OK, 1 row affected, 1 warning (0.08 sec)
mysql> select * from mydata3;
+------+-------+-------+
| tb   | td    | tc    |
+------+-------+-------+
| 45.7 | 45.68 | 45.68 |
+------+-------+-------+
1 row in set (0.00 sec)
mysql>

三、字符串类型

3.1字符串类型比较

char(n)

n:存储固定长度,在括号中自定长度其最大值为255;

varchar(n)

n:存储变长,在括号内指定最大长度其最大值为255,如果大于255则需要使用TEXT类型

TEXT

TEXT类型存放最大长度为65535个字符串。

3.2 三种类型优缺点:

char较varchar占用空间,但效率高

char:固定长度,插入数据必须小于指定的长度否则自动截断(适用于mysql版本低于5.5的版本,大等于该版本的将不能插入数据)。

varchar:长度动态,会导致数据迁移增加IO压力

字符串类型修饰符:

binary:区分字符大小写。

举例:

mysql> create table mychar1(ca char(10),va varchar(10));
mysql> insert into mychar1 values(‘1234567890111‘,‘1234567890111‘);
ERROR 1406 (22001): Data too long for column ‘ca‘ at row 1
字符过长无法插入报错

不同存储引擎使用不同用法:

MyISAM表:建议使用char类型

InnoDB表:由于其数据内部存储格式对固定长度的数据行和可变长度的数据行不加区分,素有使用varchar可以减少磁盘空间用量和尖山磁盘I/O。

TEXT类型:

TEXT类型及其子类型用于存储比较长的非二进制字符串:

TEXT不区分大小写

四、复合类型

ENUM:枚举类型,只能取一个

SET:set类型可以取多个

例子:

Query OK, 1 row affected (0.00 sec)
mysql> create table mychar(sex enum(‘M‘,‘W‘));
Query OK, 0 rows affected (0.11 sec)
mysql> insert into mychar values(‘M‘);
Query OK, 1 row affected (0.01 sec)
mysql> create table mychar2(type set(‘a‘,‘b‘,‘c‘,‘d‘));
Query OK, 0 rows affected (0.14 sec)
mysql> insert into mychar2 values(‘a,b,d‘);
mysql> select * from mychar2;
+-------+
| type  |
+-------+
| a,b,d |
+-------+

说明:enmu:最多有65535个元素,从1开始索引为0,表示错误值或nouu,

五、时间日期型:

5.1 date类型

格式:YYYY-MM-DD

支持范围:1000-01-01到9999-12-31

mysql> create table mydate(dd date);

Query OK, 0 rows affected (0.06 sec)

mysql> insert into mydate values(‘2017-09-10‘),(20180910);

5.2 time类型

mysql> create table mydate1(tt time);
Query OK, 0 rows affected (0.15 sec)
mysql> insert into mydate1 values(‘100101‘);
Query OK, 1 row affected (0.01 sec)
mysql> select * from mydate1;
+----------+
| tt       |
+----------+
| 10:01:01 |
+----------+
1 row in set (0.00 sec)

5.3 year类型

00-69:转为2000-2069 70-79转为:1970-1999

1970Unix诞生记为计算机元年

例子:

mysql> create table mydate2(yy year);
Query OK, 0 rows affected (0.14 sec)
mysql> insert into mydate2 values(‘2015‘),(01),(9),(69),(2080);
Query OK, 5 rows affected (0.08 sec)
Records: 5  Duplicates: 0  Warnings: 0
mysql> select * from mydate2;
+------+
| yy   |
+------+
| 2015 |
| 2001 |
| 2009 |
| 2069 |
| 2080 |
+------+
5 rows in set (0.00 sec)

5.4 datetime类型和time stamp类型

datetime类型timestamp类型

datetime类型能保存大范围的值,从1001年到9999年,精度为秒,它把日期和时间封装到格式为YYYY-MM-DD HH:MM:SS的整数中,与时区无关,使用8个字节的存储空间

timestamp类型保存了从1970年1月1日午夜(格林尼治时间) 以来的秒数

它和linux时间戳相同,timestamp只使用了4个字节的存储空间,因此它的范围比datetime小的多,只能表示从1970-2038,通常我们还是用它的,提高空间利用率

举例:

mysql> create table mydate3(dt datetime);
Query OK, 0 rows affected (0.21 sec)
mysql> insert into mydate3 values(‘11111111111111‘)
    -> ;
Query OK, 1 row affected (0.00 sec)
mysql> select * from mydate3;
+---------------------+
| dt                  |
+---------------------+
| 1111-11-11 11:11:11 |
+---------------------+
1 row in set (0.00 sec)
插入当前时间
mysql> insert into mydate4 values(now());
Query OK, 1 row affected (0.01 sec)
时间: 2024-10-12 20:06:57

3、MySQL的数据类型介绍的相关文章

MYSQL中数据类型介绍

一.MySQL的数据类型 主要包括以下五大类: 整数类型:BIT.BOOL.TINY INT.SMALL INT.MEDIUM INT. INT. BIG INT 浮点数类型:FLOAT.DOUBLE.DECIMAL 字符串类型:CHAR.VARCHAR.TINY TEXT.TEXT.MEDIUM TEXT.LONGTEXT.TINY BLOB.BLOB.MEDIUM BLOB.LONG BLOB 日期类型:Date.DateTime.TimeStamp.Time.Year 其他数据类型:BIN

MySQL的数据类型和建库策略详解

无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构.充分利用空间是十分必要的.这就要求我们对数据库系统的常用数据类型有充分的认识.下面我就将我的一点心得写出来跟大家分享. 一.数字类型 数字类型按照我的分类方法分为三类:整数类.小数类和数字类. 我所谓的"数字类",就是指DECIMAL和NUMERIC,它们是同一种类型.它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的:他的值的每一位(包括小数点)占一个字节的存储空间,因此这种类型耗费空间比较大.

MySQL数据类型介绍

一 选择数据类型的几个简单原则 1. 越小越好,越简单越好 一般情况下,应该尽量使用可以正确存储数据的最小最简单的数据类型.因为它们占用更小的磁盘,内存和CPU缓存,处理时需要的CPU周期也更少.但同时,在确定选择时也务必注意不要低估需要存储的值的范围,否则会给后期带来麻烦. 2. 尽量避免NULL NULL是列的默认属性,但通常情况下最好指定列为NOT NULL,除非真的需要存储NULL.因为含有NULL的列使得索引.索引统计和值比较都更加复杂,而且当可为NULL的列被索引时,每个索引记录需要

MySQL 中的数据类型介绍

MySQL 中的数据类型介绍 标签: mysql数据类型mysql全部数据类型mysql字段类型mysql数据存储mysql 2016-04-29 20:24 53643人阅读 评论(11) 收藏 举报  分类: 服务器及软件---MySQL数据库(4)  版权声明:http://blog.csdn.net/anxpp 目录(?)[+] 据我统计,MySQL支持39种(按可使用的类型字段统计,即同义词也作多个)数据类型.下面的介绍可能在非常古老的MySQL版本中不适用. 转载请注明出处:http

四、MySQL的数据类型和运算符

4.1.MySQL数据类型介绍 MySQL支持多种数据类型,主要有数值类型.日期/时间类型和字符串类型. 数值数据类型: 包括整数类型   TINYINT.SMALLINT.MEDIUMINT.INT.BIFINT. 浮点小数据类型 FLOAT.DOUBLE 定点小数类型   DECIMAL 日期/时间类型: YEAR.TIME.DATE.DATETIME.TIMESTAMP 字符串类型: CHAR.VARCHAR.BINARY.VARBINARY.BLOB.TEXT.ENUM.SET 整数类

mysql的数据类型和字符集

MySQL的数据类型 MySQL数据库支持的数据类型主要有以下几种: 整型 浮点型 字符 BLOB型 枚举和集合类型 JSON类型(MySQL5.7新增加的支持) 整型 整数类型是数据库中最基本的数据类型.标准SQL中支持INTEGER和SMALLINT这两类整数类型.MySQL数据库除了支持这两种类型之外,还扩展支持了TINYINT, MEDIUMINT和BIGINT. MySQL中各种整型占据的字节数和取值范文如下: 整数类型 字节数 无符号数取值范围 有符号数取值范围(添加一位符号为,把无

MySQL基础数据类型

一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/mysql/mysql-data-types.html http://dev.mysql.com/doc/refman/5.7/en/data-type-overview.html mysql常用数据类型概览: #1. 数字: 整型:tinyinit int bigint 小数: float :在位数比较短的情况下不精准 doub

mysql之数据类型以及操作数据表

数据类型: 数据类型是指列.存储过程的参数.表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型. —————————————————————————————————————————————————————————— 在mysql当中数据类型大概有以下几类: ———————————————————————————————————————————— 1.整型: ———————————————————————————————————————————————————————————

JavaOO视频-04【基本数据类型介绍02、数据类型转换】

转载请标明,http://www.gxabase.com视频内容:此节视频会接着给大家讲基本数据类型的介绍,包括:浮点型.字符型.布尔型.然后再为大家介绍学习八大基本数据类型必须掌握的数据类型转换这一知识点. JavaOO视频-04[基本数据类型介绍02.数据类型转换],布布扣,bubuko.com