首先,让我们了解 MIMIC 数据库的本质。 简单来说,一个数据库下有很多个文件夹,然后一个文件夹下有很多个excel表。 例如,有一个名为以下的数据库。 数据库中有 3 个文件,分别名为 和 文件夹。
当我们打开里面的文件夹时,我们可以看到里面有22个excel表格。 表格内容基本包括主要患者的诊断、人口统计信息、实验室检查结果、预后、治疗、输液情况、手术情况等。
打开文件夹,可以看到里面有9个excel表格。 表格内容基本包括主要患者的诊断、人口统计信息、实验室检查结果、预后、治疗、输液状况等。
打开文件夹,里面有61个excel表格。 里面的表格都是基于之前的表格,根据官方可视化视图扩展的表格还包含了更具体的信息。
那么这些表是如何连接的呢? 我们以文件夹中的表为例进行说明。
我们需要了解 MIMIC 数据库,
:
对应的患者ID号。
每个患者只有一个唯一的。
:
与医院入院编号相对应。
患者每次就诊可以进行不同的登记。
一个可以对应多个。
:
仅当患者在住院期间入住 ICU(重症监护病房)时才可用。
每次进入 ICU 并住院时,数字可能会有所不同。
一个可以对应多个。
一般情况下,患者通过唯一的ID号()进行识别,每次住院都有对应的入院号(),住院期间进入ICU时,有对应的ICU入院号()。患者在住院时可能有不同的住院号()。不同的就诊,但进入ICU时只有相应的ICU住院号。
总结一下:我们三个文件夹(、、)里面的表格都会有、,但是该文件夹下的表格一般没有,因为这个文件夹记录的是住院病人信息、非ICU病人信息,而在、文件夹、、通常同时存在。 这样我们就可以通过这三个ID来链接不同文件夹中的表或者同一文件夹中的表。
SQL代码基本公式:
Select 需要查询的内容 ⑤
From 表1 ①
Left jion 表2 ②
On 链接条件 ③
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表的所有内容。
位置:
搜索结果:
2....From(表1)Left jion(表2)On(连接表1和表2的id):如果你查询的信息需要位于2个表中,那么你需要使用这个通用公式
思考:我们知道查询中年龄表中的内容,那么如果我们想根据年龄表添加患者的性别以及是否发生死亡(dod代表死亡时间),该怎么操作呢?
思路:首先我们需要定位到文件夹中存在性别和死亡信息的表,然后通过这两个ID连接两个表,提取出age表以及表和dod内容的全部内容。
SELECT a.*,i.gender,i.dod
FROM public.age a
LEFT JOIN public.icustay_detail i
on 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.dod
FROM public.age a
LEFT JOIN public.icustay_detail i
on a.subject_id=i.subject_id and a.hadm_id=i.hadm_id
WHERE 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数据库数据协助统计分析服务。 如有需要,您可以在线联系我们(请注明您来访目的):