MyIsam doesn't support them, but InnoDb does.
Yes, but you can make them official by making a constraint for it, so it shouldn't have a value that's not in the other table, and you can cascade actions. I rarely use cascades as well, but sometimes cascading delete actions is very useful.
Nowadays I don't even write a lot of SQL anymore, it's all DAO or "Activerecord" stuff that does things like these for you:
SELECT `t`.`id` AS `t0_c0`, `t`.`company_name` AS `t0_c1`,
`t`.`directed_to` AS `t0_c2`, `t`.`is_debitor` AS `t0_c3`,
`t`.`is_creditor` AS `t0_c4`, `t`.`default_billing_type` AS `t0_c5`,
`t`.`billing_email` AS `t0_c6`, `t`.`bankaccount` AS `t0_c7`,
`t`.`bank_iban` AS `t0_c8`, `t`.`bank_swift` AS `t0_c9`, `t`.`bank_city` AS
`t0_c10`, `t`.`bank_country` AS `t0_c11`, `t`.`vat_number` AS `t0_c12`,
`t`.`chamber_of_commerce` AS `t0_c13`, `t`.`department` AS `t0_c14`,
`t`.`main_company` AS `t0_c15`, `t`.`status` AS `t0_c16`,
`t`.`historical_id` AS `t0_c17`, `t`.`date` AS `t0_c18`, `t`.`website` AS
`t0_c19`, `t`.`comments` AS `t0_c20`, `t`.`locale` AS `t0_c21`,
`t`.`kenmerk` AS `t0_c22`, `t`.`incasso` AS `t0_c23`,
`t`.`bank_accountholder` AS `t0_c24`, `t`.`brand` AS `t0_c25`,
`t`.`company_legal_form` AS `t0_c26`, `mainCompany`.`id` AS `t1_c0`,
`mainCompany`.`company_name` AS `t1_c1`, `mainCompany`.`directed_to` AS
`t1_c2`, `mainCompany`.`is_debitor` AS `t1_c3`, `mainCompany`.`is_creditor`
AS `t1_c4`, `mainCompany`.`default_billing_type` AS `t1_c5`,
`mainCompany`.`billing_email` AS `t1_c6`, `mainCompany`.`bankaccount` AS
`t1_c7`, `mainCompany`.`bank_iban` AS `t1_c8`, `mainCompany`.`bank_swift`
AS `t1_c9`, `mainCompany`.`bank_city` AS `t1_c10`,
`mainCompany`.`bank_country` AS `t1_c11`, `mainCompany`.`vat_number` AS
`t1_c12`, `mainCompany`.`chamber_of_commerce` AS `t1_c13`,
`mainCompany`.`department` AS `t1_c14`, `mainCompany`.`main_company` AS
`t1_c15`, `mainCompany`.`status` AS `t1_c16`, `mainCompany`.`historical_id`
AS `t1_c17`, `mainCompany`.`date` AS `t1_c18`, `mainCompany`.`website` AS
`t1_c19`, `mainCompany`.`comments` AS `t1_c20`, `mainCompany`.`locale` AS
`t1_c21`, `mainCompany`.`kenmerk` AS `t1_c22`, `mainCompany`.`incasso` AS
`t1_c23`, `mainCompany`.`bank_accountholder` AS `t1_c24`,
`mainCompany`.`brand` AS `t1_c25`, `mainCompany`.`company_legal_form` AS
`t1_c26`, `generalContact`.`id` AS `t2_c0`, `generalContact`.`relation_id`
AS `t2_c1`, `generalContact`.`function` AS `t2_c2`,
`generalContact`.`firstname` AS `t2_c3`, `generalContact`.`middlename` AS
`t2_c4`, `generalContact`.`lastname` AS `t2_c5`, `generalContact`.`email`
AS `t2_c6`, `generalContact`.`comments` AS `t2_c7`,
`generalContact`.`gender` AS `t2_c8`, `generalContact`.`initials` AS
`t2_c9`, `relationAddresses`.`id` AS `t3_c0`, `relationAddresses`.`street`
AS `t3_c1`, `relationAddresses`.`number` AS `t3_c2`,
`relationAddresses`.`addition` AS `t3_c3`,
`relationAddresses`.`postal_code` AS `t3_c4`, `relationAddresses`.`city` AS
`t3_c5`, `relationAddresses`.`province` AS `t3_c6`,
`relationAddresses`.`country_id` AS `t3_c7`,
`relationAddresses`.`relation_id` AS `t3_c8`, `relationAddresses`.`type` AS
`t3_c9`, `relationAddresses__country`.`id` AS `t4_c0`,
`relationAddresses__country`.`name` AS `t4_c1`,
`relationAddresses__country`.`printable_name` AS `t4_c2`,
`relationAddresses__country`.`iso3` AS `t4_c3`,
`relationAddresses__country`.`numcode` AS `t4_c4`,
`relationAddresses__country`.`en` AS `t4_c5`,
`relationAddresses__country`.`nl` AS `t4_c6`, `relationContacts`.`id` AS
`t5_c0`, `relationContacts`.`relation_id` AS `t5_c1`,
`relationContacts`.`function` AS `t5_c2`, `relationContacts`.`firstname` AS
`t5_c3`, `relationContacts`.`middlename` AS `t5_c4`,
`relationContacts`.`lastname` AS `t5_c5`, `relationContacts`.`email` AS
`t5_c6`, `relationContacts`.`comments` AS `t5_c7`,
`relationContacts`.`gender` AS `t5_c8`, `relationContacts`.`initials` AS
`t5_c9` FROM `relation_relation` `t` LEFT OUTER JOIN `relation_relation`
`mainCompany` ON (`t`.`main_company`=`mainCompany`.`id`) LEFT OUTER JOIN
`relation_contact` `generalContact` ON
(`generalContact`.`relation_id`=`t`.`id`) AND
(generalContact.function="General") LEFT OUTER JOIN `relation_address`
`relationAddresses` ON (`relationAddresses`.`relation_id`=`t`.`id`) LEFT
OUTER JOIN `relation_country` `relationAddresses__country` ON
(`relationAddresses`.`country_id`=`relationAddresses__country`.`id`) LEFT
OUTER JOIN `relation_contact` `relationContacts` ON
(`relationContacts`.`relation_id`=`t`.`id`) WHERE (`t`.`id`=194);