2010-09-11 36 views
1

我最近開始學習SQL,我也不能確定是什麼原因造成我的語法錯誤(見下文):SQL語法錯誤,同時創建一個表

CREATE TABLE Users(
    user_id smallint not null auto_increment, 
    username varchar(50) unique, 
    password varchar(41), 
    dob date, 
    session_id varchar not null, 
    cookie varchar not null, 
    PRIMARY KEY(user_id), 
    CONSTRAINT dob_valid CHECK(dob < current_date()) 
); 

這不工作時,將所有varchar字段有一個預定義長度。所有varchar類型的字段都需要大小參數嗎?

如果這個問題看起來很簡單,我很抱歉。

感謝您的幫助提前

+0

它說什麼導致語法錯誤。在錯誤信息 – 2010-09-11 17:40:57

回答

2

是所有varchar需要最大大小。

+0

啊謝謝,這與char數據類型是一樣的。如果你不知道這個字段的大小是什麼,你應該怎麼做? – binarycreations 2010-09-11 17:45:49

+0

回答自己的問題感謝alex martelli,一個非常有用的職位! – binarycreations 2010-09-11 17:49:53

1

由於the docs說,

CHAR和VARCHAR類型聲明的長度表示 你 要存儲的最大字符數 。

選中此的另一種方式(即長度可選):檢查data_type生產相關的文檔的頁面上syntax(用於CREATE TABLE),你會看到,部分:

VARCHAR(length) 
     [CHARACTER SET charset_name] [COLLATE collation_name] 

請參閱?該(length)部分方括號在本語法描述中:這意味着它的可選的,但強制性的(在CHARACTER SETCOLLATE可選的,所以他們在方括號內)。

我正在解釋這個技術來閱讀文檔的長度,因爲在學習這個特定用例的具體語法時當然很重要,學習閱讀手冊並找到你的問題的答案(語法和其他)以更快的方式更加重要,並且將極大地提高您的SQL生產力。