Тёмный

13. MySQL 8 - Foreign keys внешние ключи 

htmllab
Подписаться 11 тыс.
Просмотров 25 тыс.
50% 1

Внешние ключи позволяют сохранить целостность данных в базах с таблицами на движке InnoDB, а также объединить данные из разных таблиц на этих внешних ключах. Foreign keys

Опубликовано:

 

26 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 43   
@sobermushroom1539
@sobermushroom1539 3 года назад
Лучшее объяснение! Простыми словами, без занудной и бесполезной академичности, наглядно, с примерами, отсылками к документации - здорово! Кто поставил дизлайки - ребята, вы серьезно? Может промахнулись все-таки? Автору - огромнейшее спасибо!
@HtmllabRu
@HtmllabRu 3 года назад
Спасибо за поддержку!)
@АндрейМатрица
@АндрейМатрица 2 года назад
в 22ом дизлайки чудесным образом испарились) действительно здорово!
@igorzuev6885
@igorzuev6885 2 года назад
Очень помог разобраться, спасибо!
@How_i_live-u2l
@How_i_live-u2l 5 лет назад
О! То, что нужно. А я просил видео про каскадное удаление. А оно под носом :)
@janevermilion
@janevermilion 4 года назад
Спасибо вам большое!Сидела тупила с этими ключами)теперь все понятно)
@HtmllabRu
@HtmllabRu 4 года назад
Рад, что ролик помог!
@jetbrain9115
@jetbrain9115 Год назад
Спасибо тебе большое, добрый человек!)
@ЕвгенийБатулин-г9з
Спасибо за объяснение.
@fruit_stream
@fruit_stream 3 года назад
Вместо тысячи статей, супер, спасибо!
@fruit_stream
@fruit_stream 3 года назад
Вот только как настраивать внешние ключи в уже существующие таблицы ... ?
@HtmllabRu
@HtmllabRu 3 года назад
При помощи ALTER TABLE dev.mysql.com/doc/refman/8.0/en/alter-table.html
@fruit_stream
@fruit_stream 3 года назад
@@HtmllabRu да я понимаю, читал стати, но почему то у меня не срабатывает, а у всех примеры только при создании таблицы.
@HtmllabRu
@HtmllabRu 3 года назад
@@fruit_stream потому что добавить внешние ключи ещё не так сложно, а вот удаление может не получится из-за наличия данных в дочерних таблицах
@fruit_stream
@fruit_stream 3 года назад
@@HtmllabRu вот про это нет нормальных статей и информации.
@texnosfera5963
@texnosfera5963 4 года назад
Видео прекрасно 👍
@ЕленаКовалевич-ч2л
Подскажите, где можно побольше узнать о ENGINE=INNODB? Я не совсем понимаю, в каких случаях нужно писать это, ведь в прошлом при создании таблиц мы этого не указывали, а сейчас в примере с ключами указываем. Здесь есть завязка на ключах? Объясните, пожалуйста!
@HtmllabRu
@HtmllabRu 4 года назад
Подробней можно почитать тут dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html, но в большинстве случаев ENGINE не придётся указывать, потому что по-умолчанию и так будет создаваться InnoDB и будет использоваться встроенный механизм внешних ключей
@ЕленаКовалевич-ч2л
@@HtmllabRu спасибо!
@karen_razbogatel
@karen_razbogatel 2 года назад
Спасибо за отличный видос. А в ваших других видео есть обяснение что значит Constraint, Foreign key constraint ?
@HtmllabRu
@HtmllabRu 2 года назад
Karen, уже не помню. Constraint (ограничение) - опциональная часть внешнего ключа содержащая название ограничения; Foreign key - обязательный фрагмент описания внешнего ключа dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
@AlexanderOsnovnoi
@AlexanderOsnovnoi 3 года назад
Полезно, спасибо)
@Женечег-е7п
@Женечег-е7п 3 года назад
Отлично объясняете, только мне непонятно зачем нужна была строчка INDEX par_ind (parent_id)
@HtmllabRu
@HtmllabRu 3 года назад
Для создания индекса на внешнем ключе. Когда таблица связывается по внешнему ключу, для неё точно будут запросы по этому полю, лучше заранее его «ускорить»
@Женечег-е7п
@Женечег-е7п 3 года назад
@@HtmllabRu Теперь понятно, спасибо) Еще один вопрос есть: Что делать если мы хотим указать два внешних ключа для одной таблицы из двух других таблиц?
@Женечег-е7п
@Женечег-е7п 3 года назад
Два раза прописывать FOREIGN KEY()?
@HtmllabRu
@HtmllabRu 3 года назад
@@Женечег-е7п да, как тут CREATE TABLE product ( category INT NOT NULL, id INT NOT NULL, price DECIMAL, PRIMARY KEY(category, id) ) ENGINE=INNODB; CREATE TABLE customer ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; CREATE TABLE product_order ( no INT NOT NULL AUTO_INCREMENT, product_category INT NOT NULL, product_id INT NOT NULL, customer_id INT NOT NULL, PRIMARY KEY(no), INDEX (product_category, product_id), INDEX (customer_id), FOREIGN KEY (product_category, product_id) REFERENCES product(category, id) ON UPDATE CASCADE ON DELETE RESTRICT, FOREIGN KEY (customer_id) REFERENCES customer(id) ) ENGINE=INNODB; dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html
@victordelacroix654
@victordelacroix654 3 года назад
Мдэ... уже прохожу не первый курс. :) И везде какой-то затык на внешних ключах. :) Вроде понимаю что это и зачем, но как своё что-нибудь пытаюсь сделать - какой-то тупняк получается. :) Но вроде тут понял что с помощью ON DELETE "............." мы при создании таблицы указываем какие-то типа... ограничения на случай удаления что ли. :) Всё это указывается вроде в дочерней таблице.
@HtmllabRu
@HtmllabRu 3 года назад
Именно! Если удаляем запись из родительской таблицы (таблицы каталога), то удаляются связанные записи из дочерней 👍
@АндрейСадовинский
Неплохо
@AndreyShevchenko-ub2ew
@AndreyShevchenko-ub2ew 3 года назад
Я правильно понимаю, что при создании FK если мы прописываем ON DELETE RESTRICT, то это тоже самое, как если бы мы вообще ничего не прописывали? Т.е. в обоих случаях мы не сможем удалять запись из тоблицы родителей, если в таблице детей есть их дети?
@AndreyShevchenko-ub2ew
@AndreyShevchenko-ub2ew 3 года назад
А, нашел уже ответ в документации RESTRICT: Rejects the delete or update operation for the parent table. Specifying RESTRICT (or NO ACTION) is the same as omitting the ON DELETE or ON UPDATE clause.
@АльбертИванов-ц4х
@АльбертИванов-ц4х 4 года назад
вот отсюда, это отсюда - dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html
@alexeicodes
@alexeicodes 3 года назад
а про FOREIGN KEYS будет ещё видео в этом плейлисте?
@alexeicodes
@alexeicodes 3 года назад
насколько понимаю, одно из или даже самое важное при изучении реляционных БД
@HtmllabRu
@HtmllabRu 3 года назад
В следующем видео будет рассказ о inner join и других объединениях, на основе foreign keys.
@alexzhaliazouski5924
@alexzhaliazouski5924 2 года назад
кей, кей, кей, кей
@financenvy3931
@financenvy3931 Год назад
+
@serge124124124
@serge124124124 5 лет назад
а можно ли в java изменить айпи-адрес с помощью прокси-сервера?
@АдептСовиности
@АдептСовиности 3 года назад
с таким вопросом на со
@waagnermann
@waagnermann 2 года назад
спасибо за видео! всё чётко!
@сашакосолобов-л1в
@сашакосолобов-л1в 3 года назад
господи боже спасибо огромное! добра вам и здоровья!
@alexeicodes
@alexeicodes 3 года назад
Спасибо за отличное видео!
Далее
3. MySQL 8 - MySQL Workbench 8
23:56
Просмотров 89 тыс.
8. MySQL 8  - SELECT - выборка данных
38:51