一、数据类型

  

  二、整型类型


  tinyInt:
  1个字节:-128-127(有符号)

  是否有符号,可以定义时,使用unsign标识,表示无符号的,不写表示有符号的
  Create table student(
  stu_no int,
  stu_age tinyInt unsigned 
  );

  insert into tbl_int values(255,127);
  insert into tbl_int values(0,128);

  定义显示宽度
  通过规定数据的显示宽度,达到统一显示的目的类型(M)M表示显示的最小宽度是多少?
  需要使用前导零填充到达目的。称之为zerofill

  alter table tbl_int add c tinyint(2) zerofill; //在表中c字段数值显示宽度自小显示两位,数值不足 
  两位前面补0,超过两位的数值不受影响。

  insert into tbl_int values(0,127,1);
  insert into tbl_int values(0,127,9);
  insert into tbl_int values(0,127,10);
  insert into tbl_int values(0,127,123);

二、浮点类型

  +-123.456;
  0.123456 * 10^3
  0.123456789 * 10^3

  create table num_2(
  a float,
  b double
  );

  insert into num_2 values(1234567890.0123456789,1234567890.0123456789);
  select * from num_2;
  结果:
  1234570000,1234567890.0123458

  float 类型 默认精度位数在6位左右,取决于操作系统
  double 类型默认精度位数在16位左右,取决于操作系统。

2.1 浮点类型

  都支持控制数值的范围。
  Type(M,D)
  M表示所有的数值位数(不包括小数点和符号)
  D表示允许的小数位数

  create table num_3(
  a float(5,2),
  b double (8,3)
  );
  insert into num_2 values(567.12,1234.567);
  insert into num_2 values(1567.12,123456.5);
  123456.5 看上去总数和小数位数都没有超过,但是确定M,D时,已经确定整数的位数
  5,2
  -999.99 到 999.99
  8,3
  -99999.999 到 99999.999

  浮点数支持科学技术法
  1.234 * 10^3 == 1.23E3
  insert into num_2 values(1.23E3,456.7E2);

2.2 定点数类型
  定点数:小数点固定,小数位数不固定。浮点数的小数点不固定。
  Decimal(M,D)
  M总位数
  D小数位数。(范围存在)
  M默认为10,D默认为0

  create table num_4(
  send_money decimal(10,2)
  );

  insert into num_4 values(1234.56);
  结果:1234.56
  insert into num_4 values(1234.567);
  结果为1234.57 四舍五入把最后一位7给舍掉了。

  不会像单精度和双精度丢失精度。

  小数支持zerofill
  alter table num_4 money decimal(10,2) zerofill;
  insert into num_4 values(1234.56,1234,56);

  支持无符号
  unsigned

  三、日期时间类型

四、DateTime类型
  年份月日时分秒 Datetime 范围:9999-12-31 23:59:59
  年月日 Date
  时间戳 Timestamp 存储是整型,表示时,日期类型。范围:0-21多亿,到2038-01-19 03:14:07

  create table dt_1(
  a datetime,
  b timestamp
  );
  处理形式一样,表现形式是不一样的!

  insert into dt_1 values('2013-04-16 11:50:23','2013-04-16 11:50:25');
  insert into dt_1 values('2038-01-19 03:14:07','2038-01-19 03:14:07');
  insert into dt_1 values('2038-01-19 03:14:10','2038-01-19 03:14:10');

  检索列时,+0可以检索到时间戳。
  select a,b+0 from dt_1;
  结果:
  2013-04-16 11:50:23,20130416115025

  支持任意分割符日期
  insert into dt_1 values('20380119031407','20380119031407')
  insert into dt_1 values('2038:01:19 03:14:07','20380119031407')

  但是如果出现歧义,但是不建议使用特殊的分隔符,会导致逻辑不清晰。
  insert into dt_1 values('20:12:19','20380119031407') 结果:2020-12-19
  insert into dt_1 values('89:12:19','20380119031407') 
  支持两位年份:
  70-69 1970 -2069
  70-99 19xx
  0-69 20xx年
  不建议使用。

  insert into dt_1 values(0,0);
  结果为 0000-00-00 00:00:00(通常表示整个月),0
  支持0值,表示当前没有规定,2013-04-0表示4月整个月。(逻辑想法)

  五、Time类型
  表示意义:
  1、一天中的时间
  2、两个时间点的间隔时,可以使用天来表示。格式:
  D HH:MM:SS
  D天

  create table t_1(
  ago_time
  );

  insert into t_1 values('23:12:11');
  insert into t_1 values('231211');
  insert into t_1 values('5 12:34:11');

  六、Year类型
  create table y_1(
  `begin` year
  );

  此事日期的范围,就不是1000到9999
  而是1901到2155一个字节表示

  insert into y_1 values(1985);

