2016-03-01 2 views
1
  1. при внутреннем соединении, всегда ли условие равнозначно равенству первичного ключа в одной таблице и внешнему ключу в другой таблице.
  2. , когда внутренние соединяют две таблицы, которые имеют составной первичный ключ и составной внешний ключ, всегда ли мы должны присоединяться к двум таблицам посредством равенства каждого компонента первичного ключа и значений внешнего ключа.
+0

Jiaqi 1. № 2. Нет – Strawberry

ответ

2
  1. Нет, это не всегда так. Но это то, что мы обычно делаем, это нормативная модель. (Операция SQL INNER JOIN не требует, чтобы предикат был сравним с равенством. И не обязательно, чтобы сравнение проводилось в столбцах PRIMARY KEY и/или FOREIGN KEY.)

  2. Опять же, это нормативный шаблон, но это не требуется от INNER JOIN. Если целью является выполнение соединения по отношению к первичному ключу/внешнему ключу, то да, предикаты будут сравнивать равенство во всех столбцах компонентов ключей.

+0

Спасибо !!!! не могли бы вы помочь мне в дальнейшем объяснить определение внутреннего соединения? – jiaqi

+0

«выберите все строки из обеих таблиц участия, если существует совпадение между столбцами». значение «есть совпадение между столбцами», что означает что? условие (предикат) должно основываться на общем столбце? – jiaqi

+0

и разница между 'on' и где. почему во внешнем соединении выберите f.fid, fname, cid от квалификации преподавателя f слева от внешнего q где f.fid = q.fid; - есть синтаксическая ошибка, указывающая предложение where. – jiaqi

0
  1. Вы можете внутреннее соединение двух таблиц с помощью любых полей, но ... Вы описали стандартное внутреннее соединение для базы и зависимых таблиц. И это проблема с производительностью для объединения по полям с индексами
  2. Ответ такой же, как и для первого вопроса - вы можете присоединить внутреннее соединение по своему усмотрению. Это зависит от схемы и что вы хотите в то время как сделать соединение двух таблиц
0

Ответ не на оба ваши вопросы.

Операция ON операции JOIN может содержать любое выражение, которое оценивается как 1 или 0, или none.

Например, вы можете написать это.

FROM t1 
    JOIN t2 ON INSTR(t1.name, t2.surname) > 0 AND t2.nationality = 'US' 

или еще более ужасающие виды вещей.

Внешние ключи помогают применять ограничения. И, при благоприятных обстоятельствах, связанные индексы ускоряют запрос. Но предложения JOIN вовсе не ограничены использованием ключей и индексов.

 Смежные вопросы

  • Нет связанных вопросов^_^