2011-03-15 177 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