2011-03-15 134 views
0

我已经看过很多数据库的ER图和概念模式,但我仍然不是很清楚如何创建表并查询它们?表之间的关系?

例如,下面是一个模式数据库,如何创建表并查询它?

enter image description here

说我需要执行一个查询来查找所有的电影,其中包括流派中的关键词“美国”,“行动”(类型ID = 126)。有任何想法吗?

+1

这不是ER图。它看起来更像是Microsoft Access的屏幕截图,与任何公认的ER图表符号或ER建模惯例无关。 – sqlvogel 2011-03-15 13:15:22

+0

同意dportas。而且由于它是Access,当你绘制它们时,表格就在那里。在其他工具中,您有一个“生成到数据库”的步骤。 – 2011-03-15 13:58:17

回答

0

大多数可以创建ER图的工具也可以生成实现数据库所需的SQL语句。否则,你必须手动完成它,通过阅读图表并将它自己翻译成SQL。

所以,看ER图,你可以写

CREATE TABLE Film (
    Id INTEGER PRIMARY KEY, 
    Title VARCHAR(35) NOT NULL, 
    Description VARCHAR(256) NOT NULL, 
    Year INTEGER NOT NULL CHECK (Year > 1900), 
    Rating INTEGER NOT NULL DEFAULT 3 CHECK (Rating BETWEEN 1 AND 5) 
); 

该图像不显示的数据类型(如VARCHAR(35))和约束(如年度> 1900),所以我只是猜测。

现在你只需要在表格中插入数据,你就可以走了。

+0

但你如何通过阅读这张图创建表?是通过使用CREATE TABLE命令?我正在谈论MySQL而不是SQL。以上是sql,但我不熟悉sql。 – homlyn 2011-03-15 13:19:55

+0

@homlyn:是的,使用'CREATE TABLE'。我会编辑我的答案。 – 2011-03-15 13:21:59

+0

谢谢你,你回答我的问题,关于如何从架构中创建它.. – homlyn 2011-03-15 15:11:00

0
select Film.* 
    from Film 
inner join FilmGenre on FilmGenre.FilmId = Film.Id 
inner join Genre on Genre.Id = FilmGenre.GenreId 
where Film.Title like '%America%' 
    and Genre.Name = 'Action' 
+0

非常感谢,但流派编号126呢? – homlyn 2011-03-15 15:10:09

+0

如果你告诉我你需要一个流派“动作”,那么我不需要按流派编号126进行查询。但是如果你想这样做,只需将最后一行替换为“and Genre.Id = 126” – 2011-03-15 18:28:14