七、字符串类型

  char(M):固定长度

  varchar(M):可变长度

  M:允许的字符串的长度
  M在varchar中表示允许的最大长度
  char表示严格限定的长度

  M表示的是字符数,而不是字节数。但是,总的长度的使用是按照字节计算的。

  create table s_1(
  a char(18),
  b varchar(18)
  );

  create table s_2(
  a varchar(65535)
  );

  create table s_3(
  a varchar(65535)
  )charater set gbk;

  create table s_4(
  a varchar(65535)
  )charater set utf8;

  注意,字段最大长度,除了类型本身限制之外,记录的总长度也受限制

  create table s_2(
  a varchar(21845)
  )charater set utf8;

  create table s_2(
  a varchar(21844)
  )charater set utf8;

  create table s_3(
  a varchar(65532) not null
  )charater set set latin1;

  create table s_4(
  a varchar(65532) 
  )charater set set latin1;

  create table s_5(
  a varchar(65533) 
  )charater set set latin1;

  create table s_5(
  a varchar(65533) not null
  )charater set set latin1;

  真实的varchar的长度:
  总长度:65535,
  varchar特点,当类型数据超过255个字符时,采购2个字节表示长度。
  65535-2=65535
  整条记录,需要一个额外的字节,用于保存当前的null值
  除非所有的字段都不是null,这个字节才能省略

  create table s_5(
  a varchar(65532) not null,
  b tinyint not null
  )charater set set latin1;

  存在null,都是使用统一的一个字节来表示。而不是每个字节一个字段。

  create table s_7(
  a text,
  b text
  ) character set latin1;

  Text 
  2^16
  文本,有很多兄弟类型
  Tinytext longtext

  八、枚举类型
  create table s_8(
  gender enum('female','male')
  );
  insert into s_8 values('male');
  insert into s_8 values('female');
  insert into s_8 values('other');

  select gender+0 from s_8;

  枚举类型,最大允许65535个枚举
  数据库做优化时,尽量都用枚举类型

  九、集合类型
  create table s_9(
  hobby set('basket','football','pingpang')
  );
  insert into s_9 values('basket,football');
  select hobby+0 from s_9;
  insert into s_9 values('pingpang,football');
  select hobby+0 from s_9;
  最多可以表示出64个状态。
  表示的字符串长度不一样。

