2010-09-11 2 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

В нем говорится, что вызывает синтаксическую ошибку. в сообщении об ошибке –

ответ

2

да все VARCHAR требуется максимальный размер.

+0

ах спасибо, это то же самое для типа данных char. Что вы должны делать, если не знаете, какими будут размеры этого поля? – binarycreations

+0

ответил на собственный вопрос, спасибо alex martelli, очень полезный пост! – binarycreations

1

Как the docs говорят,

Типы CHAR и VARCHAR будут объявлены с длиной, которая указывает максимальное количество символов, которые вы хотите магазин.

Другой способ проверки этого (что длина не по желанию): проверьте data_type производства на странице Релевантном DOCS на syntax (для CREATE TABLE), и вы увидите, в части:

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

См.? (length) часть не в квадратных скобках в этом описании синтаксиса: это означает, что это не необязательно, но обязательным (в CHARACTER SET и COLLATE части являются необязательными, поэтому они в квадратных скобках).

Я объясняю эту технику для полного чтения документов, потому что, изучая специфический синтаксис для этого очень конкретного случая использования, конечно, важно, научиться читать руководства и находить ответы на свои вопросы (синтаксис и т. Д.) очень быстрым образом, что еще более важно, и значительно увеличит вашу производительность SQL.

Смежные вопросы