Подтвердить что ты не робот

Как использовать ключевое слово "ссылки" в MySQL?

Как используется ключевое слово references при создании таблицы?

Скажем, я хочу создать две таблицы person и hobby, и я хочу, чтобы идентификатор таблицы хобби ссылался на идентификатор человека?

person table
- id
- name

hobby
- id
- person_id
- hobby_name

Как это сделать?

4b9b3361

Ответ 1

Создайте таблицу хобби следующим образом:

CREATE TABLE hobby (
  id INT NOT NULL AUTO_INCREMENT,
  person_id INT NOT NULL,
  hobby_name VARCHAR(255),
  PRIMARY KEY(id),
  FOREIGN KEY(person_id) REFERENCES person(id))

Ответ 2

Вот пример непосредственно с сайта MySQL:

CREATE TABLE parent (id INT NOT NULL,
                     PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child (id INT, parent_id INT,
                    INDEX par_ind (parent_id),
                    FOREIGN KEY (parent_id) REFERENCES parent(id)
                    ON DELETE CASCADE
) ENGINE=INNODB;

Ответ 3

CREATE TABLE person (person_id INT NOT NULL, 
PRIMARY KEY (person_id));

CREATE TABLE hobby (hobby_id INT NOT NULL, person_id INT NOT NULL,
PRIMARY KEY(hobby_id),
FOREIGN KEY(person_id) REFERENCES person(person_id));

Ключевое слово ссылок используется для определения, какая таблица и столбец используются в отношении внешнего ключа. Это означает, что запись в таблице хобби должна иметь person_id, которая существует в таблице person или во время вставки вы получите сообщение об ошибке, что ключ не существует.

Чтобы ответить на ваш вопрос выше о том, что делает "ON DELETE CASCADE", он позволяет удалить запись родительского ключа (лично), а также соответствующие записи для детей (в хобби) без необходимости сначала удалить все записи для детей.

Чтобы уточнить, если у вас есть записи для детей, прикрепленные к записи первичного ключа, и вы пытаетесь удалить запись первичного ключа, например:

DELETE FROM person where person_id = 1;

без DELETE ON CASCADE, вы получите сообщение об ошибке, если в каких-либо записях в хобби было person_id из 1. Сначала вы должны удалить все эти записи, прежде чем делать удаление выше. При использовании DELETE ON CASCADE вышеупомянутое удаление будет успешным и автоматически удалит любые и все записи из таблицы таблицы хобби, связанные с удалением person_id из таблицы первичных ключей.

Ответ 4

Справочное ключевое слово используется, чтобы узнать, где пришел внешний ключ. Это означает, что это имя таблицы и что это имя в этой таблице.

Я говорю, что это правильно:

CREATE TABLE person (person_id INT NOT NULL, 
PRIMARY KEY (person_id));

CREATE TABLE hobby (hobby_id INT NOT NULL, person_id INT NOT NULL,
PRIMARY KEY(hobby_id),
FOREIGN KEY(person_id) REFERENCES person(person_id));

Затем посмотрите на эту строку: FOREIGN KEY (person_id) ССЫЛКИ person (person_id));

Здесь person_id - это внешний ключ, и он пришел из таблицы person и в этой таблице это имя person_id... Что это.

Ответ 5

Вот пример того, как вы можете его использовать.

create table hobby(id int references person(id),person_id int,hobby_varchar(20), primary key(id));

Для чего это означает, references позволяет нам указать столбец целевой таблицы, к которому относится внешний ключ.