MySQL数据类型(四)的更多相关文章

  1. 第四章 MySQL数据类型和运算符

    5.1 MySQL数据类型介绍 一.数据类型简介 (1) 数据表由多列字段构成,每一个字段指定了不同的数据类型,指定了数据类型之后,也就决定了向字段插入的数据内容 (2) 不同的数据类型也决定了 My ...

  2. 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)

    一.初识MySQL数据库 ###<1>数据库概述     1. 数据库         长期存储在计算机内的,由组织的可共享的数据集合         存储数据的仓库         文件 ...

  3. MySQL数据类型 int(M) 表示什么意思?详解mysql int类型的长度值问题

    MySQL 数据类型中的 integer types 有点奇怪.你可能会见到诸如:int(3).int(4).int(8) 之类的 int 数据类型.刚接触 MySQL 的时候,我还以为 int(3) ...

  4. MySQL数据类型——数值类型

    1.1.1 整型 整型 占用字节 范围 范围 tinyint 1 -27~27-1 -128~127 smallint 2 -215~215-1 -32768~32767 mediumint 3 -2 ...

  5. MySQL数据类型--日期时间

    一.博客前言 自接触学习MySQL已有一段时间了,对于MySQL的基础知识还是略懂略懂的.在这一路学习过来,每次不管看书还是网上看的资料,对于MySQL数据类型中的时间日期类型总是一扫而过,不曾停下来 ...

  6. MySQL优化四(优化表结构)

    body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...

  7. 谈谈如何选择合适的MySQL数据类型

    MySQL数据类型选择 一 .选择原则 更小的通常更好:一般情况下选择可以正确存储数据的最小数据类型.越小的数据类型通常更快,占用磁盘,内存和CPU缓存更小. 简单就好:简单的数据类型的操作通常需要更 ...

  8. MySQL(数据类型和完整约束)

    MySQL数据类型 MySQL支持多种数据类型,主要有数值类型.日期/时间类型和字符串类型. 1.数值数据类型 包括整数类型TINYINT.SMALLINT.MEDIUMINT.INT.BIGINT. ...

  9. MySQL数据类型以及基本使用详解

    MySQL数据类型以及基本使用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL服务器的主要组件 我们知道MySQL的主要组件主要是由服务端(mysqld)和客户端 ...

  10. day40 python MySQL【四】 之 【索引】【视图】【触发器】【存储过程】【函数】

    MySQL[四] 之 [索引][视图][触发器][存储过程][函数]   1.索引 索引相当于图书的目录,可以帮助用户快速的找到需要的内容. 数据库利用各种各样的快速定位技术,能够大大提高查询效率.特 ...

随机推荐

  1. PacBio下机数据解读

    今天被人问起如何看懂三代的下机数据,虽然解决了别人的问题,但感觉自己还是没有搞透. 基本的目录结构: |-- HG002new_O1l_BP_P6_021315b_MB_100pM | |-- D01 ...

  2. Windows CPU占用率过高

    今天调试程序,发现Windows7的CPU占用率一直为25%左右,如下图所示.四核25%,换成单核那就是100%的占用率了! 上图进入"进程"页面,单击"CPU" ...

  3. Unity3D 5.1烘培 操作

    http://blog.csdn.net/asd237241291/article/details/48056575 原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 Unity3D引擎技 ...

  4. bootstrap轮播图--兼容IE7

    <!DOCTYPE html> <html> <head> <title>Bootstrap轮播</title> <meta char ...

  5. 3.5 EF Code First总结

    1. 主键约定 属性名为“ID”(不区分大小写)或类名的后面跟有“ID”. 2. 关系约定 模型之间的关系,EF根据针对类型定义的导航属性来推断关系. 3. 连接字符串约定 (1)默认配置 如果连接字 ...

  6. jmeter生成报告指示板

    JMeter支持仪表板图表和报告生成 数据从一个测试计划. 这一章描述了如何配置和使用生成器. 概述 JMeter的仪表板生成器是一个模块化的扩展. 它的缺省行为是读取和处理样本 CSV文件生成HTM ...

  7. PLI与Pillow

    PIL概念 XXXXX 注意 PIL不兼容setuptools.   Pillow概念 Pillow(PIL fork)是用来处理raster图像的Python图像库,即像素数据的矩阵. 查阅PIL的 ...

  8. css3制作滚动按钮

    1,中间圆点用到css3的gradient属性 2,运动用到css3的transition属性 3,需要写各个浏览器的兼容 代码如下 <!DOCTYPE html> <html la ...

  9. js 时间处理

    1.格式化时间 function GetDateTimeFormatter(value) {        if (value == undefined) {            return &q ...

  10. maven install 时提示“程序包 javax.crypto不存在”

    但是javax.crypto是在jdk的jre\lib目录下的 解决方案: <compilerArguments> <bootclasspath>${java.home}/li ...