navicat sql查询结果 如何修改表数据_MIMIC实战篇:MIMICIII公共数据库使用专题十...

f66b476d3ee842beeb38c962de760571.gif

大家好,我是ANGUS,上一期我们已经介绍完了所有的26个表格,那么现在开始学习如何提取数据。

我们之前建立数据库是基于Postgers建立的,它是一个关系数据库,可以像其他RDB关系数据库一样使用SQL命令,即结构化查询语言(Structured Query Language)来进行查询,SQL命令包括三大类,

1. DQL:

数据查询语句,基本就是SELECT语句

2. DML:

数据操作语言,用于数据库的插入、更新、删除数据

3. DDL:

数据定义语言,主要用于创建、删除,以及修改表、索引等

我们需要掌握的就只有第一类DQL命令就行。整个命令过程包括以下3个部分。

fe86c2bfb43116e0e4200e981d35afbf.png

前面提到,整个DQL的核心就在一个SELECT语句,那么我们现在来学习一下如何使用。

一个完整的SELECT语句可以简单到一句话,也可以复杂到上百行的代码,大致如下图,我们由浅入深一步一步讲,尽量通俗,讲点实用的,对于较繁杂的,会提供现成的模板给大家用,告诉大家模板怎么用就行。

b8a1042f37c41c1204c6ca26951d41ac.png

图中SELECT、DISTINCT、AS、FROM、WHERE等称之为关键字,在你实际操作时不一定要大写,但代码执行过程中会自动转化为大写,同时关键词大写便于后期代码阅读。

SQL命令和自然语言很接近,我们十分容易理解,接下来通过几个问题来学习。

50047aea37eb6762eacabbec38bc2c19.gif问题 1

数据库里一共有几例病人?

➤ 翻译:How many are admissions in the database?

➤ 转化:Select count of admissions from the admissions table.

➤ 整理:Select count of admissions from the admissions table.

➤ SQL:

902bc86c762ec0d726b626d5fc23d1a7.png

这是我们的第一个SELECT语句,SELECT后面接的是我们要选择的表格的栏,FROM后面接的是我们要查询的表格,关键字COUNT就是起的计数的作用

问题 2

数据库里病人入院类型有哪些?

➤ 翻译:What’s the admission types of patients?

➤ 转化:Select admission types from the admissions table.

➤ 整理:Select admission types from the admissions table.

➤ SQL:

74050007dda0004b9745df2e4c271f37.png

这里的关键字DISTINCT起的分类作用,它会删除结果中重复的行。

问题 3

数据库里病人入院类型为“EMERGENCY”的共有几例?

➤ 翻译:How many are there that cases’ admission type is ‘EMERGENCY’?

➤ 转化:Select count of admissions from the admissions table where the admission type is ‘EMERGENCY’.

➤ 整理:Select count of admissions from the admissions table where the admission type is ‘EMERGENCY’

➤ SQL:

87611f91bf020a71cded4bcb4efc666e.png

这里的关键字WHERE起限制作用,只统计admisstion type为EMERGENCY的行,同时我们也注意到,因为EMERGENCY为纯文本,所以我们需要在两边加上英文格式单引号 ’ 。

问题 4

我已经知道了入院类型为“EMERGENCY”的例数有几例,但我还想知道其他类型的各有几例。

➤ 翻译:What’s the cases’ amout of each admission type?

➤ 转化:Select the count of each admission type from the admissions table.

➤ 整理:Select the count of each admission type from the admissions table.

➤ SQL:

c272f8b2839bf8d6754dcf2015766205.png

这里我们第一次出现了聚合函数GROUP BY,它起一个分组的作用,所以在这行代码执行后我们可以看到admisstion type的分组及各自的计数。  

6057fd44c5f34016d564065d0ae8e677.png

通过前面问题1~4我们对简单查询已经有了一个初步的了解,那么接下来我们来学习一下如何进行多表操作。

问题 5

我想了解一下病人入院时的年龄信息。

➤ 翻译:What’s patients’ age in the database.

➤ 转化:Select the patient ID, admission ID and the computed age from the admissions table and patients table.

➤ 整理:Select the patient ID, admission ID and the computed age from the admissions table and patients table.

➤ SQL:

f8e0faa020749ffa93cb9731b11309be.png

这里我们进行了首次的多表查询。

1

FROM部分

列出所有要查询的表,表与表之间用英文格式逗号 , 隔开,另外我们可以在每个表后面加入缩写,比如上面的ad,这样在该SELECT语句中我们就可以用ad来代替admissions表。

2

SELECT部分

因为出现了多个表格,所以我们需要在每一列前加入表格名以避免混淆,如ad.subject_id。中间ROUND这一大串起的作用是进行年龄计算,并将结果赋值到新的名为age的一栏,这里大伙可以拿来直接用,不做详解。这里最后的4表示小数点后的精确位数,如果想要进行调整,可以在这里修改。

3

WHERE部分

因为进行了多表查询,所以在限制部分我们要进行一一匹配,多个限制条件用AND连接。

问题 6

我想剔除问题5患者里的未成年人,最好能对患者年龄群体分组。

在问题5中,我们已经获取了年龄,那么进一步地进行分组就行了。

➤ SQL:

