Mysql 先装什么?主键还是外键?

Mysql 先装什么?主键还是外键?,mysql,sql,database,Mysql,Sql,Database,当我们通过查询从表中获取一些数据时,列的加载顺序是什么?我的理解是,主键首先被加载,然后它创建整个表。但是,当存在对其他表的引用和来自其他表的引用时,首先加载的是什么?如果先加载主键,是否有可能先加载外键的情况?这对于注释来说太长了 您似乎误解了数据库的工作方式。同时插入给定行的所有列。这在很大程度上是根据定义的——根据数据库的ACID属性,插入整行或什么都不插入 创建表时,通常会在createtable语句中声明主键和外键关系。这一切也是同时发生的 没有在一次插入一些键和在以后插入一些键的概念

当我们通过查询从表中获取一些数据时,列的加载顺序是什么?我的理解是,主键首先被加载,然后它创建整个表。但是,当存在对其他表的引用和来自其他表的引用时,首先加载的是什么?如果先加载主键,是否有可能先加载外键的情况?

这对于注释来说太长了

您似乎误解了数据库的工作方式。同时插入给定行的所有列。这在很大程度上是根据定义的——根据数据库的ACID属性,插入整行或什么都不插入

创建表时,通常会在
createtable
语句中声明主键和外键关系。这一切也是同时发生的


没有在一次插入一些键和在以后插入一些键的概念。我的意思是,您可以为外键插入一行
NULL
值,然后
update
值。插入行时,需要定义主键;它不能为
NULL
,通常以后不会修改。

这是一种复杂的解释方式。。此外,innodb在次要索引中有主键的副本。您需要知道什么?我不是数据库引擎专家,所以我不知道您的任何描述是否以任何方式反映了SQL查询如何执行的现实,但您认为与此相关的问题是什么?您是否在考虑JOIN子句限制?也许查看查询计划可以回答您的问题,但您并不完全清楚您认为发生了什么,或者它给您带来了什么困难。SQL是一种声明性语言,而不是命令式语言。这意味着,根据定义,数据库引擎可以自由地以其喜欢的任何方式访问、加载、处理数据等。这通常是为了利用可能的优化并尽可能快地检索数据。除了向SQL优化器提供一些“提示”之外,您几乎无能为力。除此之外,您无法控制内部处理。首先,你为什么要这样做?面试官问我关于键的问题,以及将首先加载哪个键(主键或外键),我回答它应该是主键,因为它将派生整个表。然后他问是否有外键先加载的情况,在SELECT查询中“先加载”……但不确定这是否有意义。这是为了DBA工作,还是什么?我想OP实际上是在询问SELECT查询如何运行,他们说的是“查询以从表中获取一些数据”,而不是如何创建表或插入行。