Если таблицы являются innodb, можно создать его как это:
CREATE TABLE accounts(
account_id INT NOT NULL AUTO_INCREMENT,
customer_id INT( 4 ) NOT NULL ,
account_type ENUM( 'savings', 'credit' ) NOT NULL,
balance FLOAT( 9 ) NOT NULL,
PRIMARY KEY ( account_id ),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
) ENGINE=INNODB;
необходимо определить, что таблицы являются innodb, потому что myisam механизм не поддерживает внешний ключ. Посмотрите здесь для большего количества информации
как ehogue сказал, поместите это в свой CREATE TABLE
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
альтернативно, если Вам уже создали таблицу, используйте команду ALTER TABLE:
ALTER TABLE `accounts`
ADD CONSTRAINT `FK_myKey` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`customer_id`) ON DELETE CASCADE ON UPDATE CASCADE;
Один хороший способ начать изучать эти команды использует MySQL GUI Tools , которые дают Вам более "визуальный" интерфейс для работы с Вашей базой данных. Реальная выгода для того (по методу Доступа), то, что после разработки Вашей таблицы через GUI, это показывает Вам SQL, который это собирается выполнить, и следовательно можно извлечь уроки из этого.
Добавляя на комментарий ehogue, необходимо сделать размер ключей на обоих соответствиях таблиц. Вместо
customer_id INT( 4 ) NOT NULL ,
делают его
customer_id INT( 10 ) NOT NULL ,
и удостоверяются, что Ваш международный столбец в потребительской таблице международный (10) также.
Определенные механизмы MySQL поддерживают внешние ключи. Например, InnoDB может установить ограничения на основе внешних ключей. При попытке удалить запись в одной таблице, которая имеет зависимых в другом, удаление перестанет работать.
при использовании типа таблицы в MySQL, таком как MyISAM, который не поддерживает внешние ключи, Вы не связываете таблицы нигде кроме Ваших схем и запросов.
, Например, в запросе Вы связываете две таблицы в избранном операторе с соединением:
SELECT a, b from table1 LEFT JOIN table2 USING (common_field);