MIMIC数据库SQL代码基础教程一

 2024-02-04 04:02:06  阅读 0

首先,让我们了解 MIMIC 数据库的本质。 简单来说,一个数据库下有很多个文件夹,然后一个文件夹下有很多个excel表。 例如,有一个名为以下的数据库。 数据库中有 3 个文件,分别名为 和 文件夹。

sql like 匹配多个值_vlookup查找多个匹配值_部落冲突16本匹配值

当我们打开里面的文件夹时,我们可以看到里面有22个excel表格。 表格内容基本包括主要患者的诊断、人口统计信息、实验室检查结果、预后、治疗、输液情况、手术情况等。

sql like 匹配多个值_vlookup查找多个匹配值_部落冲突16本匹配值

打开文件夹,可以看到里面有9个excel表格。 表格内容基本包括主要患者的诊断、人口统计信息、实验室检查结果、预后、治疗、输液状况等。

部落冲突16本匹配值_sql like 匹配多个值_vlookup查找多个匹配值

打开文件夹,里面有61个excel表格。 里面的表格都是基于之前的表格,根据官方可视化视图扩展的表格还包含了更具体的信息。

sql like 匹配多个值_vlookup查找多个匹配值_部落冲突16本匹配值

那么这些表是如何连接的呢? 我们以文件夹中的表为例进行说明。

我们需要了解 MIMIC 数据库,

对应的患者ID号。

每个患者只有一个唯一的。

与医院入院编号相对应。

患者每次就诊可以进行不同的登记。

一个可以对应多个。

仅当患者在住院期间入住 ICU(重症监护病房)时才可用。

每次进入 ICU 并住院时,数字可能会有所不同。

一个可以对应多个。

一般情况下,患者通过唯一的ID号()进行识别,每次住院都有对应的入院号(),住院期间进入ICU时,有对应的ICU入院号()。患者在住院时可能有不同的住院号()。不同的就诊,但进入ICU时只有相应的ICU住院号。

总结一下:我们三个文件夹(、、)里面的表格都会有、,但是该文件夹下的表格一般没有,因为这个文件夹记录的是住院病人信息、非ICU病人信息,而在、文件夹、、通常同时存在。 这样我们就可以通过这三个ID来链接不同文件夹中的表或者同一文件夹中的表。

SQL代码基本公式:

Select    需要查询的内容 ⑤From1Left jion  表2On       链接条件  ③where    筛选条件  ④注:SQL代码是不区分大小写的

SQL代码执行程序为①-②-③-④-⑤,表1链接表2,on后面是链接条件,然后使用where添加过滤条件,然后添加你需要提取的信息(你需要记住这个执行过程)

下面是一步一步的解释:

1.....从....

SELECT a.*
FROM public.age a

代码解释:

A。*:

是用于选择要检索的列的关键字。

a.* 表示选择表a中的所有列。 这里的a是表的别名,用于简化引用表的名称。

从 .age a:

FROM是一个关键字,用来指定数据源(实际上相当于定位,在很多表中定位)。

.agea 表示数据源是名为age 的表,该表位于 中。 架构是一种组织数据库中表的方式,有助于组织和管理数据库对象。

因此,整个查询的意义就是:从中的age表中选择所有列的数据,并使用别名a来表示这张表。像这样的查询通常用于查看或分析整个表的内容

其实通俗地说,如果我们要查询某个病人的指标,首先要知道这些指标在哪个​​表中,然后定位到这个表,然后查询这个表的内容。 上面的语法:From 定位文件夹。 里面的age表是在定位精准表的时候查询age表的所有内容。

位置:

sql like 匹配多个值_vlookup查找多个匹配值_部落冲突16本匹配值

搜索结果:

2....From(表1)Left jion(表2)On(连接表1和表2的id):如果你查询的信息需要位于2个表中,那么你需要使用这个通用公式

思考:我们知道查询中年龄表中的内容,那么如果我们想根据年龄表添加患者的性别以及是否发生死亡(dod代表死亡时间),该怎么操作呢?

思路:首先我们需要定位到文件夹中存在性别和死亡信息的表,然后通过这两个ID连接两个表,提取出age表以及表和dod内容的全部内容。

SELECT a.*,i.gender,i.dodFROM public.age aLEFT JOIN public.icustay_detail ion a.subject_id=i.subject_id and a.hadm_id=i.hadm_id

代码解释:

a.*、i.、i.dod:

关键字用于选择要检索的列。

a.*、i.、i.dod表示选择a表中的所有列,ia*表中的the和dod列表示选择a表中的所有列。

从 .age a:

FROM关键字用于指定数据源。

.age a 表示数据源是名为age的表,用别名a来表示这张表。

左加入。 我开 = i. 和。 = i.:

LEFT JOIN 是一种连接操作,它返回左表(在本例中为 .age a)中的所有行以及右表 (.i) 中的匹配行。 如果右表没有匹配的行,则用NULL填充。

