mysql之数据类型

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 一、概述:    所谓建表,就是声明列的过程:     数据是以文件的形式放在硬盘中(也有放在内存里的)      列:不同的列类型占的空间不一样      选列的原则:够用又不浪费; 二、mysql的数据类型:    整形:Tinyint(1字节)  Smallint(2个字节)  M...

一、概述: 

  所谓建表,就是声明列的过程:

    数据是以文件的形式放在硬盘中(也有放在内存里的)

     列:不同的列类型占的空间不一样

     选列的原则:够用又不浪费

二、mysql的数据类型:

   整形:Tinyint(1字节)  Smallint(2个字节)  Mediumint(3个字节)  int(4个字节)  bigint(8个字节);

   Tinyint在mysql默认是有符号的(-128----127);

    Tinyint(M) unsigned zerofill
    unsigned : 是无符号,影响存储范围;
    M代表宽度,(必须配合zerofill时才有意义)
    Zerofill 零填充,如果某列是zerofill,默认是unsigned(类似00005);

    insert into classs (name, age4)values ('zhaoliu', 9);
    列可以声明默认值,而且推荐声明默认值: NOT NULL default 0

    alter table class add age5 tinyint not null default 0;

  小数型/浮点型定点型:
    Float(M, D)
    decimal(M, D)
          //M:精度(总位数,不包含点) D:标度(小数位)

  create table goods(
    name varchar(10) not null default '',
    price float(6, 2) not null default 0.00) //9999.99, -9999.99
    //price float(6, 2) unsigned not null default 0.00) //0-9999.99,
  charset utf8;

  inert into goods
  (name, price)
  values
  ('跑步机', ‘688,896’)
              //记录在表中price的值为688.90

  alter table goods add bigprice float(9.2) not null default 0.0;

  alter table goods add deciprice decimal(9.2) not null default 0.0;

  alter table goods (name, bigprice, deciprice)
  values
  ('自行车', 1234567.23, 1234567.23);

  字符型 

    char 定长字符串 char(M),M代表宽度,即可容纳的字符数;    Varchar 变长字符串 Varchar(M),M代表宽度,即可容纳的字符数;

  区别:
    char定长: M个字符如果存的小于M个字符,实占M个字符;利用率是100%
    varchar变长: M个字符如果存的小于M个字符,假设为N,实占N个字符;实占的字符需要记录消耗1--2个字符;实际占有(N+1~2)个字符;

  char 与varchar选择原则:
    1、空间利用效率;
    2、速度;
  示例:  

    四字成语表,char(4);
    个人微博, varchar(140);

    用户名:char,牺牲空间,提供速度;

  text 文本串,比较大段文本,速度稍慢;
    注意:text不要加默认值,加了也不生效;


  create table stu(
    name char(8) not null default '',
    waihao varchar(16) not null default ''
    )charset utf8; //name最多容纳8个utf8字符;

  insert into stu(name, waihao)
    values
    ('zhangxiaosan', 'saner'); //拆入不进去,zhangxiaosan太长了;

  insert into stu(name, waihao)
    values
    ('zhangsan', 'saner');

  insert into stu(name, waihao)
    values
    ('默罕默德买买提',‘异步拉欣’);

  select concat (name, '!'), concat(waihao, '!') from stu;

  alter table std add info text not null default '';
    //执行错误;不能默认值;

三、mysql中的日期时间类型:

    //年---------------------year
    //年-月-日---------------date
    //00:00:00-------------time
    //年-月-日 hh:nn:ss----datatime
      Year类型:1个字节,1901年到2155年;【0000年表示错误选择】
    如果输入2位,‘00-69’表示2000---2069;    ‘70-99’表示1970---1999;
    如果麻烦,输入的时候输入4位即可;

  Date类型:典型格式:1992-08-12 日期范围:1000-01-01 ---9999-12-31;

  time类型:典型格式:hh:mm:ss

  Datatime类型:典型格式:'1989-06-09 14:23:02'
      范围:1000-01-01 00:00:00 ---9999-12-31 23:59:59

  注意:
      在开发中,很少用日期时间类型来表示一个需要的精确到秒
    原因:虽然日期时间类型能精确到秒,而且方便查看;
    而是用时间戳:1970-01-01 00:00:00到当前的秒数;

  create table t2(
    gender enum('男',‘女’)
    )charset utf8;

  insert into t2 values('男');
  insert into t2 values('春哥'); //error

  create table user(
    name varchar(20) not null default '',
    regtime datetime not null default '1000-01-01 00:00:00')
    charset utf8;

 

  create table t( tm time);

  insert into t values ('14:33:56');

   create table y(

    ya year(4)
  )

  insert into y  values ('1901');

    insert into y values('2280'); //error

  insert into y values('97'); //存入了1997

  insert into y values('12'); //存入的是2012

  create table d
    title varchar(30),da data)
  charset utf8;

  insert into d values
    ('开国大典', ‘1949-10-01’);

  insert into d values
    ('世界末日', ‘2012-02-30’); //输入不合法

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
存储 关系型数据库 MySQL
MySQL数据库的数据类型、语法和高级查询
MySQL数据库的数据类型、语法和高级查询
53 0
|
4月前
|
存储 关系型数据库 MySQL
MySQL数据类型详解及实例应用
MySQL数据类型详解及实例应用
118 4
|
4月前
|
SQL 存储 关系型数据库
RDS for MySQL的SQL分类与数据类型
小明需在MySQL中管理商品信息,使用SQL完成业务操作。SQL分为DQL(查询)、DML(增删改)、DDL(定义)、DCL(权限控制)和TCL(事务)五大类。DDL用于创建、修改和删除数据库结构,DML处理数据,DCL控制权限,TCL管理事务,DQL则用于查询数据。MySQL有多种数据类型,如数值型(整数、小数)、日期型和字符串型等,选择合适的数据类型是高效开发的关键。
52 0
|
1月前
|
关系型数据库 MySQL Linux
数据类型和运算符(MySQL服务器的安装,MySQL客户端,数据类型,运算符,MySQL的语法规范)
无论是对于初学者还是有经验的开发者,了解MySQL的安装、客户端使用、数据类型、运算符和语法规范都是至关重要的。这不仅有助于高效地管理和查询数据,而且对于设计和实现数据库解决方案来说是基础工作。通过深入学习和实践这些知识,您可以更好地发挥MySQL数据库的强大功能。
22 2
|
20天前
|
存储 关系型数据库 MySQL
MySQL 中的 BLOB 数据类型深入解析
【8月更文挑战第31天】
65 0
|
20天前
|
存储 关系型数据库 MySQL
|
20天前
|
存储 XML 关系型数据库
深入理解MySQL中的BLOB和TEXT数据类型
【8月更文挑战第31天】
105 0
|
21天前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
92 0
|
2月前
|
存储 SQL 关系型数据库
MySQL设计规约问题之存储状态、性别等信息时,应该使用哪种数据类型
MySQL设计规约问题之存储状态、性别等信息时,应该使用哪种数据类型
|
3月前
|
SQL 存储 关系型数据库
MySQL数据库案例实战教程:数据类型、语法与高级查询详解
MySQL数据库案例实战教程:数据类型、语法与高级查询详解
54 3

热门文章

最新文章