반응형
Postgresql에서 PK(primary key)인 아이디에 auto_increment, 즉 자동으로 아이디 값을 추가해주는 특성을 부여해보겠습니다. 먼저 auto_increment가 아닌 기본 설정으로 아이디를 생성해볼께요.
CREATE TABLE COMPANY (
"CompanyID" INT PRIMARY KEY
"CompanyName" VARCHAR(32),
"Floor" VARCHAR(32)
);
INSERT INTO COMPANY(CompanyName, Floor) VALUES('Finance', '6F');
INSERT INTO COMPANY(CompanyName, Floor) VALUES('Marketing', '3F');
SELECT * FROM COMPANY;
DELETE FROM COMPANY WHERE companyid = 2;
INSERT INTO COMPANY(CompanyName, Floor) VALUES('AI LAB', '10F');
SELECT * FROM COMPANY;
위의 예시에서 보면 기존의 ID=2인 마케팅 부서가 삭제되고, AI LAB 부서가 생성되어도 PK는 2가 됩니다. 즉 auto_increment 특성이 없다면 새로운 데이터(Tuble format)에 현재 남아있는 테이블의 가장 마지막 ID + 1을 부여하는 것이죠.
아래는 auto_increment 특성을 부여한 버전입니다. Postgresql에서는 SERIAL 이란 타입을 사용하면 auto_increment가 기본으로 설정됩니다. SERIAL이란 auto_increment를 지원하는 시퀀스 타입입니다.
CREATE TABLE COMPANY (
CompanyID SERIAL PRIMARY KEY,
CompanyName VARCHAR(32),
Floor VARCHAR(32)
);
INSERT INTO COMPANY(CompanyName, Floor) VALUES('Finance', '6F');
INSERT INTO COMPANY(CompanyName, Floor) VALUES('Marketing', '3F');
DELETE FROM COMPANY WHERE companyid = 2;
INSERT INTO COMPANY(CompanyName, Floor) VALUES('AI LAB', '10F');
SELECT * FROM COMPANY;
위와 똑같이 명령어를 입력했음에도 AI LAB 부서의 ID는 3이 되었죠. 테이블에 남아 있는 마지막 ID + 1을 하는 것이 아니라, 이전에 존재했던(현재 시점에선 삭제된) 데이터 PK를 기억하고 그 뒤부터 추가하는 것입니다. 본인이 어떤 프로젝트를 할 때 삭제한 기록을 남겨야 한다면 auto_increment를 사용해야겠죠.
다음은 이미 만든 테이블을 수정하는 과정입니다. 컬럼을 추가 및 삭제할 수도 있고, 컬럼명과 타입을 변경할 수도 있습니다.
# 컬럼(필드) 추가
ALTER TABLE COMPANY ADD COLUMN staffnumber INT;
SELECT * FROM COMPANY;
# 컬럼명 및 타입 수정
ALTER TABLE COMPANY RENAME COLUMN staffnumber TO managername;
ALTER TABLE COMPANY ALTER COLUMN managername TYPE VARCHAR(32);
SELECT * FROM COMPANY;
# 특정 컬럼 PK 지정
ALTER TABLE ONLY customercustomerdemo
ADD CONSTRAINT pk_customercustomerdemo PRIMARY KEY ("CustomerID", "CustomerTypeID");
728x90
반응형
'문돌이 존버 > DB 및 SQL 스터디' 카테고리의 다른 글
Postgresql function, as keyword, typecasting 사용하기 (0) | 2021.02.09 |
---|---|
Neo4j import csv & create node (0) | 2021.02.07 |
Neo4j 그래프 DB 개념 및 cyper 쿼리 예제 (0) | 2021.02.07 |
Postgresql 테이블 Join, Group by 사용법 (0) | 2021.02.04 |
윈도우 terminal 및 파이썬 MySQL DB 생성, 데이터 입력 (0) | 2021.01.21 |