精华内容
下载资源
问答
  • 哪种数据类型必须由用户指定长度
    万次阅读 多人点赞
    2018-05-11 00:56:35

          了解Hive数据类型 ,是Hive编程的基础。使用hive建表,首先要明白hive常用的数据类型有哪些,可以存储哪些类型的数据。其实Hive支持关系型数据库中的大多数基本数据类型,且同时支持关系型数据库中少见的3种集合数类型(STRUCT,MAP,ARRAY)。然而学习技术最好的方式之一就是去查看官方文档。

          Hive关于数据类型官网地址Hive官网关于数据类型的介绍

    一.Hive数据类型与使用

         下面介绍的是基于hive v0.80版本之后的hive支持的数据类型,同关系型数据库一样,hive支持多种不同长度的整型和浮点型数据,同时支持布尔型,不定长度的字符串型(注意,这里的int,float,double等底层实现原理和java中底层实现一样,因为hive基于java开发的,底层是对java接口的实现,所以也会规定数据类型的内存占用空间。)

    1. 数值型(标注红色为常用的)

       在Hive里默认情况下,整数型为INT型,当数字大于INT型的范围时,会自动解释执行为BIGINT,或者直接用后缀进行说明100Y,100S,100L(对应为tinyint,smallint,bigint)

    类型支持范围
    TINYINT1-byte signed integer, from -128 to 127 ,范围太小,基本不用
    SMALLINT2-byte signed integer, from -32,768 to 32,767   基本也不用。
    INT/INTEGER4-byte signed integer, from -2,147,483,648 to 2,147,483,647   ,INTERGER是hive2.20中才开始有的,一般不用
    BIGINT8-byte signed integer, from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807  为int的补充使用
    FLOAT4-byte single precision floating point number,常用单精度浮点数3.14159
    DOUBLE8-byte double precision floating point number 双精度浮点,存储更大。3.114159
    DECIMAL

    1.hive.0.13.0才开始使用,Hive的小数型是基于Java BigDecimal做的, BigDecimal在java中用于表示任意精度的小数类型。所有常规数字运算(例如+, - ,*,/)和相关的UDFs(例如Floor,Ceil,Round等等)都使用和支持Decimal。

    2.可以将Decimal和其他数值型互相转换,且Decimal支持科学计数法和非科学计数法。因此,无论您的数据集是否包含如4.004E + 3(科学记数法)或4004(非科学记数法)或两者的组合的数据,可以使用Decimal。 
    3.从Hive 0.13开始,用户可以使用DECIMAL(precision, scale) 语法在创建表时来定义Decimal数据类型的precision和scale。 如果未指定precision,则默认为10。如果未指定scale,它将默认为0(无小数位)。

    decimal数值类型使用演示:

    1.decimal的使用decimal(precision, scale),前面是整数部分,后面是小数部分。
    整数部分如果没有定义,则默认长度为10,小数部分如果没有指定,则默认为0.
    如果超出长度则会截取,如下小数部位默认长度为0,被四舍五入截取了,整数部位进1。
    hive (fdm_sor)> select CAST(1234567891.523456 AS DECIMAL) from aaaa limit 1;  
    1234567892
    
    2.如果需要转换的数据长度超过decimal指定长度,则结果不会截取,直接为null值,尽管decimal最长可以存储长度为38位的小数。
    如下默认整数部分长度为10,现在需要转化的数据整数长度超过10,直接整个结果为NULL
    hive(fdm_sor)> select CAST(12345678910.523456 AS DECIMAL) from aaaa limit 1;
    NULL
    
    3.使用decimal将其他类型的数据转换成decimal,指定长度,超出部分四舍五入。
    hive (fdm_sor)> select CAST(123456789.1234567 AS DECIMAL(20,5)) from aaaa limit 1; 
    123456789.12346
    

    2.字符型的数据类型(标注红色为常用的)

    string与varchar,char的区别和联系

    1.varchar固定长度,使用时要指定长度.所以转换的时候有可能超出指定长度后,数据丢失,这点不如string
    hive (fdm_sor)> select CAST("ABCDEFGHICD" AS VARCHAR(10)) from aaaa limit 1; 
    ABCDEFGHIC
    
    2.varchar建表时,需要指定长度,否则报错。长度如果指定小了,数据插入会直接被截取长度。如下所示:
    hive (fdm_sor)> create table tmp_varchar(id varchar(10)) 
                  > ;
    
    hive (fdm_sor)> insert overwrite table tmp_varchar  
                  > select "123456789122" from aaaa;  
    tmp_varchar.id
    1234567891
    1234567891
    1234567891
    1234567891
    
    
    3.同理,char的使用也需要指定长度,只是char的长度比varchar小多了,这个两者的使用有点类似数据库
    CREATE TABLE foo (bar CHAR(10))
    
    4.一般来说能用string类型的尽量使用string类型。
    

    3.日期型数据类型

    类型使用说明
    TIMESTAMP1.始于Hive 0.8.0。用来表示UTC时间(时间标准时间)。提供了用于时区转换的便捷UDFs(to_utc_timestamp,from_utc_timestamp)。2. 所有现有的日期时间UDFs(月,日,年,小时等)都使用TIMESTAMP数据类型。其次TIMESTAP支持整型,浮点型,字符串型的数据。具体使用后面介绍实际开发中使用的也不是特别多。
    DATE始于Hive 0.12.0   DATE值描述特定的年/月/日,格式为YYYY-MM-DD。 例如,DATE’2013-01-01’。 日期类型没有时间组件。 Date类型支持的值范围是0000-01-01到9999-12-31,这取决于Java Date类型的原始支持。 
    Date types只能在Date, Timestamp, or String types之间转换。
    INTERVAL始于Hive 1.2.0,实际开发中不怎么用。
    ---1.使用timestamp创建日期类型的字段,可以存储浮点,整型,字符串类型的时间数据
    create table fdm_sor.tmp_aaaaa(
    a int,
    b bigint,
    c timestamp
    )
    --2.测试数据
    hive (fdm_sor)> insert overwrite  table fdm_sor.tmp_aaaaa   --存放字符串型时间
                  > select 1,2,"2019-05-22 21:23:34" from fdm_sor.tmp_aaaaa limit 3;
    hive (fdm_sor)> select * from fdm_sor.tmp_aaaaa;
    OK
    1	2	2019-05-22 21:23:34
    1	2	2019-05-22 21:23:34
    
    hive (fdm_sor)> insert overwrite  table fdm_sor.tmp_aaaaa  ---存放数值型数据
                  > select 3,4,12334324 from fdm_sor.tmp_aaaaa limit 2;
    hive (fdm_sor)> select * from fdm_sor.tmp_aaaaa;
    OK
    3	4	1970-01-01 11:25:34.324
    3	4	1970-01-01 11:25:34.324

    4.其他数据类型

    • BOOLEAN类型:TRUE or FALSE
    • BINARY类型:字节数组,类似数据库的varbinary。

    5复合数据类型,不常用 

    arraysARRAY(data_type)
    mapsMAP(primitive_type, data_type)
    structsSTRUCTcol_name : data_type [COMMENT col_comment], …)
    unionUNIONTYPE(data_type, data_type, …)

    二.Hive不同数据类型之间的转换

    1.同数据类型之间的转换

            hive底层是java实现开发的,hive的数据类型很多也跟java保持一致,所以对于同类型的数据类型进行转换时也遵循java的自动“向上转型”规则,即低类型的数据在和高类型的数据进行逻辑运算时,会隐式的自动转换成高类型的数据类型。然后再进行计算。比如1和1.23比较,会自动将1转换成1.0进行计算比较。

    2.不同数据类型的转换

         hive中不同数据类型的数据再进行比较运算时,需要用cast函数进行手动转换。

         cast函数使用:cast(valule as type),value是需要被转换的数据, AS是固定关键字,type是需要转换的类型

    >select 
    cast("1223" as double),
    cast("456.23" as int),
    cast("1.99" as int),
    cast("abc" as int) 
    from aaaa;
    >1223.0,	456,	1,    NULL

       注意:如上结果显示,cast的转换功能也不是万能的,必须是“存储的类型值”符合转换条件才能进行转换。否则是NULL值的结果。比如“abc”转换成double,很明显abc不是数值,所以转换失败,结果时NULL值。此外,如果使用cast将高类型的数据转换成低类型的数据,cast函数会直接截取,损失数据精度甚至得到错误结果。

    更多相关内容
  • 【Redis高手修炼之路】数据类型——Redis的5种数据类型 string、list、hash、set、zset这些数据类型你都会嘛?常用命令以及详细命令演示
    • 💂 个人主页: 陶然同学
    • 🤟 版权: 本文由【陶然同学】原创、在CSDN首发、需要转载请联系博主
    • 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦
    • 💅 想寻找共同成长的小伙伴,请点击【Java全栈开发社区

    目录

    1.Redis的5种数据类型

    2.字符串类型string

            2.1概述

            2.2常用命令

            2.3命令演示

            2.4执行效果

    3.哈希类型hash        

            3.1概述

            3.2常用命令

            3.3命令演示

    4.列表类型list

            4.1概述

            4.2常用命令

            4.3命令演示

    5.集合类型set

            5.1概述

            5.2常用命令

            5.3命令演示

    6.有序集合zset

            6.1概述

            6.2常用命令

            6.3命令演示

            6.4效果


    1.Redis的5种数据类型

    redis是一种高级的key-value的存储系统,其中value支持五种数据类型:

    Redis支持的键值数据类型

    string字符串类型

    hash表类型

    list 列表类型

    set 集合类型

    zset 有序集合类型

    1. 关于key的定义,注意如下几点:
    1. 不建议key名字太长,通常不超过1024,如果太长会影响查询的速度。
    2. 不建议太短,太短会降低可读性。
    3. 一般在公司,都有统一命名规范。

    2.字符串类型string

            2.1概述

    字符串类型是Redis中最为基础的数据存储类型,它在Redis中以二进制保存,没有编码和解码的过程。无论存入的是字符串、整数、浮点类型都会以字符串写入。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。这是以后最常用的数据类型。

            2.2常用命令

    命令

    行为

    set 键 值

    向redis数据库中添加1个字符串类型的键和值,返回OK表示添加成功。同名的会替换

    get 键

    从数据库中取出一个指定键的值,如果有返回值,如果没有返回nil

    del 键

    删除指定的键和值,如果删除成功,返回删除的个数。否则返回0

    setnx 键 值

    在指定的 key 不存在时,为 key 设置指定的值。
    设置成功,返回 1 。 设置失败,返回 0 。

            2.3命令演示

            需求:

    1. 添加一个键为company,值为itcast
    2. 再设置一个键为company,值为heima
    3. 得到company的元素
    4. 删除company元素
    5. 再次删除company看返回值是否相同
    6. 得到company看返回值是多少
    7. 设置键为job,值为programmer
    8. 再次设置job的值为code-farmer,查询job的值

            2.4执行效果

    3.哈希类型hash        

            3.1概述

    Redis中的Hash类型可以看成具String的键和String的值Map容器,每一个Hash可以存储40亿个键值对。

     所以该类型非常适合于存储对象的信息。如一个用户有姓名,密码,年龄等信息,则可以有username、password和age等键它的存储结构如下:

            3.2常用命令

    命令

    行为

    hset 键 字段 值

    向指定的键中添加一对hash类型的字段名和值

    hget 键 字段

    取出指定键的指定字段的值

    hmset 键 字段 值 字段 值

    mulitple,一次向某个键中设置多个字段名和值

    hmget 键 字段 字段

    一次从指定的键中得到多个字段的值

    hdel 键 字段 字段

    删除一个键中的一个或多个字段

    hgetall 键

    得到某个键所有的字段值

            3.3命令演示

    需求:

    创建hash类型的键为user,并且添加一个字段为username,值为newboy

    向user中添加字段为password,值为12345

    向user中添加字段为age,值为18

    分别得到user中的username、password和age的字段值

    向user中同时添加多个字段和值,birthday 2018-01-01 sex male

    同时取得多个字段:age 和 sex

    得到user中所有的字段和值

    删除user中的生日和密码字段

    4.列表类型list

            4.1概述

    在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其左部(left)和右部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表,如果这个键已经存在,则是向list添加元素。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是40亿个。

            4.2常用命令

    命令

    行为

    lpush 键 元素 元素

    left push 在列表的左边向指定的键中添加列表元素,如果该键并不存在,Redis将为该键创建一个新的链表,如果这个键已经存在,则是向list添加元素。

    rpush 键 元素 元素

    right push在列表的右边向指定的键中添加列表元素

    lpop 键

    left pop 从指定键中的左边弹出一个元素,列表中的元素就删除了。

    rpop 键

    right pop从指定键的右边弹出一个元素,列表中的元素就删除了。

    lrange 键 开始 结束

    从指定键的列表中取出指定范围的元素列表,从左边数起从0开始,从右边数起从-1开始。如果要取整个列表,开始是0,结束是-1

    llen 键

    得到指定列表的长度

            4.3命令演示

    执行效果

    需求:

    向mylist键的列表中,从左边添加a b c三个元素

    从右边添加one two three三个元素

    查询所有的元素

    从右边添加一个重复的元素three

    删除最右边的元素three

    删除最左边的元素c

    获取列表中元素的个数

    5.集合类型set

            5.1概述

    在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。

    Set可包含的最大元素数量是40亿,和List类型不同的是,Set集合中不允许出现重复的元素。

            5.2常用命令

    命令

    行为

    sadd 键 元素 元素

    向set集合中添加1个或多个元素

    smembers 键

    查询指定的集合中所有的元素

    sismember 键 元素

    判断指定的元素是否在某个集合中,如果存在返回1,否则返回0

    srem 键 元素 元素

    remove 删除指定的一个或多个元素

    sunion 键1 键2

    返回给定集合的并集。不存在的集合 key 被视为空集。

            5.3命令演示

    需求:

    向myset集合中添加A B C 1 2 3 六个元素

    再向myset中添加B元素,看能否添加成功

    显示所有的成员,发现与添加的元素顺序不同,元素是无序的

    删除其中的C这个元素,再查看结果

    判断A是否在myset集合中

    判断D是否在myset集合中

    创建键为set1的集合:元素是 a b c

    创建键为set2的集合:元素是 a b d

    得到set1和set2的并集,并且显示

    6.有序集合zset

            6.1概述

    Redis 有序集合和集合一样也是无序不可以重复。

    不同的是每个元素都会关联一个分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复,每个集合可存储40多亿个成员。

            6.2常用命令

    命令

    行为

    zadd 键 分数 值 分数 值

    向有序集合添加一个或多个成员

    zrange 键 开始索引 结束索引

    通过索引区间返回有序集合中指定区间内的成员

    zrem 键 值 值

    移除有序集合中的一个或多个成员

    zrank 键 值

    返回有序集合中指定成员的索引

    zcard 键

    获取有序集合的成员数

    zscore 键 值

    得到指定成员的分数

            6.3命令演示

    添加键country,分数是10,值是Japan

    添加键country,分数是5,值是USA

    添加键country,分数是1,值是China,分数是120,值是Korea

    查询country中所有的元素

    查询Japan的索引号(从0开始)

    删除值为USA的元素

    查询country中还有多少个元素

            6.4效果

    展开全文
  •   Sql Server 提供的系统数据类型有一下几大类,共25。 Sql Server会自动限制每个系统数据类型的取值范围,当插入数据库中的值 超过了数据允许的范围时, Sql Server 就会报错。 1.整数数据类型    整数...

    数据类型:

    每个属性来自一个域,他的取值必须是域中的值。在SQL中域的概念用数据类型来实现,定义表的各个属性时需要指明其数据类型及长度。

    一:系统数据类型

          Sql Server 提供的系统数据类型有一下几大类,共25种

            Sql Server会自动限制每个系统数据类型的取值范围,当插入数据库中的值 超过了数据允许的范围时, Sql Server 就会报错。

    1.整数数据类型

       整数数据类型是常用的数据类型之一,主要用于存储数值,可以直接进行数据运算而不必使用函数转换.


    (1).bigint


      每个bigint存储在8个字节中,其中一个二进制位表示符号位,其它63个二进制位表示长度和大小,可以表示-2的63次方~2的63次方-1范围内的所有整数。


    (2).int


     int或者integer,每个int存储在4个字节中,其中一个二进制位表示符号位,其它31个二进制位表示长度和大小,,可以表示-2的31次方~2的31次方-1范围内的所有整数。


    (3).smallint


     每个smallint类型的数据占用了两个字节的存储空间,其中一个二进制位表示整数值的正负号,其它15个二进制位表示长度和大小,,可以表示-2的15次方~2的15次方-1范围内的所有整数。


    (4).tinyint


      每个tinyint类型的数据占用了一个字节的存储空间,可以表示0~255范围内的所有整数.

    2.浮点数据类型

      浮点数据类型存储十进制小数,用于表示浮点数值数据的大致数值数据类型。浮点数据为近似值;浮点数值的数据则Sql Server中采用了只入不舍的方式进行存储,即当且仅当要舍入的数是一个非零数时,对其保留数字部分的最低有效位上加1,并进行必要的近位。

    (1).real


      可以存储正的或者负的十进制数值,它的存储范围从-3.40E+38~-1.18E-38、0以及1.18E-38~3.40E+38.每个real类型的数据占用4个字节的存储空间。


    (2)float[(n)]


      其中为用于存储float数值尾数的位数(以科学计数法表示),因此可以确定精度和存储大小。如果指定了n它必须是介于1和53之间的某个值。n的默认值为53.
      其范围从-1.79E+308~-2.23E-308、0以及2.23E+308~1.79E-308。如果不指定数据类型float的长度,它占用8个字节的存储空间。float数据类型可以写成float(n)的形式,n为指定float数据的精度,n为1~53之间的整数值。当n取1~24时,实际上定义了一个real类型的数据,系统用4个自己存储它。当n取25~53时,系统认为其是float类型,用8个字节存储它。


    (3).decimal[(p[,s])]和numeric[(p[,s])


      带固定精度和小数位数的数值数据类型。使用最大精度时,有效值从-10^38+1~10^38-1。numeric在功能上等价于decimal。
      p(精度)指定了最多可以存储十进制数字的总位数,包括小数点左边和右边的位数,该精度必须是从1到最大精度38之间的值,默认精度为18.
      s(小数位数)指定小数点右边可以存储的十进制数字的最大位数,小数位数必须是从0到p之间的值,仅在指定精度后才可以指定小数的位数。默认小数位数是0;因此,0<=s<=p。最大存储大小基于精度而变化。例如:decimal(10,5)表示共有10位数,其中整数5位,小数5位。

    3.字符数据类型

     字符数据类也是Sql Server中最常用的数据类型之一,用来存储各种字符,数字符号和特殊符号。在使用字符数据类型时,需要在其前后加上英文单引号或者双引号


    (1)char(n)


     当用char数据类型存储数据时,每个字符和符号占用一个字节存储空间,n表示所有字符所占的存储空间,n的取值为1~8000。如不指定n的值,系统默认n的值为1。若输入数据的字符串长度小于n,则系统自动在其后添加空格来填满设定好的空间;若输入的数据过长,则会截掉其超出部分。


    (2). varhcar(n|max)


     n为存储字符的最大长度,其取值范围是1~8000,但可根据实际存储的字符数改变存储空间,max表示最大存储大小是2的31次方-1个字节。存储大小是输入数据的实际长度加2个字节。所输入数据的长度可以为0个字符。如varchcar(20),则对应的变量最多只能存储20个字符,不够20个字符的按实际存储。


    (3).nchar(n)


      n个字符的固定长度Unicode字符数据。n值必须在1~4000之间(含),如果没有数据定义的或变量声明语句中指定n,默认长度为1。此数据类型采用Unicode字符集,因此每一个存储单位占两个字节,可将全世界文字囊括在内(当然除了部分生僻字)。


    (4)nvarchar(n|max)


     与varchar类似,存储可变长度Unicode字符数据。n值必须在1~4000之间(含),如果没有数据定义的或变量声明语句中指定n,默认长度为1。max指最大存储大小为2的31次方-1字节。存储大小是输入字符个数的两倍+2个字节。所输入的数据长度可以为0个字符.

    4.日期和时间数据类型

    (1).date


      存储用字符串表示的日期数据,可以表示0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日)间的任意日期值。数据格式为“YYYY-MM-DD”:
    YYYY:表示年份的四位数字,范围为0001~9999;
    MM:表示指定年份中月份的两位数字,范围为01~12;
    DD:表示指定月份中某一天的两位数字,范围为01~31(最高值取决于具体月份)
     该数据类型占用3个字节的空间。


    (2).time


      以字符串形式记录一天的某个时间,取值范围为00:00:00.0000000~23:59:59.9999999,数据格式为“hh:mm:ss[.nnnnnnn]”:
    hh:表示小时的两位数字,范围为0~23。
    mm:表示分钟的两位数字,范围为0~59。
    ss:表示秒的两位数字,范围为0~59。
    n*是0~7为数字,范围为0~9999999,它表示秒的小部分.
    time值在存储时占用5个字节的空间。


    (3).datetime


      用于存储时间和日期数据,从1753年1月1日到9999年12月31日,默认值为1900-01-01 00:00:00,当插入数据或在其它地方使用时,需用单引号或双引号括起来。可以使用“/”、“-”和“.”作为分隔符。该类型数据占用8个字节的空间。


    (4).datetime2


      datetime的扩展类型,其数据范围更大,默认的最小精度最高,并具有可选的用户定义的精度。默认格式为:YYYY-MM-DD hh:mm:ss[.fractional seconds],日期的存取范围是0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日).


    (5).smalldatetime


     smalldatetime类型与datetime类型相似,只是其存储范围是从1900年1月1日到2079年6月6日,当日期时间精度较小时,刻印使用smalldatetime,该类型数据占用4个字节的存储空间。


    (6).datetimeoffset


     用于定义一个采用24小时制与日期相组合并可识别时区的时间。默认格式是:“YYYY-MM-DD hh:mm:ss[.nnnnnnn][{+|-}hh:mm]”:
    hh:两位数,范围是-14~14
    mm:两位数,范围为00~59;
    这里hh是时区偏移量,该类型数据中保存的是世界标准时间(UTC)值,eg:要存储北京时间2011年11月11日12点整,存储时该值将是2011-11-11 12:00:00+08:00,因为北京处于东八区,比UTC早8个小时。存储该数据类型数据时默认占用10个字节大小的固定存储空间.

    5.文本和图形数据类型

    (1).text


     用于存储文本数据,服务器代码页中长度可变的非Unicode数据,最大长度为2的31次方-1(2147 483 647)个字符。当服务器代码页使用双字节字符时,存储仍是2147 483 647字节。


    (2)ntext


     与text类型作用相同,为长度可变的非Unicode数据,最大长度为2的30次方-1(1073 741 283)个字符。存储大小是所输入字符个数的两倍(以字节为单位).


    (3).image


     长度可变的二进制数据,范围为:0~2的31次方-1个字节。用于存储照片、目录图片或者图画,容量也是2147 483 647个字节,由系统根据数据的长度自动分配空间,存储该字段的数据一般不能使用insert语句直接输入。

    6.货币数据类型

    (1).money


      用于存储货币值,取值范围为正负922 337 213 685 477.580 8之间。money数据类型中整数部分包含19个数字,小数部分包含4个数字,因此money数据类型的精度是19,存储时占用8个字节的存储空间。


    (2).smallmoney


      与money类型相似,取值范围为214 748.346 8之间,smallmoney存储时占用4个字节存储空间。输入数据时在前面加上一个货币符号,如人民币为¥或其它定义的货币符号。

    7.位数据类型

     bit称为位数据类型,只取0或1为值,长度1字节。bit值经常当作逻辑值用于判断true(1)或false(0),输入非0值时系统将其替换为1。

    8.二进制数据类型

    (1)binary(n)


      长度为n个字节的固定长度二进制数据,其中n是从1~8000的值。存储大小为n个字节。在输入binary值时,必须在前面带0x,可以使用0xAA5代表AA5,如果输入数据长度大于定于的长度,超出的部分会被截断。


    (2).varbinary(n|max)


      可变长度二进制数据。其中n是从1~8000的值,max指示存储大小为2的31次方-1字节。存储大小为所输入数据的实际长度+2个字节。
      在定义的范围内,不论输入的时间长度是多少,binary类型的数据都占用相同的存储空间,即定义时空间,而对于varbinary类型的数据,在存储时实际值的长度使用存储空间.

    9.其他数据类型

    (1).rowversion


       每个数据都有一个计数器,当对数据库中包含rowversion列的表执行插入或者更新操作时,该计数器数值就会增加。此计数器是数据库行版本。一个表只能有一个rowversion列。每次修改或者插入包含rowversion列的行时,就会在rowversion列中插入经过增量的数据库行版本值。
       公开数据库中自动生成的唯一二进制数字的数据类型。rowversion通常用作给表行加版本戳的机制。存储大小为8个字节。rowversion数据类型只是递增的数字,不保留日期或时间。


    (2)timestamp


      时间戳数据类型,timestamp的数据类型为rowversion数据类型的同义词,提供数据库范围内的唯一值,反映数据修改的唯一顺序,是一个单调上升的计数器,此列的值被自动更新。
      在create table或alter table 语句中不必为提么timestamp数据类型指定列名。
     eg:create table testTable (id int primary key,timestamp );
    此时Sql Server数据库引擎将生成timestamp列名;但rowversion不具备这样的行为,在使用rowversion时,必须指定列名.


    (3).uniqueidentifier


      16字节的GUID(Globally Unique Identifier,全球唯一标识符),是Sql Server根据网络适配器地址和主机CPU时钟产生的唯一号码,其中,每个为都是0~9或a~f范围内的十六进制数字。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF,此号码可以通过newid()函数获得,在全世界各地的计算机由次函数产生的数字不会相同。


    (4).cursor


      游标数据类型,该类型类似与数据表,其保存的数据中的包含行和列值,但是没有索引,游标用来建立一个数据的数据集,每次处理一行数据。


    (5).sql_variant


      用于存储除文本,图形数据和timestamp数据外的其它任何合法的Sql Server数据,可以方便Sql Server的开发工作。


    (6).table


      用于存储对表或视图处理后的结果集。这种新的数据类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。


    (7).xml


      存储xml数据的数据类型。可以在列中或者xml类型的变量中存储xml实例。存储的xml数据类型表示实例大小不能超过2GB。

    二:自定义数据类型

    Sql Server允许用户自定义数据类型,用户自定义数据类型是建立在Sql Server系统数据类型的基础上的,自定义的数据类型使得数据库开发人员能够根据需要定义符合自己开发需求的数据类型。自定义数据类型虽然使用比较方便,但是需要大量的性能开销,所以使用时要谨慎。当用户定义一种数据类型时,需要指定该类型的名称、所基于的系统数据类型以及是否允许为空等。Sql Server为用户提供了两种方法来创建自定义数据类型。下面分别介绍这两种个定义数据类型的方法。


    (1).使用对象资源管理器创建用户自定义数据类型
     创建数据库Test-->【可编程性】-->【类型】节点,右击【用户定义数据类型】节点,在弹出的框中,按照说明相应操作即可。很简单,就不截图赘述了。


    (2).使用存储过程创建用户自定义数据类型
     触雷使用图形界面创建自定义数据类型,Sql Server中的系统存储过程sp_addtype也可为用户提供使用T_sql语句创建自定义数据类型的方法。其语法如下:
     sp_addtype [@typename= ] type,
     [@phystyle=] system_data_type
     [,[@nulltype =] 'null_type']
    其中,各参数的含义如下:
    type:用于指定用户定义的数据类型的名称。
    system_data_type:用于指定相应的系统提供的数据类型的名称及定义。注意:未能使用timestamp数据类型,当所使用的系统数据类型有额外的说明时,需要用引号将其括起来。
    null_type:用于指定用户自定义的的数据类型的null属性,其值可为“null” 、“not null“或”notnull“。默认时与系统默认的null属性相同。用户自定义的数据类型的名称在数据库中应该是唯一的。
    eg:sp_addtype homeAddress 'varchar(120)','not null'


    删除用户自定义数据类型:
    a.用图形界面删除,不做赘述。
    b.用系统存储过程sp_droptype删除. eg:sp_droptype homeAddress,其中homeAddress为用户自定义数据类型名称.
    注意:数据库正在使用的用户自定义数据类型,不能被删除。

    展开全文
  • 数据结构基本概念研究,长度,精度,标度

    相关链接


    一.前言

    在进行数据采集工作前 — 需要调研上游表结构
    这样在数据仓库的S层创建的表与原表结构一致
    才能保证采集来的数据长度不会溢出,且不占用过多空间
    查询表结构时发现以下问题:(使用工具为DBeaver,上游库为SQLServer,版本12.0.5000.0)

    • 常规表结构
      在这里插入图片描述
    • 非常规表结构(自定义字段类型)
      在这里插入图片描述
      由于出现自定义字段类型,如dtsnodtdate
      DBeaver显示数据类型时并没有显示,那么就有了以下两个问题

    Q1:什么是长度,精度,标度
    Q2:如何获取标准字段类型,以及数据类型如何转换

    二. 长度、精度、标度

    Q1:什么是长度,精度,标度
    长度:占计算机存储容量,在上图中显示的Length表示长度,单位为字节 例如:int类型占用4个字节
    精度:指数字的位数。例如:数 123.45 的精度是 5
    标度:指小数点后的数字位数。 例如:数 123.45 的标度是 2。

    bit --位:位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为“0”或“1”。
    byte --字节:字节是计算机存储容量的基本单位,一个字节由8位二进制数组成。在计算机内部,一个字节可以表示一个数据,也可以表示一个英文字母,两个字节可以表示一个汉字。
    1Byte=8bit (1B=8bit)
    1KB=1024Byte(字节)=8*1024bit
    1MB=1024KB
    1GB=1024MB
    1TB=1024GB

    • 在DDL语句中,长度,精度,标度 都会用到
    • numeric(m,n)
      • m : 精度(有效位数)
      • n : 标度 (小数点后位数)
    • char(n)
      • n : 长度(占计算机存储字节容量)
    编码格式中/Eng占用字节优点缺点备注
    ASCIIEng
    1 Byte
    不支持中文
    单字节,空间小不支持中文7 Bit字符集
    最简单的英文编码方案
    编码从0到127
    ISO-8859-1Eng
    1 Byte
    不支持中文
    单字节,空间小不支持中文
    不同国家编码
    128-255不同
    8 Bit字符集
    有些环境下写作Latin-1
    又叫ANSI编码 (非ASCII编码)
    向下兼容ASCII
    UNICODEEng
    2 Byte
    2 Byte
    国际组织编码,容纳世界上所有的文字和符号的字符编码不利于英文传输/存储在计算机内存中,统一使用Unicode编码,
    当需要保存到硬盘或者需要传输的时候,
    就转换为UTF-8编码。
    用记事本编辑的时候,
    从文件读取的UTF-8字符被转换为Unicode字符到内存里,
    编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。
    向下兼容 ISO-8859-1
    UTF-8Eng
    1 Byte
    3~4Byte
    变长的编码方式
    1-6 Byte
    英文占用空间小
    且支持中文
    不利于中文传输/存储3 Byte:常用汉字
    4 Byte:中文生僻字
    UTF-8就是在互联网上使用最广的一种Unicode的实现方式
    如字节第一位0 -> 分两种情况
    —情况1.单字节开头
    —情况2.多字节的结尾
    如字节第一位1 ->多字节
    (连续1的数量=字符占用字节数)
    向下兼容ASCII
    UTF-16Eng
    4 Byte
    4 Byte
    资料不全
    UTF-16BEEng
    2 Byte
    2 Byte
    资料不全
    UTF-16LEEng
    2 Byte
    2 Byte
    资料不全
    GB2312、GBKEng
    2 Byte
    2 Byte
    数据库占用空间比UTF-8少1/3国际性兼容不好
    外国访问出现乱码
    汉字字符编码方案的国家标准
    向下兼容ASCII

    2.1 SQLServer 数据类型

    数据大类SQLServerTeradata备注
    Character字符串char(n)char(n)固定长度的字符串,最大长度为8000个字符
    varchar(n)varchar(n)可变长度的字符串,最大长度为8000个字符
    varchar(max)可变长度的字符串,最多2^30=1,073,741,824个字符
    text可变长度,最大长度为(2^31)-1=2147483647个字符(2GB字符数据)
    Unicode字符串nchar(n)char(n)固定长度的字符串,最大长度为4000个字符
    nvarchar(n)varchar(n)可变长度的字符串,最大长度为4000个字符
    nvarchar(max)varchar(64000)存储可变长度的长文本,(2^30)-1=1073741823个字符
    ntextvarchar(64000)存储可变长度的长文本,(2^30)-1=1073741823个字符(2GB字符数据)
    Binary类型bitchar(1)允许 0 1 null
    image存储图片为二进制数据,最多2GB
    Number类型tinyintsmallint占用1个字节,可表示范围: 0~255之间的整数
    smallintsmallint占用2个字节,可表示范围: (-215~215)-1之间的整数(-32767 到 32768)
    intinteger占用4个字节,可表示范围: (-231~231)-1之间的整数(-2,147,483,648 到 2,147,483,647)
    bigintfloat占用8个字节,可表示范围: (-263~263)-1之间的整数(-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 )
    decimal(m,n)decimal(m,n)(-1038~1038)-1之间的固定精度和小数位的数字
    numeric(m)decimal(m,0)功能等同于decimal
    numeric(m,n)decimal(m,n)
    floatfloat从-1.79E+3081.79E+308的浮动精度数字数据。参数n指示该字段保存4字节还是8字节。
    float(24)float保存4字节,而float(53)保存8字节,n的默认值是53
    money介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据
    real从-3.40E+38到3.40E+38的浮动精度数字数据
    Date类型datetimeTimestamp(6)从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒
    datetime2Timestamp(6)从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒
    smalldatetimeTimestamp(6)从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟
    dateTimestamp(6)仅存储日期,从 0001 年 1 月 1 日 到 9999 年 12 月 31 日
    timeTimestamp(6)仅存储时间,精度为 100 纳秒
    timestampTimestamp(6)存储唯一的数字,每当创建或修改某行时,该数字会更新
    timestampTimestamp(6)基于内部时钟,不对应真实时间。每个表只能有一个 timestamp变量
    • Unicode字符串
      1.有var前缀的,表示是实际存储空间是变长的,varchar,nvarchar
      所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。
      2.n表示Unicode字符,即所有字符都占两个字节,nchar,nvarchar
      字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。
      3.基于以上两点来看看字段容量
      char,varchar 最多8000个英文,4000个汉字
      nchar,nvarchar 可存储4000个字符,无论英文还是汉字
      4.使用(个人偏好)
      a.如果数据量非常大,又能100%确定长度且保存只是ansi字符,那么char
      b.能确定长度又不一定是ansi字符或者,那么用nchar;
      c.对于超大数据,如文章内容,使用nText
      d.其他的通用nvarchar

    • tinyint
      tinyint 型的字段如果设置为 unsigned (无符号)类型,只能存储从0到255的整数,不能用来储存负数。
      tinyint 型的字段如果不设置 unsigned (无符号)类型,存储-128到127的整数。

    2.2 Oracle数据类型

    OracleTeradata备注
    char(n)char(n)定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)
    varchar2(n)varchar(n)可变长的字符串,具体定义时指明最大长度n
    number(m)Decimal(m,0)可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。
    number(m,n)Decimal(m,n)可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。
    dateTimestamp(6)从公元前4712年1月1日到公元4712年12月31日的所有合法日期,
    CLOB即字符型大型对象(Character Large Object),则与字符集相关,适于存贮文本型的数据(如历史档案、大部头著作等)。
    • varchar2(n)
      可变长的字符串,具体定义时指明最大长度n,
      这种数据类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。
      如果数据长度没有达到最大值n,Oracle 8i会根据数据大小自动调节字段长度,
      如果你的数据前后有空格,Oracle 8i会自动将其删去。VARCHAR2是最常用的数据类型。
      可做索引的最大长度3209。

    • number(m) / number(m,n)
      可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。
      如:number(5,2),则这个字段的最大值是99,999,如果数值超出了位数限制就会被截取多余的位数。
      如:number(5,2),但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32。
      如:number(3,0),输入575.316,真正保存的数据是575。

    • date
      从公元前4712年1月1日到公元4712年12月31日的所有合法日期,
      Oracle 8i其实在内部是按7个字节来保存日期数据,在定义中还包括小时、分、秒。
      缺省格式为DD-MON-YY,如07-11月-00 表示2000年11月7日。

    • CLOB
      即字符型大型对象(Character Large Object),则与字符集相关,适于存贮文本型的数据(如历史档案、大部头著作等)。

    三. 获取表结构信息

    Q2:如何获取标准字段类型,以及数据类型如何转换
    通过直接查询SQLServer系统表,获取表结构

    USE his ; --使用 his 库
    SELECT 
    	CASE 
    		WHEN col.colorder=1 
    			THEN obj.name 
    		ELSE obj.name 
    	END AS 表名,
    	ROW_NUMBER() OVER(PARTITION BY obj.name ORDER BY col.colorder) AS 序号,
    	col.name AS 列名,
    	t.name AS 数据类型,
    	cast(col.length AS varchar(80)) AS 长度 ,
    	cast(col.xprec AS varchar(80)) AS 精度 ,	
    	cast(isnull(columnproperty(col.id,col.name,'Scale'),0)AS varchar(20)) AS 标度 ,
    	CASE 
    		--字符类型 转换逻辑 => 数据类型 + (长度)
    		WHEN t.name IN ('char','varchar','text','nchar','nvarchar','ntext') 
    			THEN UPPER(t.name + '(' + cast(col.length AS varchar(80)) +')')
    		--二进制类型 转换逻辑 => CHAR(1)
    		WHEN t.name IN ('bit')
    			THEN 'CHAR(1)'
    		--数字类型 int转换逻辑 => INTEGER
    		WHEN t.name IN ('int')
    			THEN 'INTEGER'
    		--数字类型 转换逻辑 => 数据类型 + (精度,标度)
    		WHEN t.name IN ('tinyint','smallint','bigint','float','money','real','decimal','numeric')
    			THEN UPPER('DECIMAL' + '(' + cast(col.xprec AS varchar(80)) +',' + cast(isnull(columnproperty(col.id,col.name,'Scale'),0)AS varchar(20))+')')
    		--时间类型转换逻辑 => TIMESTAMP(6)
    		WHEN t.name IN ('datetime','datetime2','smalldatetime','date','time','timestamp')
    			THEN 'TIMESTAMP(6)'	
    		ELSE NULL
    	END AS 测试合并,
    	CASE 
    		WHEN EXISTS (
    			SELECT 
    				1 
    			FROM dbo.sysindexes si	--sysindexes:数据库中的每个索引和表在表中各占一行。
    			INNER JOIN dbo.sysindexkeys sik ON si.id=sik.id AND si.indid =sik.indid
    			INNER JOIN dbo.syscolumns sc ON sc.id=sik.id AND sc.colid=sik.colid
    			INNER JOIN dbo.sysobjects so ON so.name=si.name AND so.xtype='PK'
    			WHERE sc.id=col.id AND sc.colid=col.colid
    					) 
    			THEN 'Y' 
    		ELSE '' 
    	END AS 是否主键
    FROM dbo.syscolumns col		 --syscolumns 当前数据库的所有字段信息,名称,类型,长度等
    LEFT JOIN dbo.systypes t 	--systypes 系统的字段表,保存当前数据库中的所有数据类型,包含系统提供数据类型和用户定义数据类型
    	ON col.xtype=t.xusertype
    INNER JOIN dbo.sysobjects obj --sysobjects:在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。
    	ON col.id =obj.id AND obj.xtype ='U' AND obj.status>=0
    /*--以下SQL没有使用,暂时注释
    LEFT JOIN dbo.syscomments comm --syscomments: 可以用来查找所有关于库中用到的某个关键词的所有相关脚本
    	ON col.cdefault=comm.id
    LEFT JOIN sys.extended_properties ep --extended_properties: 针对当前数据库中的每个扩展属性返回一行。
    	ON col.id=ep.major_id AND col.colid=ep.minor_id AND ep.name=''*/
    WHERE obj.name IN ('h_ofpreorder')
    ORDER BY 表名 , col.colorder ;
    

    SQL查询结果(这里直接转换成数据仓库S层需要的数据类型了)
    在这里插入图片描述

    对比使用DBeaver查看表结构
    在这里插入图片描述

    F 附录

    • 数据库的用户表列表:
      sys.sysobjects
      sys.tables
      INFORMATION_SCHEMA.TABLES
    • 表的字段名:
      sys.syscolumns
      sys.columns
      INFORMATION_SCHEMA.COLUMNS
    • 字段类型:
      sys.syscolumns(加上sys.systypes)
      sys.columns(加上sys.types)
      INFORMATION_SCHEMA.COLUMNS
    • 字段长度:
      sys.syscolumns
      sys.columns
      INFORMATION_SCHEMA.COLUMNS
    • 字段描述:
      sys.extended_properties
    • 是否允许为空:
      sys.syscolumns
      sys.columns
      INFORMATION_SCHEMA.COLUMNS
    • 是否为主键:
      sys.sysobjects(加上sys.sysindexes和sys.sysindexkeys)
      sys.indexes(加上sys.index_columns)
      INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE

    注:括号中的表都是需要他们联合才能拿到需要的信息的。
    比如sys.sysobjects没有与字段id建立关系,所以才加上sys.sysindexes和sys.sysindexkeys这两张表做桥梁来建立关系

    F.1 表字段syscolumns 字典

    From 2.数据库表syscolumns 各个字段含义

    列名数据类型描述
    namesysname列名或过程参数的名称。
    idint该列所属的表对象 ID,或与该参数关联的存储过程 ID。
    xtypetinyintsystypes 中的物理存储类型。
    typestattinyint仅限内部使用。
    xusertypesmallint扩展的用户定义数据类型 ID。
    lengthsmallintsystypes 中的最大物理存储长度。
    xprectinyint仅限内部使用。
    xscaletinyint仅限内部使用。
    colidsmallint列或参数 ID。
    xoffsetsmallint仅限内部使用。
    bitpostinyint仅限内部使用。
    reservedtinyint仅限内部使用。
    colstatsmallint仅限内部使用。
    cdefaultint该列的默认值 ID。
    domainint该列的规则或 CHECK 约束 ID。
    numbersmallint过程分组时(0 表示非过程项)的子过程号。
    colordersmallint仅限内部使用。
    autovalvarbinary(255)仅限内部使用。
    offsetsmallint该列所在行的偏移量;如果为负,表示可变长度行。
    statustinyint用于描述列或参数属性的位图:0x08 = 列允许空值。
    0x10 = 当添加 varchar 或 varbinary列时,ANSI 填充生效。保留 varchar 列的尾随空格,保留 varbinary 列的尾随零。
    x40 = 参数为 OUTPUT 参数。
    0x80 = 列为标识列。
    typetinyintsystypes 中的物理存储类型。
    usertypesmallintsystypes 中的用户定义数据类型 ID。
    printfmtvarchar(255)仅限内部使用。
    precsmallint该列的精度级别。
    scaleint该列的小数位数。
    iscomputedint表示是否已计算该列的标志:
    0 = 未计算。
    1 = 已计算。
    isoutparamint表示该过程参数是否是输出参数:
    0 = 假。
    1 = 真。
    isnullableint表示该列是否允许空值:
    0 = 假。
    1 = 真。

    参考文章

    1.Sql server查询表结构(字段名,数据类型,长度,描述,是否允许为空,是否为主键)
    2.数据库表syscolumns 各个字段含义


    20/06/22

    M

    展开全文
  • 【Redis】五种数据类型及其使用场景

    万次阅读 多人点赞 2020-05-25 22:58:57
    Redis 数据类型类型与类比java的模型 string --> String hash --> Hashmap list --> LinkList set --> HashSet sorted_set --> TreeSet String类型 redis 数据存储格式 redis自身是一个Map...
  • postgresql数据类型

    千次阅读 2021-07-20 09:34:10
    数据类型 Name 别名 描述 bigint int8 有符号八字节整数 bigserial serial8 自增八字节整数 bit [ (n) ] 定长位串 bit varying [ (n) ] varbit [ (n) ] 变长位串 boolean bool 逻辑布尔值(真/假)...
  • 举例:当几个表中要存同种数据类型时,并且保证他们有相同的数据类型长度和可控性的时候就可以用用户自定义数据类型。 1、数据类型的名称; 2、所基于的系统数据类型; 3、数据类型的可控性。 个人理解:其实...
  • SQLServer数据类型(一)

    千次阅读 2022-02-24 10:56:52
    整数数据类型:包括bigint型、int型、smallint型和tinyint型。 1.bigint型数据的存储大小为8个字节,共64位。其中63位用于表示数值的大小,1位用于表示符号。bigint型数据可以存储的数值范围是-263~263-1,即-9 223...
  • sql server 2008 的数据类型大全

    千次阅读 2021-03-31 11:13:54
    数据库sql server 的数据类型大全,最全的sql里面各种数据大小使用等
  • redis常用五大数据类型

    千次阅读 2022-06-12 07:19:25
    Redis字符串(String) ...String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M 常用命令set 添加键值对*NX:当数据库中key不存在时,可以将key-value添加数据库*XX:当数据库中key...
  • MySQL常用数据类型

    千次阅读 2021-01-19 06:54:37
    Mysql的常用数据类型主要有一下四:串数据类型、数值数据类型、日期和时间数据类型、二进制数据类型。一.串数据类型这是最常用的数据类型,有两基本的串类型:分别为定长串和不定长串。定长串结束长度固定的字符...
  • Doris 数据类型

    千次阅读 2021-07-09 10:39:50
    Doris 数据类型TINYINT数据类型SMALLINT数据类型INT数据类型BIGINT数据类型LARGEINT数据类型FLOAT数据类型DOUBLE数据类型DECIMAL数据类型DATE数据类型CHAR数据类型VARCHAR数据类型HLL 数据类型BITMAP 数据类型 ...
  • ORACLE数据库数据类型

    千次阅读 2019-11-28 17:51:42
    1、字符类型 • CHAR:一个定长字符串,当位数不足自动用空格填充来达到其最大...这是一个变长字符串,与CHAR 类型不同,它不会用空格填充至最大长度。VARCHAR2(12)可能包含0~ 12字节的信息。VARCHAR2最多可以存储4...
  • 2.Redis五种数据类型及使用场景

    万次阅读 2021-08-07 09:52:49
    通过使用场景,带大家快速掌握Redis五种数据类型。string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合)。
  • Redis基本数据类型前言为什么需要NoSql数据库什么是RedisRedis基本知识介绍常用数据库操作命令Redis数据类型1.Binary-safe strings(二进制安全字符串)常用命令应用场景2.Lists(列表)常用命令3.Sets(集合)常用命令4....
  • 数据库的常用数据类型有哪些?

    千次阅读 2021-03-04 04:48:01
    一、 整数数据类型:整数数据类型是最常用的数据类型之一。1、INT (INTEGER)INT (或INTEGER)数据类型存储从-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之间的所有正负整数。每个INT ...
  • python中的基本数据类型之 int bool str

    千次阅读 2021-01-29 04:05:56
    基本数据类型1. int ==> 整数.主要用来进行数学运算.2.str ==> 字符串.可以保存少量的数据,并进行相应的操作.3.bool => 布尔值.判断真假.True,False.4.list ==> 列表.用来存放大量数据,用[]表示,里面...
  • Hive支持关系型数据库中的大多数基本数据类型,同时支持关系型数据库中很少出现的3集合数据类型,下面我们将简短地介绍一下这样做的原因。    其中一个需要考虑的因素就是这些数据类型是如何在文本文件中进行...
  • 详细介绍MySQL中的数据类型

    万次阅读 多人点赞 2022-04-12 21:46:07
    主要介绍了mysql中的数据类型,主要介绍整数类型,浮点类型,日期类型。开发中每个表都会存在主键和更新时间,这时候选择那个数据类型作为主键也是很重要的,如果选择的数据类型太大会浪费空间,如果选择小了会影响...
  • Pandas是基于NumPy构建的数据分析包,但它含有比ndarray更为高级的数据结构和操作工具,如Series类型、DataFrame类型等。 Pandas的便捷功能离不开高效的底层数据结构的支持。 Pandas主要有三种数据结构: Series...
  • 文章目录数值类型:整数类型:浮点型:日期类型:字符串类型:枚举类型与集合类型: 数值类型: 整数类型: tinyint 默认有符号,[unsigned]代表无符号,超出范围显示最大范围。 语法: tinyint[(m)] ...
  • Hive支持关系型数据库中的大多数基本数据类型,同时也支持关系型数据库中很少出现的3集合数据类型, 其中一个需要考虑的因素就是这些数据类型是如何在文本文件中进行表示的,同时还要考虑文本存储中为了解决各种...
  • 标识符只能是英文字母、数字和下划线组成的字符串,并且第一个字符必须为字母或下划线; 标准C语言不限制标识符的长度,但是受到各个版本的C语言编译系统的限制。大多数情况下,标识符的前8位有效,也就是说,...
  • TIMESTAMP数据类型

    万次阅读 2019-01-04 15:52:21
    MySQL目前暂不支持列的default函数,如果你想把某列的默认值设置为当前日期/时间的话,可以使用TIMESTAMP数据类型,下面详说TIMESTAMP数据类型的变体: ①timestamp default current_timestamp on update current_...
  • MySQL数据类型有哪些?

    千次阅读 2022-04-11 14:58:29
    数据类型 范围 字节 tinyint 有符号值:-128到127 无符号值:0到255 1 smallint ? smallint 或 help smallint 或 \h smallint
  • oracle中的数据类型

    千次阅读 2021-01-02 17:12:36
    1 char(n) n=1 to 2000字节 定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)。 2 varchar2(n) n=1 to 4000字节 可变长的字符串,具体定义时指明最大长度n,这种数据类型可以放数字、字母...
  • 数据库|数据类型

    万次阅读 2019-05-13 19:36:00
    一、数据类型介绍 主要包括以下五大类: 整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT 浮点数类型:FLOAT、DOUBLE、DECIMAL 字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT...
  • 最常用的MySQL数据类型

    千次阅读 2021-01-12 05:14:44
    最常用的MySQL数据类型是VARCHAR,DECIMAL,DATE,INT,TEXT和TIMESTAMP。第一个:VARCHAR通常用来表示最多为255个字符的变量长度字符串。如果你要储存和处理字母数字类的数据,这种数据类型是最合适的。适用于这类数据...
  • 文章目录一.redis常用五大数据类型1.1 key(1) 按模式匹配对应的key(2) 判断key是否存在(3) 查看key的类型(4) 删除指定的key(5) 根据value选择非阻塞删除(6) 为给定的key设置过期时间(单位 秒)(7) 查看key还有多少...
  • MATLAB数据类型

    千次阅读 2018-09-13 16:15:23
    MATLAB基本数值类型有整型与浮点型,此外,还有字符型、逻辑型、函数句柄、Java对象等类型,与数组有关的类型有结构体和细胞数组。 1. 整型 整型从字节数、有无符号两个方面可以分为int8、uint8、int16、uint16、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 449,987
精华内容 179,994
热门标签
关键字:

哪种数据类型必须由用户指定长度