- при внутреннем соединении, всегда ли условие равнозначно равенству первичного ключа в одной таблице и внешнему ключу в другой таблице.
- , когда внутренние соединяют две таблицы, которые имеют составной первичный ключ и составной внешний ключ, всегда ли мы должны присоединяться к двум таблицам посредством равенства каждого компонента первичного ключа и значений внешнего ключа.
ответ
Нет, это не всегда так. Но это то, что мы обычно делаем, это нормативная модель. (Операция SQL
INNER JOIN
не требует, чтобы предикат был сравним с равенством. И не обязательно, чтобы сравнение проводилось в столбцах PRIMARY KEY и/или FOREIGN KEY.)Опять же, это нормативный шаблон, но это не требуется от
INNER JOIN
. Если целью является выполнение соединения по отношению к первичному ключу/внешнему ключу, то да, предикаты будут сравнивать равенство во всех столбцах компонентов ключей.
Спасибо !!!! не могли бы вы помочь мне в дальнейшем объяснить определение внутреннего соединения? – jiaqi
«выберите все строки из обеих таблиц участия, если существует совпадение между столбцами». значение «есть совпадение между столбцами», что означает что? условие (предикат) должно основываться на общем столбце? – jiaqi
и разница между 'on' и где. почему во внешнем соединении выберите f.fid, fname, cid от квалификации преподавателя f слева от внешнего q где f.fid = q.fid; - есть синтаксическая ошибка, указывающая предложение where. – jiaqi
- Вы можете внутреннее соединение двух таблиц с помощью любых полей, но ... Вы описали стандартное внутреннее соединение для базы и зависимых таблиц. И это проблема с производительностью для объединения по полям с индексами
- Ответ такой же, как и для первого вопроса - вы можете присоединить внутреннее соединение по своему усмотрению. Это зависит от схемы и что вы хотите в то время как сделать соединение двух таблиц
Ответ не на оба ваши вопросы.
Операция ON
операции JOIN
может содержать любое выражение, которое оценивается как 1 или 0, или none.
Например, вы можете написать это.
FROM t1
JOIN t2 ON INSTR(t1.name, t2.surname) > 0 AND t2.nationality = 'US'
или еще более ужасающие виды вещей.
Внешние ключи помогают применять ограничения. И, при благоприятных обстоятельствах, связанные индексы ускоряют запрос. Но предложения JOIN вовсе не ограничены использованием ключей и индексов.
Jiaqi 1. № 2. Нет – Strawberry