MySQL【第三篇】数据类型
一、整型
整型的每一种都有无符号(unsigned)和有符号(signed)两种类型。
MySQL数据类型 | 含义 |
tinyint(m) | 1个字节表示:signed(-128~127);unsigned(0~255) |
smallint(m) | 2个字节表示:signed(-32768~32767);unsigned(0~65535) |
mediumint(m) | 3个字节表示:signed(-8388608~8388607);unsigned(0~16777215) |
int(m) | 4个字节表示:signed(-2147483648~2147483647);unsigned(0~4294967295) |
bigint(m) | 8个字节表示:signed(-2^63 (-9223372036854775808) ~ 2^63-1 (9223372036854775807) );unsigned(0~18446744073709551615) |
二、浮点型
MySQL数据类型 | 含义 |
float(m,d) | 单精度浮点型,8位精度(4字节),m是十进制数字的总个数,d是小数点后面的数字个数 |
double(m,d) | 双精度浮点型,16位精度(8字节) |
三、定点数
decimal(m,d) 定点类型:浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。参数m是定点类型数字的最大个数(精度),范围0~65,d为小数点右侧数字的个数,范围为0~30.但不能超过m。
对定点数计算能精确65位数字。
四、字符串
MySQL数据类型 | 含义 |
char(n) | 固定长度的字符串,最多255个字符 |
varchar(n) | 固定长度的字符串,最多65535个字符 |
tinytext | 可变长度字符串,最多255个字符 |
text | 可变长度字符串,最多65535个字符 |
mediumtext | 可变长度字符串,最多2的24次方-1个字符 |
longtext | 可变长度字符串,最多2的32次方-1个字符 |
char和varchar:
- 都可以通过指定n来限制存储的最大字符数长度,char(20)和varchar(20)将最多只能存储20个字符,超过的字符将会被截掉。n必须小于该类型允许的最大字符数
- char类型指定了n之后,如果存入的字符数小于n,后面将会以空格补齐,查询的时候再将末尾的空格去掉,所以char类型存储的字符串末尾不能有空格,varchar不受此限制
- 内部存储的机制不同。char是固定长度,char(4)不管是存1个字符、2个字符或者4个字符(英文的),都将占用4个字节。varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以,varchar(4)存入一个字符将占用2个字节,2个字符占用3个字节,4个字符占用5个字节
- char类型的字符串检索速度要比varchar类型快
varchar和text:
- 都是可变长度的,最多能存储65535个字符
- varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节
- text类型不能有默认值
- varchar可直接创建索引,text创建索引要指定前多少个字符,查询速度varchar要快于text
五、二进制数据
xxxblob和xxxtext是对应的,不过存储方式不同。xxxtext是以文本方式存储的,如果存储英文,应区分大小写;而xxxblob是以二进制方式存储的,不区分大小写。
xxxblob存储的数据只能整体读出。
xxxtext可以指定字符集,xxxblob不能指定字符集
六、日期时间类型
MySQL数据类型 | 含义 |
date | 日期,如'2016-12-12' |
time | 时间,如'22:22:22' |
datetime | 日期+时间,如'2016-12-12 22:22:22' |
timestamp | 不固定 |
timestamp比较特殊,如果定义一个字段的类型为timestamp,这个字段的时间会在其他字段修改的时候自动刷新。所以这个数据类型的字段可以存放这条记录最后被修改的时间,而不是真正的存放时间。
七、数据类型的属性
在定义表时,可以指定每个字段的一些属性。
MySQL关键字 |
含义 |
NULL | 数据列可包含NULL值 |
NOT NULL | 数据列不允许包含NULL值 |
DEFAULT xxx | 默认值,如果插入记录的时候没有指定值,将取这个默认值 |
PRIMARY KEY | 主键 |
AUTO_INCREMENT | 递增,如果插入记录的时候没有指定值,则在上一条记录的值上加1,仅适用于整数类型 |
UNSIGNED | 无符号 |
CHARACTER SET name | 指定一个字符集 |
MySQL【第三篇】数据类型的更多相关文章
- 解剖SQLSERVER 第三篇 数据类型的实现(译)
解剖SQLSERVER 第三篇 数据类型的实现(译) http://improve.dk/implementing-data-types-in-orcamdf/ 实现对SQLSERVER数据类型的解 ...
- Mysql的三种数据类型
Mysql的三种数据类型 1.数值类型 2.日期和时间类型 3.字符串类型 00x1 [数值类型] 00x2 [日期和时间类型] 00x3 [字符串类型]
- mysql第三篇:表操作
第三篇:表操作 一.什么是表 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 二.创建表 语法 CREATE TABLE 表名( 字段名1 类型 ...
- MySQL 第三篇:表操作
一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 详见:http://www.cnblogs.com/moyand/p/9020698.html 二 表介绍 表相当于文 ...
- 详解MySQL第三篇—DCL语句
DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句.这些语句定义了数据库.表.字段.用户的访问权限和安全级别.主要的语句关键字包括 g ...
- Mysql优化(出自官方文档) - 第三篇
目录 Mysql优化(出自官方文档) - 第三篇 1 Multi-Range Read Optimization(MRR) 2 Block Nested-Loop(BNL) and Batched K ...
- MySQL之查询篇(三)
一:查询 1.创建数据库,数据表 -- 创建数据库 create database python_test_1 charset=utf8; -- 使用数据库 use python_test_1; -- ...
- 学习mysql语法--基础篇(一)
前 言 mysql mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据. 本篇学习主要有两个部分: 一.创建用户,创建数据库,给 ...
- 小白两篇博客熟练操作MySQL 之 第二篇
小白两篇博客熟练操作MySQL 之 第二篇 一. 视图 视图是一个虚拟表,其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用名称即可获取结果集, 并可以将其当做表来使用. s ...
- mysql第四篇:数据操作之多表查询
mysql第四篇:数据操作之多表查询 一.多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment ...
随机推荐
- java中遍历List中的map问题
List list = new ArrayList();Map map = null; while (rs.next()) { map = new HashMap(); map.put("f ...
- Android 图片从网页中获取并动态加载到listview中
实现功能: 效果图: 代码:这里
- Java 输入流读取文本文件换行符问题
一问题 在学习流编程的过程中,我遇到了一下问题.首先来看一下我写的java源程序: package StreamLearn; import java.io.*; public class TestFi ...
- Java-Swing嵌入浏览器(二)
这是qtjambi利用webview来做嵌入式浏览器,下面是我的工程目录. 运行效果如下图: 代码相关: package qtBowers; import com.trolltech.qt.core. ...
- Oracle系列之游标
涉及到表的处理请参看原表结构与数据 Oracle建表插数据等等 游标: 1.目的 解决“ select * ”返回空.多行记录问题 但凡select,就可能多行结果集,也就需要用游标 2.原理 多行 ...
- HDU-5347 MZL's chemistry
http://acm.hdu.edu.cn/showproblem.php?pid=5347 MZL's chemistry Time Limit: 2000/1000 MS (Java/Others ...
- opencv+树莓PI的基于HOG特征的行人检测
树莓PI远程控制摄像头请参考前文:http://www.cnblogs.com/yuliyang/p/3561209.html 参考:http://answers.opencv.org/questio ...
- 搭建hdfs服务器集群的搭建+trash
完全分布式搭建需要三台机器:node1.node2和node3 搭建时间之前首先要保持时间一致:date ntpdateyum install ntpdatentpdate -u ntp.sjtu.e ...
- 洛谷P1238 走迷宫
洛谷1238 走迷宫 题目描述 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点.结束点(起始点和结束点都是用两个 ...
- 伪分布配置完成启动jobtracker和tasktracker没有启动
检查logs目录下的hadoop-root-jobtracker日志文件 2014-02-26 19:56:06,782 FATAL org.apache.hadoop.mapred.JobTrack ...