MySQL数据类型详解

+++++++++++++++++++++++++++++++++++++++++++
标题:MySQL数据库数据类型
时间:2019年2月19日
内容:MySQL数据库常用的数据类型
重点:熟悉常见数据类型的概念和区别。
+++++++++++++++++++++++++++++++++++++++++++
1. 数据类型概述
MySQL数据库支持多种数据库类型,主要有数值、日期/时间和字符串类型。
数值类型包括整型(tinyint、smallint、mediumint、int和bigint);浮点型(float和double和);此外小数还存在decimal定点小数。
日期时间类型包括(year、time、date、datetime和timestamp)。
字符串类型包括(char、varchar、binary、varbinary、blob、text、enum和set)

2. 显示宽度、取值范围和存储空间
显示宽度与数据类型的取值范围和存储空间无关。显示宽度小于取值范围时,用空格补充。
显示宽度不会限制取值范围和存储空间例如int(3)依旧占据4个字节的存储空间。因此在创建数据表结构是需要为字段选择合适的数据类型,避免存储空间的浪费。

3. 整数类型
MySQL提供了多种整数数值的数据类型,提供不同的取值范围.取值范围越大,占据存储空间越大,并支持自增约束条件(auto_increment)。
3.1 整数类型的存储需求

3.2 整数类型的取值范围
整数类型的取值范围分为有符号型数值和无符号型数值。有符号型取值范围为-2^(n-)-1至+2^(n-1)-1;无符号取值范围2^n-1。


4. 小数类型
MySQL中使用的浮点数和定点数表示小数。浮点数类型分为单精度浮点类型float(使用时精度会发生误差)和双精度浮点类型(double);定点数据类型为decimal。浮点类型与定点类型的表示格式为(M,N),M表示精度,N表示标度。decimal定点数类型是以串的形式存储的,其占用的存储空间以及其精度取决于M和N的值。
无论是浮点类型还是定点类型,用户指定的精度超出定义的精度范围,都会进行四舍五入。
4.1 小数类型的存储需求

4.2 浮点类型的取值范围
4.2.1 float浮点类型
有符号:-3.402823466E+38~-1.175494351E-38
无符号:0~1.175494351E-38~3.402823466E+38
4.2.2 double浮点类型
有符号:-1.7976931348623157E+308~2.2250738585072014R-308
无符号:0~2.2250738585072014E-308~1.7976931348623157E+308

5. 日期/时间类型
MySQL表示日期和时间的数据类型主要包括datetime、date、timestamp、time和year。每一个类型都存在一个合法的取值范围。根据自己的需求选择相应的数据类型。例如:当仅需要记录年份时选择year还是date(year范围较小,date范围较大)。超出范围则不能正常插入数据。
5.1 日期/时间类型的存储需求及取值范围

5.2 日期/时间类型详解
5.2.1 year类型
4位字符或数字表示,存储空间占1字节,输入范围"1901~2155",输入格式为'YYYY'或YYYY。
2位字符表示,输入范围"00~99","00~69"和"70~99"置换成"2000~2069"和"1970~1999"。
2为数字表示,输入1-69和70-99置换成2001-2069和1970-1999,输入0时表示0000。

mysql> insert into user_list(username,birth) values('break','2000');
mysql> insert into user_list(username,birth) values('break',2001);
mysql> insert into user_list(username,birth) values('break',1);
mysql> insert into user_list(username,birth) values('break',70);
mysql> insert into user_list(username,birth) values('break','1');
mysql> insert into user_list(username,birth) values('break','70');
mysql> insert into user_list(username,birth) values('break',0);


5.2.2 time类型
time数据类型的取值范围-838:59:59~838:59:59。该数据类型不仅可以表示一天的时间,还可以表示某事件过去的时间或两个事件的间隔时间。
'D HH:MM:SS'格式的字符串。也可以使用非严格性语法'HH:MM:SS'、'HH:MM'、'D HH:MM'、'D HH'或'SS'。D表示的日,在插入数据库时D被转换成小时保存。
'HHMMSS'格式的字符串。;如'121314',系统理解为'12:13:14;如'1314',人可能理解为13时14分,系统识别成13分14秒;如'14',人可能理解成14时,系统识别成14秒。因此可能会出现误解。

