zoukankan      html  css  js  c++  java
  • 表的数据类型

    数值类型

    MySQL支持所有标准SQL数值数据类型。
    这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。
    关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。
    MySQL支持的整数类型有TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。
    对于小数的表示,MYSQL分为两种方式:浮点数和定点数。浮点数包括float(单精度)和double(双精度),而定点数只有decimal一种,在mysql中以字符串的形式存放,比浮点数更精确,适合用来表示货币等精度高的数据。
    BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。
    

    int与tinyint 整数

    写超过范围的 以边界最大最小的表示 但不报错

    设置严格模式报错

    unsigned 设置无符号

    create table int_t (
          ti tinyint,     # 范围****(-128,127)
          i  int,        # 范围*****(-2147483648,2147483647)
          tiun tinyint unsigned,  #无符号(0,255)
          iun int unsigned #无符号(0,4294967295)
     );
    

    float浮点数

    float   保留小数点后5位 # *****单精度
    double  保留好多位 但精度还是不高
    float(5,2),# 5是总位数 2是小数点后2位 在精确位四舍五入 输入12345 确是999.99 
    double(5,2)# 在精确位四舍五入
    

    实列

    drop database day01;
    create database day01;
    use day01;
    
    create table d1(
    f1 float,
    f2 double,
    f3 float(5,2),
    f4 double(5,2));
    
    insert into d1(f1,f2,f3,f4) values(
    1.1233456789,
    1.1233456789,
    1.1233456789,
    1.1233456789
    );
    
    desc d1;
    select * from d1;
    
    +---------+--------------+------+------+
    | f1      | f2           | f3   | f4   |
    +---------+--------------+------+------+
    | 1.12335 | 1.1233456789 | 1.12 | 1.12 |
    +---------+--------------+------+------+
    

    小数值

    decimal 默认取整
    decimal(30,20)#精确后20位
    

    实列

    drop database day01;
    create database day01;
    use day01;
    
    create table d1(
        f1 decimal,
        f2 decimal(30,20)
    );
    
    insert into d1(f1,f2) values(
    1.1233456789,
    1.1233456789
    );
    
    desc d1;
    select * from d1;
    +------+------------------------+
    | f1   | f2                     |
    +------+------------------------+
    |    1 | 1.12334567890000000000 |
    +------+------------------------+
    

    日期时间类型

    年月日时分秒

    内置函数  now() 获取当前时间
    datetime  打卡时间/日志/论坛博客类的评论文章/***** 年月日时分秒
    date      员工生日/入职日期/离职日期/开班时间   *****年月日
    time      上课时间/下课时间/规定上班时间    竞赛数据 时间
    year 年
    timestamp  2038年由于表示范围的问题,导致用的少了  # 不能为空,默认值是当前时间,在修改的时候同时更新时间(uppdet时)
        在timestamp后面加上NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP这个约束表示的范围更大,还能拥有timestamp的特点(不能为空,默认值是当前时间,在修改的时候同时更新时间(uppdet时)) 
    
    举例
    create table time_t2(
        dt datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  )
    

    添加时间数据

    年月日必须写全
    第一种数字添加
    insert into 表名 values(20180705112222);
    第二种字符串添加
    insert into 表名 values('2018-07-05 11:22:22');
    

    实列

    drop database day01;
    
    create database day01;
    
    use day01;
    create table d1(
    tim1 datetime,
    tim2 date,
    tim3 time,
    tim4 year
    );
    #第一种添加方式 now()函数会自动匹配
    insert into d1(tim1,tim2,tim3,tim4) values(now(),now(),now(),now());
    #第2种手动添加
    insert into d1(tim1,tim2,tim3,tim4) values('2018-07-05 11:22:22','2018-07-05 11:22:22','2018-07-05 11:22:22','2019');
    
    select * from d1;
    desc d1;
    
    +---------------------+------------+----------+------+
    | tim1                | tim2       | tim3     | tim4 |
    +---------------------+------------+----------+------+
    | 2019-08-30 09:43:05 | 2019-08-30 | 09:43:05 | 2019 |
    | 2018-07-05 11:22:22 | 2018-07-05 | 11:22:22 | 2019 |
    +---------------------+------------+----------+------+
    

    字符串类型

    char与varchar

    括号里面是字符不是字节

    char定长速度快占用空间大
    varchar变长速度相对慢占用空间小
    char    0-255字符    定长存储 存储速度更快 占用更多的空间  *****
        char(12)
        alex --> 'alex        ' --> 12的长度
    varchar 0-65535字节  变长存储 存储速度慢  占用的空间小  ****
        varchar(12)
        'alex' --> 'alex4' --> 5的长度
    
    
    
    评论 : varchar
    # 时间和空间
        # 时间换空间
        # 空间换时间
        
        
    LONGTEXT 0-4 294 967 295字节  极大文本数据
    

    实列

    create table ch_t(
        c char,
        c2 char(5),
        vc2 varchar(5)
    );
    
    insert into ch_t values(
    '1','2','3'
    );
    
    select * from ch_t;
    +------+------+------+
    | c    | c2   | vc2  |
    +------+------+------+
    | 1    | 2    | 3    |
    +------+------+------+
    

    enum单选set多选

    枚举 集合

    单选题,只能从有限的条件中选择
    多选题,从有限的条件中选
    乱写为空 如果要乱写报错 就设置约束
    多写多次只显示一次

    create database day01;
    use day01;
    
    create table a1(
        id int,
        name char(12),
        gender enum('男','女'),
        hobby set('吃','喝','玩','乐')
    );
    insert into a1 values 
    (1,'小强','男','吃,喝'),
    (2,'小久','男','吃,乐'),
    (3,'小三','男','吃,乐')
    ;
    
    desc a1;
    
    show create table a1;
    
    select * from a1;
    

    总结

    数值类型
    	int 范围大
    	tinyint 范围小
    	float浮点数 精度小 常用
    	decimal小数值 精度大 不常用
    时间日期类型
    	datetime年月日时分秒
        date年月日
        time时间
        year年	
    字符串类型
    	char定长速度快占用空间大  存储范围小
    	varchar变长速度相对慢占用空间小 存储范围大
    选择类型
        enum单选
        set多选
    

    设置严格模式

    设置严格模式:
        不支持对not null字段插入null值
        不支持对自增长字段插入”值
        不支持text字段有默认值
    
    直接在mysql中生效(重启失效):
    mysql>set sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
    
    配置文件添加(永久失效):
    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    
  • 相关阅读:
    龙井和碧螺春的功效与作用
    064 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 无参带返回值方法
    063 01 Android 零基础入门 01 Java基础语法 08 Java方法 01 无参无返回值方法
    062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用
    061 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 08 一维数组总结
    060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序
    059 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 06 增强型for循环
    058 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 05 案例:求数组元素的最大值
    057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和
    056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用
  • 原文地址:https://www.cnblogs.com/saoqiang/p/12386738.html
Copyright © 2011-2022 走看看