KDB数据库的专属语言——Q语言

前言

KDB有着自己独特的语言,那就是Q语言。首先先介绍Q语言的基本数据类型,Q语言的基本数据类型就是:Atoms(我在这就理解为原子吧,如果有更好的理解欢迎指正)。

下面将从Integer Data(整形数据)、Floating Point Data(浮点型数据)、Binary Data(二进制数据)、Text Data(文本数据)、Temporal Data(时间数据)、Arithmetic Infinities and Nulls(数学数据)等几个方面来介绍。

首先可以了解一下Q语言的数据类型与SQL、Java、.NET的数据类型有哪些区别。

Q数据类型与其他编程语言的区别

    Q语言没有了其他语言中常见的string类型,改为了symbol类型(感觉很奇特,在后面的学习当中用到的太多了)。下面是Q语言的常见数据类型,可以看书Q语言将table(表)、enumeration(枚举)、dictionary(字典)、function(函数)、nil item(无效)也算作一种数据类型。

Q语言数据类型表

一、整型

    整型包含了三种数据类型,分别为long、short和int,都是整数类型,只是所占的空间大小不同。可以利用type命令查看数据类型,返回的结果就是该数据类型的Numtype。

q)type 42 /查询42的数据类型是什么

-7h /返回的结果为-7h,这里-号代表为Atom(原子)类型,7(可以对照Q语言数据类型表查看)代表为long类型。

q)type 42i /查询int类型的42i的返回结果

-6h  /返回的结果为-6h,这里-号代表为Atom(原子)类型,6(可以对照Q语言数据类型表查看)代表为int类型

q)type 42h /查询short类型的42h的返回结果

-5h /返回的结果为-5h,这里-号代表为Atom(原子)类型,5(可以对照Q语言数据类型表查看)代表为short类型

二、浮点数类型

1、浮点数(CharType为f),与其他编程语言类似,浮点数指浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。可以看下在cmd中输入一些浮点数后的返回结果,f代表为float类型,用type查询返回结果为-9h,-号代表为Atom(原子)类型,9(可以对照Q语言数据类型表查看)代表为float类型。有一个特殊显示情况,对于1.0,则返回结果为1f,省去了0,并加了一个f后缀。Q语言中,指数也属于浮点数类型。

示例代码

2、浮点数的显示

由于显示的精度原因,我们可能无法显示太长的浮点数,如1.23456789012,在我的电脑上只显示1.234568,要想显示全部,可以利用\P来控制显示精度。

示例代码

三、二进制数据类型

二进制数据类型包括boolean(布尔类型)、byte(字节类型)、GUID(全局唯一标识符类型)。布尔类型在输入的时候需要添加b的后缀(0b或者1b),同时布尔类型和其他数据类型可以进行运算,预算结果后的类型为与其进行运算的数据类型,不再是布尔类型。如:3.1415-1b,返回结果为2.1415;3.1415+1b,返回结果为4.1415。

q)0x2a

0x2a

q)"i" $ 0x2a /i表示要转换的十进制数据类型为int类型,$为重载符,可以将后面的数据转换为操作符前面制定的转换类型(后续会专门写一篇类型转换的专题)

42i

q)1+0x29 /十进制数1与十六进制数0x29(十进制为41)相加,返回结果为十进制数42

42

四、文本数据类型

文本数据类型包含char(字符串类型)和symbol(符号类型),这两种类型类似于SQL中的CHAR与VARCHAR两种类型。char类型用双引号引起来表示,如“kdb”,表示一种char类型。也可以利用type来查询对应的数据类型。

q)"kdb" /输入一个char类型,注意要用引号引起来

"kdb"

q)type "kdb" /查询“kdb”的数据类型

10h /返回结果为10h,10(可以对照Q语言数据类型表查看)代表为char类型,与前面查询不同之处返回的结果没有了-号,这是因为不是Atom(原子)类型了,所以没有了-号,下面一个查询“k”的数据类型,因为k为一个字母,则为原子类型,因此返回的结果就包含了-号

q)type "k"

-10h

symbol类型用`符号来表示,并放在开头的位置。如“kdb”,表示一种char类型。也可以利用type来查询对应的数据类型。

q)`q /输入一个symbol类型

`q

q)`kdb`q /输入两个symbol类型

`kdb`q

q)type `q /查询`q的数据类型

-11h

q)type `kdb /查询`kdb的数据类型

-11h /可以看出分别查询`q和`kdb两个数据的数据类型返回结果都为-11h,都有-号返回,说明`kdb·也为Atom(原子类型),11(可以对照Q语言数据类型表查看)代表为symbol类型

q)type `kdb`q

11h  /可以看出同时查询`q和`kdb两个数据的数据类型返回结果为11h,没有了-号,说明单个`符号后面的看做一个整体,与char类型有些不用。

五、时间数据类型

Q语言中针对日期时间操作非常简单方便且强大(这也就凸显除了KDB作为时间序列数据库上的本意),时间数据类型包含date(日期类型)、Time(时间类型)、Date-Time(日期-时间类型)、month(月类型)、minute(分钟类型)、second(秒类型)。

日期都是以2000.01.01为时间的起始点,如将2001.01.01转换为int类型,则结果是366天。

q)"i" $ 2000.01.01

0i

q)"i" $ 2001.01.01 /将日期类型转换为int类型,返回结果为366i,则表示2000.01.01~2001.01.01之间有366天。

366i

q)"i" $ 1999.12.31 /将日期类型转换为int类型,返回结果为-1i,则表示2000.01.01~1999.12.31之间有-1天。

-1i

q)"i" $ 2000.02.01 /将日期类型转换为int类型,返回结果为31i,则表示2000.01.01~2000.02.01之间有31天。

31i

time 类型就是一天中的时分秒毫秒。time类型在kdb+表示为32位的int,表示相对于今天0点0分0毫秒的相对值。最小单位为毫秒。因此,int 和time类型也能够轻松转换,时间操作上也轻松方便。当然Date-Time类型就是 date+time合并在一起。Q语言中还提供了分钟秒等类型。

示例代码

六、Infinities(无穷)与(Nulls)空数据类型

无穷数据类型

其他数据类型的空值表示方式如下:

Null数据类型
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容