2017-10-21 46 views
0

私は以前のチュートリアルでPostgresを学んでいますので、公開されてから変更されている可能性があります。チュートリアル(psqlを使用)では、テーブルを作成してからinsert文を作成します。ここではチュートリアルと、エラーが発生psqlコマンドに対応するには、次のとおりです。PostgreSQL:INSERT INTO構文エラー

http://www.postgresqlforbeginners.com/2010/11/create-table-and-constraints.html

create table people(
    id int PRIMARY KEY, 
    name varchar NOT NULL 
); 
insert into people(0,'Steve Jobs'); 
insert into people(1,'Mike Markkula'); 
insert into people(2,'Mike Scott'); 
insert into people(3,'John Sculley'); 
insert into people(4,'Michael Spindler'); 
insert into people(5,'Gil Amelio'); 
insert into people(6,'Mike Scott'); 

私は、各INSERT文でこのエラーが出る:

ERROR: syntax error at or near "0" 
LINE 1: insert into people(0,'Steve Jobs'); 
         ^

私はSQLを大文字、コピー&ペーストを試してみましたシェルからpsqlの外部でコマンドを実行し、スペースを追加すると、'の代わりにを使用するコマンド(つまり、INSERT)...すべての結果はt彼は同じエラー。何か変わったのですか、何か間違っている可能性がありますか?

+3

あなたは 'values'キーワードがありません:https://www.postgresql.org/docs/current/static/sql-insert.htmlこのチュートリアルは間違っています –

+0

それはそれでした。私もそれを試したと思っていました。おそらく、私は 'values'の代わりに' value'をしたかもしれません。とりあえずありがとう – DjH

答えて

3

values(コメントに記載されているように)に問題があります。

私はいくつかの提案をしたいと思います。まず、insertを使用するたびに、常に列をリストする必要があります。あなたが言語を学んでいるなら、これは特に重要です。あなたは良い習慣を学ぶべきです。

第2に、複数のinsertsは必要ありません。

insert into people (id, name) 
    values (0,'Steve Jobs'), 
      (1,'Mike Markkula'), 
      (2,'Mike Scott'), 
      (3,'John Sculley'), 
      (4,'Michael Spindler'), 
      (5,'Gil Amelio'), 
      (6,'Mike Scott'); 

そして、あなたはおよそserialを学ぶ必要があります。複数の行を挿入する短い方法です。このコードを記述するためのより一般的な方法は次のようになります

create table people (
    id serial PRIMARY KEY, 
    name varchar NOT NULL 
); 

insert into people (name) 
    values ('Steve Jobs'), 
      ('Mike Markkula'), 
      ('Mike Scott'), 
      ('John Sculley'), 
      ('Michael Spindler'), 
      ('Gil Amelio'), 
      ('Mike Scott'); 

データベースによって自動的に割り当てられid

は( 1なく 0から始まります)。

私は以下を追加する必要があります。私は個人的にはvarcharの長さなしで不快です。これはPostgresでは完璧ですが、データベースによってはvarchar(1)と解釈されるものもあります。

関連する問題