2015-02-07 52 views
0

我創建了一個表:的Oracle SQL:列不允許

CREATE TABLE AIRLINE (
    airline_code  NUMBER(4) PRIMARY KEY NOT NULL, 
    airline_name  VARCHAR(29) NOT NULL, 
    airline_address1 VARCHAR(29) NOT NULL, 
    airline_address2 VARCHAR(29), 
    airline_postcode VARCHAR(29), 
    airline_city  VARCHAR(29) NOT NULL, 
    airline_country  VARCHAR(29) NOT NULL 
); 

當我插入此插入語句:

INSERT INTO AIRLINE (airline_code, airline_name, airline_address1, airline_address2, airline_postcode, airline_city, airline_country) 
VALUES ("BA07", "British Airways PLC", "Waterside", "PO Box 365, Harmondsworth", "UB7 0GB", "London", "United Kingdom"); 

我得到不允許指向英國說「列錯誤在這裏「,據我所知,有相同數量的列數據被插入到表中。

+1

另外,'airline_code'有'datatype'不匹配,你不能用'NUMBER'來存儲''BA07'。看到我的答案。 – 2015-02-07 11:11:09

+1

如果有疑問,請閱讀以下手冊:https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm#SQLRF00218和https://docs.oracle.com/cd/E11882_01/server 0.112/e41084/sql_elements008.htm#SQLRF00223 – 2015-02-07 12:04:08

回答

4

雙引號通常用於對象名稱(例如,列名「First name」)。這是SQL-92標準的一部分。

在ANSI SQL中,雙引號引用對象名稱(例如表格),允許它們包含不允許的字符,或與保留字(避免這種情況)相同。

單引號是用於字符串。

INSERT INTO AIRLINE (airline_code, airline_name, airline_address1, 
airline_address2, airline_postcode, airline_city, airline_country) 
VALUES ('BA07', 'British Airways PLC', 'Waterside', 'PO Box 365, 
Harmondsworth', 'UB7 0GB', 'London', 'United Kingdom'); 
1

使用單引號環繞字符串不是雙引號。

1

AIRLINE_CODE NUMBER(4)PRIMARY KEY NOT NULL,

「BA07」

除了向有關雙引號其他的答案,你需要對於NUMBER數據類型,請確保不要使用任何單引號標記,只需將單引號內的值括在STRING

在你的情況,column airline_code is type NUMBER(4)。但是,您要插入的值是字母數字,'BA07'。因此,您需要先將列的數據類型更改爲VARCHAR2(4)

CREATE TABLE AIRLINE (
    airline_code  VARCHAR2(4) PRIMARY KEY NOT NULL, 
    airline_name  VARCHAR(29) NOT NULL, 
    airline_address1 VARCHAR(29) NOT NULL, 
    airline_address2 VARCHAR(29), 
    airline_postcode VARCHAR(29), 
    airline_city  VARCHAR(29) NOT NULL, 
    airline_country  VARCHAR(29) NOT NULL 
); 

INSERT INTO AIRLINE (airline_code, airline_name, airline_address1, 
airline_address2, airline_postcode, airline_city, airline_country) 
VALUES ('BA07', 'British Airways PLC', 'Waterside', 'PO Box 365, 
Harmondsworth', 'UB7 0GB', 'London', 'United Kingdom');