これらは、 Table2 のエントリの総数が共通名の数と同じであり、 Table1 に追加のエントリ (名前) がない Typeを求めることで見つけることができます。
SQL では:
SELECT Table2.Name, Table2.Type
FROM
(
  SELECT Type
  FROM (SELECT DISTINCT Type FROM Table2) AS types
  WHERE (
    SELECT COUNT(*)
    FROM Table2 i2
    JOIN Table1 i1 ON i1.Name = i2.Name
    WHERE i2.Type = types.Type
  ) = (
    SELECT COUNT(*)
    FROM Table2 i2
    WHERE i2.Type = types.Type
  )
  AND (
    SELECT COUNT(*)
    FROM Table1
  ) = (
    SELECT COUNT(*)
    FROM Table2 i2
    WHERE i2.Type = types.Type
  )
) AS result
JOIN Table2 ON result.Type = Table2.Type
実際に見てください:http://sqlfiddle.com/#!2/8d50e/1
MySQL では、GROUP_CONCAT関数を使用して、より短く読みやすいクエリを作成できます。
SELECT Table2.Name, Table2.Type
FROM
(
  SELECT Type
  FROM (SELECT DISTINCT Type FROM Table2) AS types
  WHERE (
    SELECT GROUP_CONCAT(Name ORDER BY Name)
    FROM Table2 i2
    WHERE i2.Type = types.Type
  ) = (
    SELECT GROUP_CONCAT(Name ORDER BY Name)
    FROM Table1
  )
) AS result
JOIN Table2 ON result.Type = Table2.Type
group_concat_max_lenに注意してください。
デモ: http://sqlfiddle.com/#!2/af700/1
本当に Table1 の全体を一致させたいかどうかは明確ではありませんでしたが、上記のソリューションは、一致する Food と Type のすべての組み合わせに対して簡単に拡張できます。
SELECT result.Food, Table2.Name, result.Type
FROM
(
  SELECT Type, Food
  FROM (SELECT DISTINCT Type, Food FROM Table2 JOIN Table1) AS combinations
  WHERE (
    SELECT COUNT(*)
    FROM Table2 i2
    JOIN Table1 i1 ON i1.Name = i2.Name
    WHERE i2.Type = combinations.Type
    AND i1.Food = combinations.Food
  ) = (
    SELECT COUNT(*)
    FROM Table2 i2
    WHERE i2.Type = combinations.Type
  )
  AND (
    SELECT COUNT(*)
    FROM Table2 i2
    WHERE i2.Type = combinations.Type
  ) = (
    SELECT COUNT(*)
    FROM Table1 i1
    WHERE i1.Food = combinations.Food
  )
) AS result
JOIN Table2 ON result.Type = Table2.Type
デモ: http://sqlfiddle.com/#!2/d4d4b/1