2017-10-21 1 views
0

나는 이전 튜토리얼을 배우면서 Postgres를 배우기 때문에 게시 된 이후로 변경되었을 수도 있습니다. 자습서 (psql 사용)에서 테이블을 만들고 insert 문을 수행합니다. SQL을 활용PostgreSQL : INSERT INTO 구문 오류

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

내가 복사 붙여 넣기를 해봤 : 나는 각 삽입 문에 대해이 오류가

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'); 

: 여기 튜토리얼 및 오류의 원인이 psql 명령을 해당입니다 명령 psql 외부의 셸에서 명령을 실행하여 공백을 추가하고 ' 따옴표 대신 "을 사용하는 명령 (즉, INSERT) ... 모든 결과 t 그는 같은 오류. 뭔가 바뀌었나, 아니면 내가 뭔가 잘못하고있는 걸까요?

+3

'values' 키워드가 누락되었습니다. https://www.postgresql.org/docs/current/static/sql-insert.html 튜토리얼은 틀리다. –

+0

네. 나는 그걸 또한 시도했다고 생각했는데 아마도 '값'대신에 '가치'를했을 것입니다. 어쨌든 감사합니다 – DjH

답변

3

문제는 누락되었습니다 (의견에 언급 된대로) values입니다.

몇 가지 제안을하고 싶습니다. 먼저 insert을 사용할 때마다 항상 열을 나열해야합니다. 이것은 언어를 배우는 경우 특히 중요합니다. 좋은 습관을 배워야합니다.

두 번째로 복수 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)으로 해석합니다.