1、整数类型
下表中指明了具体的整数类型,存储消耗的字节数,最小最大取值范围,unsigned代表不允许负数,则正整数的取值范围扩大一倍
![](https://box.kancloud.cn/e27e77c6e4c1de639f4fc8e940624da5_687x383.png)
mysql> alter table temp1 modify id2 int(20) zerofill;
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from temp1;
+------+----------------------+
| id | id2 |
+------+----------------------+
| 10 | 00000000000000000010 |
+------+----------------------+
####zerofill 表示补零。
2、浮点类型
(1)、Decimal的使用方法举例为decimal(5,2)
其中的5代表为精度,表示了可以使用多少位数字
其中的2代表小数点后面的小数位数
当不需要指定小数时,可以使用decimal(M),decimal(M,0)表示
M默认值为10 ,M的最大取值为65,D的最大取值为30,当D为0时可以用来存储比BIGINT更大范围的整数值
当指定unsigned,表示不允许负数
浮点类型中包含float和double两种,与decimal相比是不精确类型
(2)、FLOAT[(M,D)] [UNSIGNED]中的M代表可以使用的数字位数,D则代表小数点后的小数位数
Unsigned(无)代表不允许使用负数
Float的取值范围为-3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38
(3)、DOUBLE[(M,D)] [UNSIGNED]中的M代表可以使用的数字位数,D则代表小数点后的小数位数
Double的取值范围对比float要大,-1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308
3、时间日期类型
(1)、Date类型用来表示仅日期,MySQL默认的日期格式为yyyy-mm-dd,取值范围为1000-01-01到9999-12-31
(2)、Datetime类型用来表示日期和时间,MySQL默认的格式为yyyy-mm-dd hh:mi:ss,取值范围为1000-01-01 00:00:00到9999-12-31 23:59:59
(3)、Timestamp类型也用来表示日期和时间,其取值范围为1970-01-01 00:00:01到2038-01-19 03:14:07
Datetime和timestamp两个类型都可以保存到微妙级别,即6位毫秒微妙精度,即1000-01-01 00:00:00.000000到9999-12-31 23:59:59.999999和1970-01-01 00:00:01.000000到2038-01-19 03:14:07.999999
非法的date,datetime,timestamp值将被转换成0值,0000-00-00或者0000-00-00 00:00:00
(4)、Time类型用来仅表示时间,MySQL默认格式为HH:MM:SS,其取值范围为-838:59:59到838:59:59,小时字段可以超过24是因为time类型不光代表小时,也可以代表持续时长中的小时
Time类型也可以包含6位的毫秒微秒精度,其取值范围为-838:59:59.000000到838:59:59.000000
(5)、Year类型用来仅表示年份,MySQL默认格式为YYYY,其取值范围为1901到2155,和0000
针对非法的year数据,则直接转化为0000
**当在time,timestamp,datetime中指定含有毫秒微秒数值时,则用type_name(fsp)来表达,其中fsp可以取0到6之间的数值**
字符类型
字符类型包含char, varchar, binary, varbinary, blob, text, enum和set
1、Char和varchar可以通过char(M)和varchar(M)指定可以存储的最大字符数,比如char(30)表示可以存储最长30个字符
Char类型的长度一旦指定就固定了,其范围可以是0到255,当被存储时,未达到指定长度的则在值右边填充空格,而获取数据时则会把右侧的空格去掉
Varchar类型是变长的类型,其范围可以是0到65535,当存储是未达到指定长度则不填充空格
![](https://box.kancloud.cn/620bc02f63c6926dea7a6cd495ded99f_898x217.png)
Varchar类型用来存储可变长字符串,是最常见的字符串数据类型,它比定长类型更节省空间,因为它仅使用必要的空间。
另外varchar需要使用1或2个额外字节记录字符串的长度,如果列的最大长度小于等于255字节时,需要1个字节,否则需要2个字节。比如采用Latin1字符集,varchar(10)的列需要11个字节的存储空间,而varchar(1000)列需要1002个字节的存储空间。
varchar节省了存储空间,所以对性能也有帮助。但由于行是变长的,在update时可能使行变得比原来更长,这就导致需要做额外的工作。如果一行占用的空间增长,并且物理数据页内没有更多空间存储时,MyISAM会将行拆成不同的片段存储,InnoDB需要分列页来讲行放到数据页里。
char类型是定长,MySQL总是根据定义的字符串长度分配足够的空间。当存储char值时,MySQL会删除所有的末尾空格
char适合存储很短的字符串,或者所有值都接近同一个长度。对于经常变更的数据,char也比varchar更好,因为定长的char类型不容易产生碎片。而且对非常短的字符串,char不需要一个额外的字节记录长度
Char类型值右边的空格会被自动剔除,而varchar类型则不会
2、Binary和varbinary类型和char/varchar类似,只不过是存储二进制字符
3、长字段
Blob和text类型被用来存储大量的数据
Blob是用来存储二进制的大量数据,其有四种类型,tinyblob、blob、mediumblob、longblob四种的区别是能存储的数据长度有所不同
Text是用来存储字符型的大量数据,其有四种类型, tinytext、text、mediumtext、longtext四种的区别是能存储的数据长度有所不同
Blob和text的列字段不能含有默认值
4、枚举类型
Enum枚举类型是字符串类型,其值是从事先指定的一系列值中选出,适用在某列的取值范围已经固定。
主要好处为MySQL在存储此类数据时,直接转化成数字存储而不是字符串,可以节省空间,并且在表的.frm文件中存储“数字-字符串”之间的对应关系。
另外枚举类型的排序规则是按照存储顺序进行而不是按照值本身排序的
如果想要按照一般的排序规则进行排序,需要使用field()函数显示指定排序规则
select size from shirts order by field(size,’large’,’medium’,’small’)
枚举类型字段的取值的增加必须通过alter table命令
mysql> alter table shirts modify size ENUM('x-small', 'small', 'medium', 'large', 'x-large','xx-large');
Enum枚举类型最多可以有65535个值
当插入数字到枚举类型字段时,数字会被当做枚举值的第几个值而插入
Enum枚举类型最多可以有65535个值
当插入数字到枚举类型字段时,数字会被当做枚举值的第几个值而插入
5、集合类型
Set集合类型是字符类型,可以含有0个或多个值,其中的每个值都需要是在创建字段时指定的集合中
比如一个字段被指定为SET(‘one’, ‘two’) not null可以含有以下四种值
''
'one'
'two'
'one,two‘
Set集合最大可以有255个值。MySQL在存储set集合时,同样也是存储为数字类型。
- 一、日常运维脚本
- 1.1 批量创建用户并赋予sudo权限
- 1.2 批量主机建立互信
- 1.3create_images.sh
- 1.4monitor.sh
- 1.5ftp脚本
- 1.6格式化分区
- 1.7简单的远程执行脚本
- 二、常用服务使用
- 1 ceph (分布式文件系统)
- 1.1 ceph 简介
- 1.2 准备环境
- 1.3 开始部署
- 1.4 cephfs挂载
- 1.5 RBD块存储
- 1.6 object 对象存储
- 1.7 集群扩展
- 1.7.1 增加删除MON
- 1.7.2 增加删除OSD
- 1.7.3 删除MDS
- 注意事项
- 遇到的问题
- 1.8ceph查找数据文件
- 1.9卸载并清理环境
- 2、mysql (数据库)
- 2.1 搭建
- 2.2 使用教程
- 2.2.1 mysql基础配置
- 2.2.1.1 用户权限管理
- 2.2.1.2用户资源限制
- 2.2.1.3 密码管理
- 2.2.1.4用户lock
- 2.2.2mysql语法详解
- 2.2.1建库、表语句
- 2.2.2.2 插入 insert
- 2.2.2.3更新 update
- 2.2.2.4删除 delete
- 2.2.2.5查询 select
- 2.2.6视图 索引 view index
- 2.2.7 修改 alert
- 2.2.2.8清理 truncate drop
- 2.2.9重命名 rename
- 示例语句
- 2.2.3mysql常用函数
- 2.3.1 对比操作符统概
- 2.3.2对比操作符详解
- 2.3.3逻辑操作符
- 2.2.4分配操作符
- 2.2.5流程控制函数
- 2.2.6字符串函数
- 2.2.7字符串对比函数
- 2.2.8数字函数
- 2.2.9日期和时间函数
- 2.2.10聚合/格式转换函数
- 2.2.11 子查询
- 示例语句
- 2.2.4 mysql 高级应用
- 2.2.4.1 存储过程 函数
- 2.2.4.2流程控制
- 2.2.4.3游标
- 2.2.4.4触发器
- 课堂练习
- 2.2.2.5 数据库设计
- 2.2.5.1 数据类型
- 2.2.5.2存储引擎
- 2.2.6Innodb内核
- 1、innodb事务和多版本控制
- 2、体系结构
- 3、InnoDB配置
- 4、buffer pool设置
- 5、其他配置
- innodb限制
- 2.7 字符集
- 2.8锁机制和事务
- 2.8.1锁机制
- 2.8.2事务
- 2.9分区
- 2.9.1 自动分区
- 2.10复制
- 2.11mysql搬移数据目录
- 2.12组复制 GR
- 简介
- 搭建
- 2.3日常运维
- 2.3.1定时任务
- 2.4mycat
- 2.4.1 报错分析
- 2.4.2 修改字符集
- 2.11 mycat使用
- 2.5遇到问题
- 2.5.1 表名库名忽略大小写
- 3、PAAS平台搭建
- 问题汇总
- 1、docker
- 2、日常运维
- 3.1 Kubernetes
- 3.1 kubernetes 高版本搭建
- 4、GlusterFS搭建
- 5、MooseFS搭建
- 5.1搭建
- 5.2运维
- 5.2.1 mfs日志解析
- 5.2.2清理mfs的垃圾数据
- 5.2.3元数据故障恢复
- 5.2.4 MFS优化
- 5.2.5 配置机架感知
- 5.2.6 客户端工具集
- 6、集群切换命令
- 7、ntp服务
- 8、monggoDB
- 8.1搭建单机
- 2、搭建集群及分片
- 9、MariaDB Galera Cluster
- 9.1源码安装MariaDB
- 9.2galera cluster 优劣
- 9.3 rpm安装mariadb
- 10 HAproxy1.7搭建
- 11、sysbench 搭建使用
- 0.5版本
- 12 percona-xtradb-cluster
- 13http服务相关
- 13.1 http状态码解析
- 14 zookeeper
- 14.1 zookeeper日志查看
- 14.2 配置解析
- 14.3 优化
- 15搭建私有pip源
- 16/var/log的日志文件解释
- 15 ansible的搭建及使用
- 15.1 搭建
- 15.2 使用说明
- 16. 搭建本地yum源
- zookeeper
- 优化
- 四、开发语言
- 1、GO语言
- 1.1go简介
- 1.1.1hello_world初识GO
- 1.1.2并发介绍
- 1.1.3 chan介绍
- 1.1.4多返回值
- 1.2go基础
- 1.2.1数据类型
- 1.2.2 go基础结构
- 1.2.3 const及变量介绍
- 1.2.3os和time介绍
- 1.2.4 字符串
- 1.2.5条件判断
- 1.2.6 homework
- go--help
- 1.3 go基础2
- 1.3.1 数组 array
- 1.3.2切片 slice
- 1.3.3 时间和日期
- 1.3.4指针类型
- 1.3.5函数
- 1.3.6可变参数
- 1.3.7 defer
- 1.3.8递归
- 1.9闭包
- 1.10 map
- 1.11 sort
- 1.12 struct 结构体
- 2.perl语言
- 2.1 安装lib包
- 3 python
- 1.语言基础
- 2、编程教学
- 2.1变量和序列
- 2.2 条件语句