• DDL-常见的数据类型


    分为三大类
    数值型:
      整形
      小数:
        定点数
        浮点数(浮点型)
    字符型:
        较短的文本:char varchar
        较长的文本:text blob(较长的二进制数据:图片)
    日期型:

    1.整形

    特点:

    ①列名后的类型默认是有符号的,无符号需要追加 unsigned(安set)
    ②插入的数值超出 报异常 1264 - Out of range value for column
    ③不设置长度会有默认的长度
      长度是显示结果中的最大宽度,不够宽度在左边用0填充,
      但是,没有关键字 zerofill 就不会显示出0,默认宽度无效显示不出来0。
      如果,有关键字 zerofill 类型默认的就会变成无符号,不支持负数 unsigned 就没有意义了。

    ④长度规定不了范围,范围是由类型决定的。长度决定的是显示结果的样子

    #1.设置有符号、无符号
    CREATE TABLE tab_int(
    t1 INT ZEROFILL,
    t2 INT ZEROFILL
    );
    
    #查看表的结构
    DESC tab_int;
    
    #插入数据
    #添加值的时候可以省略字段名,值的顺序和列的顺序一一对应
    INSERT INTO tab_int
    VALUES(-132);
    INSERT INTO tab_int
    VALUES(-13256,-123);
    INSERT INTO tab_int
    VALUES(123,123);
    
    #删除表
    DROP TABLE IF EXISTS tab_int;
    
    SELECT *
    FROM tab_int

    2.小数

    浮点型  字节
    float(M,D)  4
    double(M,D)  8

           
       
     
    精度高无限接近真实的值

    定点型 字节 范围
    dec(M,D) M+2  最大取值和double相同,精度比double要精确

              
          

      decimal可以简写为dec

    特点:

      ①M和D。M小数位数+整数位数的=总位数,D是小数的位数

      ②M和D可以省略

        decimal  M默认值:10  D的默认值:0。超过了就会报错

        float和double,会根据插入的数值的精度来决定精度

      ③定点型的精度较高,如果要求插入的精度较高(货币运算...)优先考虑
      ④其他的用float和double,为了节省空间float够用就用float

    原则:

    所选的类型越简单越好,能保存数值的类型越小越好

    #创建表
    CREATE TABLE tab_float(
    f1 FLOAT(5,2),
    f2 DOUBLE(5,2),
    f3 DECIMAL(5,2)
    );
    
    #测试表
    INSERT INTO tab_float
    VALUES(123.4523,123.4523,123.4523);
    
    #查询
    SELECT * FROM tab_float
    #每列下面各一个123.45
    DESC tab_float;
    
    #测试表
    INSERT INTO tab_float
    VALUES(123.456,123.456,123.456);
    
    #查询
    SELECT * FROM tab_float
    #每列下面各一个123.46,结果四舍五入
    #> Affected rows: 1出现一个警告
    
    #测试表
    INSERT INTO tab_float
    VALUES(1523.4,1523.4,1523.4);
    #报错> 1264 - Out of range value 超出数值范围
    
    #删除表
    DROP TABLE tab_float;
    
    #创建表
    CREATE TABLE tab_float(
    f1 FLOAT,
    f2 DOUBLE,
    f3 DECIMAL
    );
    #测试表
    INSERT INTO tab_float
    VALUES(123.4523,123.4523,123.4523);
    #> Affected rows: 1一列出错
    
    #查询
    SELECT * FROM tab_float
    #查看表的结构
    DESC tab_float;

    3.字符型(串数据:文本型、二进制)

     

    较短的文本  最多字符数 特点 空间耗费  效率
    char(M)  固定长度的字符 比较耗费
    varchar(M)  可变长度的字符 比较节省

              

                  


                  


    ①字符数:一个a也是一个字符,一个汉字也是一个字符

    ②char的M可以省略,默认:1。固定长度的字符:类型后的固定长度,用不用都开那么多空间
    varchar的M不能省略。可变长度的字符:按数据长度,开空间

    ③固定长度例如:
    男,女存储用char
    存储姓名用varchar

    较长的文本
    text

    较短的二进制数

    binary
    varbinary

    较长的二进制
    blob

    放入一个有值的列表,插入的数据只能为其中一个

    enum用于保存枚举(一次只能选一个成员)

     set用于保存集合(一次能选多个成员)

    #enum枚举(男女,季节)
    CREATE TABLE tab_char(
    c1 ENUM('a','b','c')
    )
    
    #插入数据
    INSERT INTO tab_char 
    VALUES('a');
    INSERT INTO tab_char 
    VALUES('b');
    INSERT INTO tab_char 
    VALUES('c');
    INSERT INTO tab_char 
    VALUES('M');
    INSERT INTO tab_char 
    VALUES('A');
    
    #清空表中的数据
    TRUNCATE TABLE tab_char
    
    #
    SELECT *
    FROM tab_char
    
    #set集合()
    CREATE TABLE tab_set(
    s1 SET('a','b','c','d')
    )
    
    #插入数据
    INSERT INTO tab_set 
    VALUES('a');
    INSERT INTO tab_set 
    VALUES('a,b');
    INSERT INTO tab_set 
    VALUES('a,c,d');
    #MySQL不区分大小写

    4.日期型

    要求:字符和日期型要加单引号,数值型不用加

    单一存储 最小值 最大值 字节
    date只能保存:年-月-日 1000-01-01 9999-12-31 4
    time只能保存:时间 -838:59:59 838:59:59 3
    year只能保存:年份 1901 2155 1

     

    既有日期又有时间 最小值 最大值 字节
    datetime:年-月-日 时间 1000-01-01 00:00:00 9999-12-31 23:59:59 8
    timestamp:年月日时间 19700101080001 2038年的某个时刻 4

    timestamp时间戳

    特点
    ①datetime:不受时区影响,如果直插入年,默认提供时间
    只能反映出插入时,当时的时区

    ②timestamp:受时区影响
    更加接近当前时区的时间
    受到当地的:实际时区、MySQL版本、SQLMode(语法模式)的影响

    #创建表
    CREATE TABLE tab_date(
    t1 datetime,
    t2 TIMESTAMP
    )
    #插入数据
    INSERT INTO tab_date
    VALUES(now(),now());
    #查看
    SELECT *
    FROM tab_date
    
    #查看时区
    SHOW VARIABLES LIKE 'time_zone';
    
    #设置时区
    SET time_zone='+8:00';

      

  • 相关阅读:
    08.net网站开发(前端):5.jQuery
    weblogic的ejb远程调用
    UVa 10131: Is Bigger Smarter?
    Qt5 FOR WINCE7, Visual Studio 2008环境的搭建
    Web常见安全漏洞原理及防范-学习笔记
    【转载】Spark学习 & 机器学习
    公司hadoop客户端试用
    Zen of Python(Python的19条哲学)
    【转载】GitHub中国区前100名到底是什么样的人
    【转载】Spark学习——入门
  • 原文地址:https://www.cnblogs.com/rijiyuelei/p/12380547.html
Copyright © 2020-2023  润新知