mysql> insert into times(times) values('11:12:13');
mysql> insert into times(times) values('121314');
mysql> insert into times(times) values('1314');
mysql> insert into times(times) values('14');
mysql> insert into times(times) values('2 15:15:15');


5.2.3 date类型
date类型的数据存储空间为3字节。日期格式为'YYYY-MM-DD';其中YYYY表示年,MM表示月,DD表示天。
'YYYY-MM-DD'或'YYYYMMDD'格式,取值范围'1000-01-01'~'9999-12-31'。
'YY-MM-DD'或'YYMMDD'格式,'00~69'和'70-99',取值范围'2000~2069'和'1970~1999'。
YY-MM-DD或YYMMDD格式,与上一种格式类似。
使用current_date或now(),插入当前系统日期。

mysql> insert into dates(dates) values('1111:11:11');
mysql> insert into dates(dates) values('11111111');
mysql> insert into dates(dates) values('111111');
mysql> insert into dates(dates) values('701111');
mysql> insert into dates(dates) values(121111);
mysql> insert into dates(dates) values(721111);
mysql> insert into dates(dates) values(now());
mysql> insert into dates(dates) values(current_time);


5.2.4 datetime类型
标准格式为'YYYY-MM-DD HH:MM:SS',可以使用字符串货数字类型的数据插入,只要符合datetime的日期格式即可。
'YYYY-MM-DD HH:MM:SS'或'YYYYMMDDHHMMSS',取值范围'1000-01-01 00:00:00'~'9999-12-31 23:59:59'。
'YY-MM-DD HH:MM:SS'或'YYMMDDHHMMSS','00~69'和'70-99'对应取值范围'2000~2069'和'1970~1999'。
YYYYMMDDHHMMSS或YYMMDDHHMMSS,类似上一种格式。

mysql> insert into datetimes values(1,'1111-11-11 11:11:11');
mysql> insert into datetimes values(2,'11-11-11 11:11:11');
mysql> insert into datetimes values(3,'11111111111111');
mysql> insert into datetimes values(4,'111111111111');
mysql> insert into datetimes values(5,11111111111111);
mysql> insert into datetimes values(6,111111111111);


5.2.5 timestamp类型
显示格式与datetime相同,显示宽度为19个字符,存储空间4字节;取值范围小于datetime,为'1970-01-01 00:00:01'UTC~'2038-01-19 03:14:07'UTC(世界标准时间)。查询返回结果与时区相关。


6. 文本字符串类型
字符串类型是用来存储字符串数据的,除此之外,还可以存储其他数据(例如:图片或二进制音频等)。MySQL支持两种字符类型,分别是文本字符串和二进制字符串。本部分主要介绍文本字符串类型。MySQL的文本字符串类型主要包括char、varchar、text、enum和set。
6.1 文本字符串类型的存储需求


6.2 文本字符串类型详解
6.2.1 varchar和char类型
varchar和char两种字符串类型的区别如下:
varchar类型为变长字符串类型;char类型为定长字符串类型。
varchar类型占据存储空间取决于数据大小;char类型占据存储空间取决于定义的空间的大小。
varchar类型不会去掉数据尾部的空格;char类型会去除数据尾部两端的空格。

mysql> insert into chars values(1,'1111','1111');
mysql> insert into chars values(2,' 1111',' 1111');
mysql> insert into chars values(3,'1111 ','1111 ');
mysql> insert into chars values(4,' 1111 ',' 1111 ');


6.2.2 text类型
text类型保存的为非二进制的字符串(例如:文件内容、评论等)。text类型又可以细分为4种类型,分别为tinytext、text、mediumtext和longtext。不同的text类型占据的存储空间是不同的。
tinytext:最大长度为255(2^8-1)
text:最大长度为65535(2^16-1)
text:最大长度为16777215(2^24-1)
text:最大长度为4294967295(2^32-1) //约4GB

6.2.3 ENUM类型
ENUM语法格式:字段名 ENUM('值1','值2'......'值n')。
字段能且仅能在ENUM列表取出一个值。
创建成员尾部出现空格时,系统会自动去除。
ENUM定义的每一个值均由一个索引,列表所允许的成员值从1开始编号。