e7a4f9643d95713daa0c76d6764d214a.png

这里我们第一次出现了WITH … AS(…),这个语句的作用是建立一个临时的表格,图中我们建立了一个名为age_admit的临时表,如果想要建立多个临时表,那么表达式如下

b49b27aca7f55544ff405349c2bbc0e9.png

同时在上图中我们第一次出现了条件语句CASE WHEN … THEN … ELSE … END AS …。这个语句光按照字面就已经很清晰了。前面提过,如果年龄>89岁,数据库重新调整了该部分患者的年龄,所以我们需要将这个部分的患者也分离出来。所以当age大于100时,显示为>89,当小于89,大于等于18时,显示为adult,以此类推,并将结果赋值在age_group这一栏里。

问题 7

我想知道血清白细胞的化验itemid号,怎么找?

➤ 翻译:What’s the itemid of WBC?

➤ 转化:Select the itemids from d_labitems table where label like WBC.

➤ 整理:Select the itemids from d_labitems table where label like WBC.

➤ SQL:

c58606cb150b2d5afb7f9c5ff0c540c8.png

结果如下:

c1b532e0fad02be953b6417af52a92df.png

所以我们要找的itemid是51300和51301。

在这里我们第一次碰到了模式匹配,~*表示的是一个查找后面引号里的文字,同时对大小写不敏感,如果需要连大小写一起匹配,那就去除星号*。

类似的,你还可以用来患者的诊断名等等。

在数据库使用过程中,我们经常会用到的还有JOIN功能,这里就不展开将了,一图胜过千言万语,具体如下图:

562d1df0b8c26acd8b2b1c2047764a77.png问题 8

之前建立的表格都是临时表,那我如何将这些表格保存下来呢?

这里我们就要用到建立物化视图(Navicat里称实体化视图)。

3543eeb21c9eefc489a1ea94cfd8d9fd.png

table_name就是你要建立的表名称,然后把你的代码接在后面就行,执行后我们就可以在Navicat的实体化视图里看到保存下来的表格了。当然,你也可以直接将表格导出,不存储在Navicat里。

这样弄了半天后是否感觉还是有点麻烦呢,不要急,数据库工程师也是这么觉得的,所以他们把很多复杂的SQL文件直接写好给你们了。来来来,你们要的模板都在这里了!!!

e8251bc9b51d4b3d24bf38ce77f3e419.png

https://github.com/MIT-LCP/mimic-code/tree/master/concepts

涵盖了各式重症评分,首日病人参数等各式信息,拿走不谢。如果访问不了,请自主 番羽 土啬。

0bb6f7e983f21c5a4bfa19551d0d1ad3.png

到了这里,我们的MIMIC数据库就算是告一段落了,期间因为轮到抢救室,急门诊上班等等一度停稿,感谢各位的支持了,请继续关注医学方其他精品课程哦!

我是ANGUS,我们也许还会再见哦。

End

之前MIMIC数据库推文链接:

1.MIMIC-III重症医学公共数据库简介,临床医师们看过来~| 医学方临床数据挖掘专题

2.传说中的MIMIC-III(麻省理工公共临床数据库)怎么申请呢?| 医学方MIMIC数据库专题

3.如何获得MIMIC-III公共数据库使用权限?| MIMIC公共数据库专题

4.MIMIC-III公共数据库使用专题四 ——数据库安装(上)

5.如何将CSV数据文件载入到数据库中?MIMIC-III公共数据库使用专题五 ——数据库安装(下)

6.MIMIC数据库建好后该怎么做?MIMIC-III公共数据库使用专题(六)--病人人口学信息及院内周转信息

7.轻松玩转MIMIC数据库!MIMIC-III公共数据库使用专题七  ——表格内容(Ⅱ):监护室住院期间采集的各类信息

8.MIMIC-III公共数据库使用专题八——表格内容(Ⅲ):医院记录系统采集的各类信息

9.手把手教你MIMC:MIMIC-III公共数据库使用专题九——表格内容(Ⅳ):字典信息

0cac16337245cfdf65b2a8854e7ea782.png征 稿 启 事

「医学方」现正式向粉丝们公开征稿!内容须原创首发,与科研相关,一经采用,会奉上丰厚稿酬(300-2000元),详情请戳。

“医学方”始终致力于服务“医学人”,将最前沿、最有价值的临床、科研原创文章推送给各位临床医师、科研人员。

a0ef32e7465df68f972f9762c3a774e1.png

医学方已推出“实验室那些事儿”“SCI写作技巧”“文献精读与解析”“医学英语轻松学”“国自然基金申请”“临床数据挖掘”、“基因数据挖掘”、“R语言教程”、“医学统计学”、“微创动物实验培训”等多个专题课程,如需了解课程详细推文,可关注“医学方”公众号,点击“精品专题”进入

腾讯课堂:https://medfun.ke.qq.com

网易云课堂:http://study.163.com/u/ykt1467466791112

客服电话:15821255568

客服微信:yixuefang1234

af3f18bf9cb0cc8dd3f4e2487ecc8d56.png

温馨提示:医学方还设有专门的讨论群哦~各位明星导师都在群中,可以解答各位的遇到的问题,如有兴趣,可以加客服微信后加入群聊... 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值