ON后面的条件指定了连接的条件,即a。 = i. 和。 = i.,表示两个表连接的条件是 和 相等。

因此,此查询的目的是从 .age 表中选择所有列,以及从 .age 表中选择所有列。 表,如果两个表中的总和相等。 如果没有匹配数据,则 和 dod 列将为 NULL

结果:

扩展:表之间的连接类型

在关系数据库中,联接是一种通过关联两个表的列来合并两个表的行以获得新的、更全面的数据的方法。 左连接、内连接和右连接是不同类型的连接操作。

左连接:

左连接返回左表中的所有行,以及右表中与左表匹配的行。 如果右表中没有匹配的行,则右表的列将用NULL填充。

语法:LEFT JOIN 或 LEFT OUTER JOIN。

例子:

SELECT *FROM table1
LEFT JOIN table2 ON table1.column = table2.column;

内部联接:

内连接返回左表和右表中的匹配行。 如果两个表中没有匹配的行,这些行将从结果中排除。

语法:INNER JOIN。

例子:

SELECT *FROM table1
INNER JOIN table2 ON table1.column = table2.column;

右连接:

右连接返回右表中的所有行,以及左表中与右表匹配的行。 如果左表中没有匹配的行,则左表的列将用NULL填充。

语法:RIGHT JOIN 或 RIGHT OUTER JOIN。

例子:

SELECT *FROM table1RIGHT 
Right JOIN table2 ON table1.column = table2.column;

总的来说,这些联接类型提供了组合表中数据的不同方法。 根据您的具体需求选择合适的加入类型。 但我们教程中使用的大部分都是左连接(LEFT JOIN)

3.2....From(表1) Left jion(表2) On(连接表1和表2的id)Where(过滤条件)

思考:我们根据年龄表的内容进行了添加和做,那么我只需要60岁以上患者的信息?

思路:其实就是在第二步的基础上进行过滤,过滤掉年龄小于60岁的患者。

SELECT a.*,i.gender,i.dodFROM public.age aLEFT JOIN public.icustay_detail ion a.subject_id=i.subject_id and a.hadm_id=i.hadm_idWHERE a.age>60


代码解释:

a.*、i.、i.dod:

关键字用于选择要检索的列。

a.*、i.、i.dod 表示选择表 a 中的所有列,以及表 i 中的 the 和 dod 列。

从 .age a:

FROM关键字用于指定数据源。

.age a 表示数据源是名为age的表,用别名a来表示这张表。

左加入。 我开 = i. 和。 = i.:

LEFT JOIN是连接.age表和.table的左连接操作。

连接条件是 和 相等。

如果年龄 > 60:

WHERE 子句用于过滤结果并仅选择满足特定条件的行。

a.age > 60 表示仅选择age 列中大于60 的行。

综上所述,这个查询的目的是从.age表中选择所有列,以及从.table中选择和dod列,同时保证连接条件为true(左连接),并且只选择有age的行大于60。如果没有匹配数据,对应的和dod列将为NULL

结果:

扩展:where之后还可以使用哪些其他运算符?

LIKE(类似):

LIKE 运算符用于搜索 WHERE 子句中指定列中的模式。

语法:LIKE。

通配符可以在模式中使用:

例子:

sqlCopy code
SELECT * FROM table_name WHERE column_name LIKE 'pattern%';

在(其中):

IN 运算符用于在 WHERE 子句中指定多个值。

语法:IN (, , ...) 。

如果该列与任何指定值匹配,它将返回 true。

例子:

sqlCopy code
SELECT * FROM table_name WHERE column_name IN (value1, value2, ...);

不是:

NOT 运算符用于否定 WHERE 子句中的条件。

可与 LIKE 和 IN 一起使用以获得否定模式或一组值。

喜欢的例子:

sqlCopy code
SELECT * FROM table_name WHERE column_name NOT LIKE 'pattern%';

IN 的示例:

sqlCopy code
SELECT * FROM table_name WHERE column_name NOT IN (value1, value2, ...);

这些运算符提供了根据 SQL 查询中的特定模式、值集或条件否定来过滤和查询数据的灵活性。

现在MIMIC魔方公众号已正式上线云端MIMIC数据库进行内测。 您只需下载软件或软件(约10分钟)即可免费连接远程MIMIC数据库。 无需从官网下载数据集进行本地数据库安装,省去了MIMIC数据库安装的繁琐流程和难度,帮助更多的研究者掌握MIMIC数据库(注意,如果想使用云端MIMIC数据库,请从官网获取数据库使用授权(需要从MIMIC官网获取MIMIC数据库许可证书)。

云MIMIC数据库教程链接:

关注MIMIC魔方公众号,向公众号发送消息“云MIMIC数据库”,即可免费获取云MIMIC数据库的使用方法。

我们还提供远程协助安装MIMIC数据库、MIMIC数据库数据协助提取服务、MIMIC数据库数据协助统计分析服务。 如有需要,您可以在线联系我们(请注明您来访目的):

标签: sql数据库

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码