2016-10-25 130 views
0

我是學習SQL的新手,一直在努力爲任務創建表。這些是要求:使用Oracle在SQL中創建表11G

創建一個新表來跟蹤庫位置。

  • LIBRARY(lib_id,lib_name,lib_address,lib_city,lib_state,lib_zip)

  • LIB_ID是庫ID - 它是一個自動生成的數字。 (您應該創建一個名爲lib_id_seq的序列號,以1001開始並以1遞增。)

  • LIB_ID是主鍵。
  • LIB_NAME,LIB_ADDRESS和LIB_CITY的長度介於1到35個字符之間。
  • LIB_STATE是2個字符 - 默認爲TX。
  • LIB_ZIP是5個數字。檢查以下郵政編碼之一 - 75081,75080,75082,75079,75078

而這正是我寫了這麼遠:

CREATE TABLE LIBRARY 
(
    LIB_ID INT(4), 
    LIB_ADDRESS VARCHAR(35), 
    LIB_CITY VARCHAR(35), 
    LIB_STATE VARCHAR(2) DEFAULT ‘TX’, 
    LIB_ZIP INT(5) CHECK (Frequency IN ('75078', ‘75079', '75080', '75081', ‘75082’)) 
    PRIMARY KEY(LIB_ID) 
); 

CREATE SEQUENCE LIB_ID_SEQ 
START WITH 1001 
INCREMENT BY 1; 

我不斷收到錯誤,但我不確定我需要解決的問題。

+2

那麼你標記的3個不同的數據庫管理系統,爲所有這些事情的語法會有所不同。當然,你說你正在犯錯誤。如果您分享錯誤消息,我們不必猜測。 –

+0

對不起,只需點擊推薦的標籤即可。這寫在Oracle 11G –

+0

在[Oracle手冊](https://docs.oracle.com/cd/E11882_01/server.112/e41084/toc.htm)中,您是否找到語法「int(4)' ?。在SQL中'''和'''也是無效的。你需要使用一個簡單的單引號''' –

回答

0

這適用於SQL Server。您需要相應地修改相關數據庫的語法。

CREATE TABLE LIBRARY 

(
LIB_ID INTEGER PRIMARY KEY, 

LIB_ADDRESS VARCHAR(35), 

LIB_CITY VARCHAR(35), 

LIB_STATE VARCHAR(2) DEFAULT 'TX', 

LIB_ZIP INTEGER, 

CHECK(LIB_ZIP IN ('75078', '75079', '75080', '75081', '75082')) 

); 


CREATE SEQUENCE LIB_ID_SEQ 

START WITH 1001 

INCREMENT BY 1; 

要了解如何創建表格和約束,請在w3schools上查看此鏈接,因爲您似乎是初學者。

http://www.w3schools.com/sql/sql_primarykey.asp 
1

對於Oracle(兒童測試不確定的,如果SO批准)...

  • 使用VARCHAR2而不是VARCHAR,而不是INT
  • 使用數字加約束語法(它們命名)
  • 調整撇號的(刪除),而不是無論你在其中一些人有什麼:P(這是一個數字字段不應該使用文本撇號!)
  • 個人我不會指定一個表庫,因爲這是一個reserved word
  • 我不會使用數字郵政編碼,因爲我們絕不會在郵政編碼上做數學運算。

。 。

CREATE TABLE LIBRARY (
LIB_ID Number(4), 
LIB_ADDRESS VARCHAR2(35), 
LIB_CITY VARCHAR2(35), 
LIB_STATE VARCHAR2(2) DEFAULT 'TX', 
LIB_ZIP NUMBER(5), 
CONSTRAINT Lib_ZIP_CON CHECK (LIB_ZIP IN (75078, 75079, 75080, 75081, 75082)), 
CONSTRAINT LIB_ID_PK PRIMARY KEY(LIB_ID) 
); 

CREATE SEQUENCE LIB_ID_SEQ 
START WITH 1001 
INCREMENT BY 1; 

enter image description here

+0

我沒有設置序列,但您可以看到TX是默認的,並且我沒有第二個記錄(這是由於郵政編碼違反了檢查約束。 – xQbert