sql之数据类型

sql之数据类型

字符与字节区别

  • 一个字符相当于两个字节,一个字节8位

什么叫精度

  • 精度是指数的总长度

精度对应可存储字节数

精度存储字节数
1-95
10-199
20-2813
29-3817

例如精度P=22时,numeric(22,5)是13字节,P=8时,numeric(8,3)是5字节

数据类型

  • Character(n):字符/字符串,即char

  • char:

    • 长度不可变,固定2个字节
    • 对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;
  • varchar(n)

    • 长度可变
    • 对每个英文字符占用2个字节,汉字也占用2个字节。
    • n必须介于1-8000之间数字
  • BOOLEAN

    • 值为True或者False
  • INT:普通int

    • 2^31 到 2^31 – 1的整型数据(所有数字)。存储大小为4个字节。(32位)
  • BIGINT:

    • -2^63 到 2^63-1的整型数据(所有数字)。存储大小为8个字节。(64位)
  • SMALLINT:

    • -2^15 到 2^15 – 1 的整型数据。存储大小为 2 个字节。 (16位)
  • TINYINT:

    • -2^7到 2^7 – 1 的整型数据。存储大小为 1个字节。 (8位)
  • DECIMAL(p,s)

    • p是指数的总长度

    • s是指小数点的位数

    • 最大精度为38

    • 举例

      mysql> CREATE TABLE IF NOT EXISTS `decimal_test`(
      -> num DECIMAL(5,3)
      -> );
      Query OK, 0 rows affected (0.00 sec)
      
      mysql> INSERT INTO `decimal_test`(num) VALUES(1.2345);
      Query OK, 1 row affected, 1 warning (0.00 sec)
      
      mysql> INSERT INTO `decimal_test`(num) VALUES(12.345);
      Query OK, 1 row affected (0.00 sec)
      
      mysql> INSERT INTO `decimal_test`(num) VALUES(123.45);
      Query OK, 1 row affected, 1 warning (0.00 sec)
      
      mysql> INSERT INTO `decimal_test`(num) VALUES(1.2);
      Query OK, 1 row affected (0.00 sec)
      
      mysql> SELECT * FROM `decimal_test`;
      +--------+
      | num |
      +--------+
      | 1.235 | 
      | 12.345 |
      | 99.999 | 没有正常保存
      | 1.200 | 末尾未满补0
      +--------+
      

      如果小数位超过,则四舍五入

  • NUMERIC(p,s)

    • p是指数的总长度
    • s是指小数点的位数
    • 它与DECIMAL同义
    • 最大精度为38
  • DATE与DATETime类似

    create table if not exists date1(
       d date not null
    
    )
    insert into date1 (d) value('2010-01-02')
    
    create table if not exists date2(
       d datetime not null
    
    )
    insert into date2 (d) value('2010-01-02')
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值