Лучшее объяснение! Простыми словами, без занудной и бесполезной академичности, наглядно, с примерами, отсылками к документации - здорово! Кто поставил дизлайки - ребята, вы серьезно? Может промахнулись все-таки? Автору - огромнейшее спасибо!
Подскажите, где можно побольше узнать о ENGINE=INNODB? Я не совсем понимаю, в каких случаях нужно писать это, ведь в прошлом при создании таблиц мы этого не указывали, а сейчас в примере с ключами указываем. Здесь есть завязка на ключах? Объясните, пожалуйста!
Подробней можно почитать тут dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html, но в большинстве случаев ENGINE не придётся указывать, потому что по-умолчанию и так будет создаваться InnoDB и будет использоваться встроенный механизм внешних ключей
Karen, уже не помню. Constraint (ограничение) - опциональная часть внешнего ключа содержащая название ограничения; Foreign key - обязательный фрагмент описания внешнего ключа dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
Я правильно понимаю, что при создании FK если мы прописываем ON DELETE RESTRICT, то это тоже самое, как если бы мы вообще ничего не прописывали? Т.е. в обоих случаях мы не сможем удалять запись из тоблицы родителей, если в таблице детей есть их дети?
А, нашел уже ответ в документации 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.
Для создания индекса на внешнем ключе. Когда таблица связывается по внешнему ключу, для неё точно будут запросы по этому полю, лучше заранее его «ускорить»
@@Женечег-е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
Мдэ... уже прохожу не первый курс. :) И везде какой-то затык на внешних ключах. :) Вроде понимаю что это и зачем, но как своё что-нибудь пытаюсь сделать - какой-то тупняк получается. :) Но вроде тут понял что с помощью ON DELETE "............." мы при создании таблицы указываем какие-то типа... ограничения на случай удаления что ли. :) Всё это указывается вроде в дочерней таблице.
Лучшее объяснение! Простыми словами, без занудной и бесполезной академичности, наглядно, с примерами, отсылками к документации - здорово! Кто поставил дизлайки - ребята, вы серьезно? Может промахнулись все-таки? Автору - огромнейшее спасибо!
Спасибо за поддержку!)
в 22ом дизлайки чудесным образом испарились) действительно здорово!
Очень помог разобраться, спасибо!
господи боже спасибо огромное! добра вам и здоровья!
Спасибо за объяснение.
Спасибо тебе большое, добрый человек!)
О! То, что нужно. А я просил видео про каскадное удаление. А оно под носом :)
Спасибо вам большое!Сидела тупила с этими ключами)теперь все понятно)
Рад, что ролик помог!
Вместо тысячи статей, супер, спасибо!
Вот только как настраивать внешние ключи в уже существующие таблицы ... ?
При помощи ALTER TABLE dev.mysql.com/doc/refman/8.0/en/alter-table.html
@@HtmllabRu да я понимаю, читал стати, но почему то у меня не срабатывает, а у всех примеры только при создании таблицы.
@@fruit_stream потому что добавить внешние ключи ещё не так сложно, а вот удаление может не получится из-за наличия данных в дочерних таблицах
@@HtmllabRu вот про это нет нормальных статей и информации.
Полезно, спасибо)
Видео прекрасно 👍
Подскажите, где можно побольше узнать о ENGINE=INNODB? Я не совсем понимаю, в каких случаях нужно писать это, ведь в прошлом при создании таблиц мы этого не указывали, а сейчас в примере с ключами указываем. Здесь есть завязка на ключах? Объясните, пожалуйста!
Подробней можно почитать тут dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html, но в большинстве случаев ENGINE не придётся указывать, потому что по-умолчанию и так будет создаваться InnoDB и будет использоваться встроенный механизм внешних ключей
@@HtmllabRu спасибо!
Спасибо за отличный видос. А в ваших других видео есть обяснение что значит Constraint, Foreign key constraint ?
Karen, уже не помню.
Constraint (ограничение) - опциональная часть внешнего ключа содержащая название ограничения;
Foreign key - обязательный фрагмент описания внешнего ключа dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
Я правильно понимаю, что при создании FK если мы прописываем ON DELETE RESTRICT, то это тоже самое, как если бы мы вообще ничего не прописывали? Т.е. в обоих случаях мы не сможем удалять запись из тоблицы родителей, если в таблице детей есть их дети?
А, нашел уже ответ в документации 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.
Отлично объясняете, только мне непонятно зачем нужна была строчка INDEX par_ind (parent_id)
Для создания индекса на внешнем ключе. Когда таблица связывается по внешнему ключу, для неё точно будут запросы по этому полю, лучше заранее его «ускорить»
@@HtmllabRu Теперь понятно, спасибо)
Еще один вопрос есть:
Что делать если мы хотим указать два внешних ключа для одной таблицы из двух других таблиц?
Два раза прописывать FOREIGN KEY()?
@@Женечег-е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
а про FOREIGN KEYS будет ещё видео в этом плейлисте?
насколько понимаю, одно из или даже самое важное при изучении реляционных БД
В следующем видео будет рассказ о inner join и других объединениях, на основе foreign keys.
Мдэ... уже прохожу не первый курс. :) И везде какой-то затык на внешних ключах. :) Вроде понимаю что это и зачем, но как своё что-нибудь пытаюсь сделать - какой-то тупняк получается. :)
Но вроде тут понял что с помощью ON DELETE "............." мы при создании таблицы указываем какие-то типа... ограничения на случай удаления что ли. :) Всё это указывается вроде в дочерней таблице.
Именно! Если удаляем запись из родительской таблицы (таблицы каталога), то удаляются связанные записи из дочерней 👍
Неплохо
а можно ли в java изменить айпи-адрес с помощью прокси-сервера?
с таким вопросом на со
вот отсюда, это отсюда - dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html
кей, кей, кей, кей
+
Спасибо за отличное видео!
спасибо за видео! всё чётко!