mysql> insert into enums values(1,'1');
mysql> insert into enums values(2,'5');
ERROR 1265 (01000): Data truncated for column 'enums' at row 1
mysql> insert into enums values(2,'3');


6.2.4 SET类型
SET的定义格式与ENUM类似,并且每个值都存在一个索引编号。
SET类型最多可容纳64个成员。
SET类型字段中出现重复列值,MySQL会自动去除重复值。
SET类型可以在队列中选取1个或多个值。
SET类型插入错误值会直接忽略并发出警告信息。
mysql> create table sets (sets set('1','2','3') not null );
mysql> insert into sets values('1');
mysql> insert into sets values('1,2');
mysql> insert into sets values('1,2,3,4');
ERROR 1265 (01000): Data truncated for column 'sets' at row 1


7. 二进制字符串类型
MySQL中的二进制数据类型主要包括bit、binary、varbinary、tinyblob、blob、mediumblob和longblob。下面重点讲解一下二进制字符串的特点以及基础使用方法。

7.1 二进制字符串存储需求


7.2 二进制字符串类型详解
7.2.1 bit类型
bit定义方式为bit(n),其中n表示的二进制的位数,取值范围是1<n<64,如果n值被省略,则其默认值为1。例如:14二进制形式为1110,此时至少需要4位二进制位进行存储,即bit(4);如果n<4时,数据则不能正常插入到数据库。当使用insert语句插入数据后,会将当前的数据转换成二进制数据进行存储。

mysql> insert into bits values(1,1);
mysql> insert into bits values(2,2);
mysql> insert into bits values(3,12);
mysql> insert into bits values(4,14);
mysql> insert into bits values(4,100);
ERROR 1406 (22001): Data too long for column 'bits' at row 1

注意:采用bin(bits+0)的方式是将二进制转换成为0和1表示形式。

7.2.2 binary和varbinary类型
binary和varbinary类型类似于char和varchar数据类型,唯一的区别是前者存储形式为二进制,后者存储形式为非二进制。其特点请参考文本字符串类型中的char和varchar类型。

7.2.3 blob类型
blob类型为的存储形式是二进制,text类型的存储形式是非二进制。





转载于:https://www.cnblogs.com/lv1572407/p/10416184.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL是一种常用的关系型数据库管理系统,它支持多种操作系统,如Linux、Windows和MacOS等。下面是一些常用的MySQL命令: 1. 登录MySQL 在Linux系统中,可以使用以下命令登录MySQL: ``` mysql -u username -p ``` 其中,`username`是你的MySQL用户名。输入该命令后,系统将提示你输入密码。 2. 查看数据库列表 ``` show databases; ``` 该命令将列出MySQL服务器上的所有数据库。 3. 创建数据库 ``` create database dbname; ``` 其中,`dbname`是你要创建的数据库名称。 4. 删除数据库 ``` drop database dbname; ``` 该命令将删除指定的数据库及其所有数据。 5. 使用数据库 ``` use dbname; ``` 该命令将切换到指定的数据库。 6. 查看数据表列表 ``` show tables; ``` 该命令将列出当前数据库中的所有数据表。 7. 创建数据表 ``` create table tablename ( column1 datatype, column2 datatype, column3 datatype, ... ); ``` 其中,`tablename`是你要创建的数据表名称,`column1`、`column2`、`column3`等是表中的列名,`datatype`是列的数据类型。 8. 删除数据表 ``` drop table tablename; ``` 该命令将删除指定的数据表及其所有数据。 9. 插入数据 ``` insert into tablename (column1, column2, column3, ...) values (value1, value2, value3, ...); ``` 该命令将在指定的数据表中插入一条新记录。 10. 更新数据 ``` update tablename set column1 = value1, column2 = value2, ... where condition; ``` 该命令将更新指定数据表中符合条件的记录。 11. 删除数据 ``` delete from tablename where condition; ``` 该命令将删除指定数据表中符合条件的记录。 12. 查询数据 ``` select column1, column2, ... from tablename where condition; ``` 该命令将查询指定数据表中符合条件的记录,并返回指定的列。 以上是一些常用的MySQL命令,你可以根据需要进行更改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值