通过在SQL中引用另一张表中的列将数据插入到一张表中
<p>我已经创建了两个表,一个是animation_companies(动画公司),另一个是cartoon_characters(卡通角色)。现在我收到了一个“模拟主管请求插入信息到我创建的数据库”的文档。数据如下所示:<br /><br />animation_companies(动画公司)表将只包含以下三条记录:</p><p><br /></p>
<pre class="brush:php;toolbar:false;">Warner Bros.
Disney
Nickelodeon</pre>
<p>cartoon_characters(卡通角色)表将包含仅含有十四(14)条记录,包括卡通角色的名称、创建年份以及拥有该卡通角色的公司。<br /><br />公司"Warner Bros."、"Disney"和"Nickelodeon"仅用于展示目的,必须从animation_companies(动画公司)表中引用。</p><p><br /></p>
<pre class="brush:php;toolbar:false;">|Cartoon Name |Creation Year |Company
| ------------- | ------------- |----------- |
|Porky Pig |1935 |Warner Bros.|
|Daffy Duck |1937 |Warner Bros.|
|Elmer Fudd |1937 |Warner Bros.|
|Bugs Bunny |1940 |Warner Bros.|
|Foghorn Leghorn|1946 |Warner Bros.|
|Mickey Mouse |1928 |Disney |
|Goofy |1934 |Disney |
|Donald Duck |1931 |Disney |
|Elsa of Arendelle|2013 |Disney |
|Anna of Arendelle|2013 |Disney |
|Doug Funnie |1991 |Nickelodeon |
|Arnold Shortman|1985 |Nickelodeon |
|Tommy Pickles |1991 |Nickelodeon |
|Aang |2005 |Nickelodeon |</pre>
<p>使用以下语句创建了animation_companies(动画公司)表:</p>
<pre class="brush:php;toolbar:false;">CREATE TABLE Animation_Companies
(
CompanyID INT PRIMARY KEY AUTO_INCREMENT,
CompanyName VARCHAR(100) NOT NULL
);
The table cartoon_characters was created using this statement:
CREATE TABLE Cartoon_Characters
(
cartoonID INT PRIMARY KEY AUTO_INCREMENT,
cartoonName VARCHAR(100) NOT NULL,
yearCreated INT,
OwningCompany INT NOT NULL,
CompanyID INT NOT NULL,
CONSTRAINT Cartoon_Characters_fk_Animation_Companies
FOREIGN KEY (CompanyID) REFERENCES Animation_Companies (CompanyID)
);</pre>
<p>我使用以下语句向animation_companies(动画公司)表的记录插入了数据:</p>
<pre class="brush:php;toolbar:false;">INSERT INTO animation_companies(CompanyName)
VALUES ('Warner Bros.'), ('Disney'), ('Nickelodeon');</pre>
<p>我面临的问题如下所示:<br /><br />"向Cartoon_Characters(卡通角色)表插入数据:<br /><br />不使用列列表,编写插入语句,插入卡通名称、创建年份和所属公司。<br /><br />注意事项:<br /><br />将字符串用单引号括起来 留意空格 自动递增的值使用DEFAULT 公司通过整数ID进行引用"<br /><br />这是我尝试的语句:</p><p><br /></p>
<pre class="brush:php;toolbar:false;">INSERT INTO cartoon_characters
VALUES (DEFAULT, 'Porky Pig', 1935, 'Warner Bros.', 1),
(DEFAULT, 'Daffy Duck', 1937, 'Warner Bros.', 1),
(DEFAULT, 'Elmer Fudd', 1937, 'Warner Bros.', 1),
(DEFAULT, 'Bugs Bunny', 1940, 'Warner Bros.', 1),
(DEFAULT, 'Foghorn Leghorn', 1946, 'Warner Bros.', 1),
(DEFAULT, 'Mickey Mouse', 1928, 'Disney', 2),
(DEFAULT, 'Goofy', 1934, 'Disney', 2),
(DEFAULT, 'Donald Duck', 1931, 'Disney', 2),
(DEFAULT, 'Elsa of Arendelle', 2013, 'Disney', 2),
(DEFAULT, 'Anna of Arendelle', 2013, 'Disney', 2),
(DEFAULT, 'Doug Funnie', 1991, 'Nickelodeon', 3),
(DEFAULT, 'Arnold Shortman', 1985, 'Nickelodeon', 3),
(DEFAULT, 'Tommy Pickles', 1991, 'Nickelodeon', 3),
(DEFAULT, 'Aang' 2005, 'Nickelodeon', 3);</pre>
<p><br /></p>
一个方法是先将数据插入到一个临时表中。
然后将其与Animation_Companies表进行连接(JOIN)。