一、数据类型

  

  二、整型类型


  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. 机器学习与R语言

    此书网上有英文电子版:Machine Learning with R - Second Edition [eBook].pdf(附带源码) 评价本书:入门级的好书,介绍了多种机器学习方法,全部用R相关 ...

  2. 【转】APP的缓存文件到底应该存在哪?看完这篇文章你应该就自己清楚了

    只要是需要进行联网获取数据的APP,那么不管是版本更新,还是图片缓存,都会在本地产生缓存文件.那么,这些缓存文件到底放在什地方合适呢?系统有没有给我们提供建议的缓存位置呢?不同的缓存位置有什么不同呢? ...

  3. XP系统电脑带安卓手机上网教程(无需adhoc补丁)

    XP系统电脑带安卓手机上网教程(无需adhoc补丁) WIN7系统可以虚拟wifi热点,安卓手机连上这个热点就能上网.XP系统虚拟出来的wifi热点是adhoc形式的,原生的安卓系统并不支持adhoc ...

  4. win7下载

    正式版WIN7的64位旗舰版 http://pan.baidu.com/share/link?shareid=60038&uk=3960800092 下面是正式win8Windows 8 64 ...

  5. js简单模仿队列

    window.meng = window.meng || {}; (function () { var items = []; meng.queue = { /** * * @param {Funct ...

  6. 鼠标经过容器放大--css3

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  7. selenium+python笔记5

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 登陆126邮箱 """ f ...

  8. sql server多表数据批量更新

    update wset w.TagCount=x.TagCountfrom (select ItemID,COUNT(*) as TagCount from r where IsValid=1 gro ...

  9. Qt之属性系统

    简述 Qt提供一个类似于其它编译器供应商提供的复杂属性系统(Property System).然而,作为一个编译器和平台无关的库,Qt不能够依赖于那些非标准的编译器特性,比如:__property或者 ...

  10. Scout YYF I(POJ 3744)

    Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5565   Accepted: 1553 Descr ...