PostgreSQL을 익히기 위해 설치했습니다. Oracle을 이용했었어서 Oracle문법과 비교를 해보겠습니다.
Oracle에서는 SqlDeveloper를 이용해 쿼리문을 조작 할 수 있었고 PostgreSQL에서는 pgAdmin을 이용해 비슷한 동작을 할 수 있습니다.
그리고 가장 중요한것은 자료형의 차이가 있습니다.
Oracle | PostgreSQL |
VARCHAR2 | VARCHAR -> character varying |
NUMBER | NUMERIC 또는 BIGINT |
DATE | TIMESTAMP 또는 DATE |
CLOB | TEXT |
이런식으로 미묘하게 다릅니다.
그리고 Seq, 이름, 급여, 입사일을 나타내는 간단한 테이블을 제작할 경우
-- Table: public.Users
-- DROP TABLE IF EXISTS public."Users";
CREATE TABLE IF NOT EXISTS public."Users"
(
"Seq" integer NOT NULL DEFAULT nextval('"Users_Seq_seq"'::regclass),
"Name" character varying COLLATE pg_catalog."default" NOT NULL,
"Sal" numeric NOT NULL,
"RegDate" date NOT NULL DEFAULT CURRENT_DATE,
CONSTRAINT "Users_pkey" PRIMARY KEY ("Seq")
)
TABLESPACE pg_default;
ALTER TABLE IF EXISTS public."Users"
OWNER to postgres;
이런식으로 작성하게 되는데 Oracle과의 차이점은 일단 테이블명을 혼자 쓰지 않고 public.을 붙인 다음 ""로 감싸줘야 합니다. oracle처럼 테이블명만 작성할경우 인식하지 못해서 명시적으로 지정해줘야 한다고 합니다.
그리고 테이블명도 oracle에서는 ""로 감싸지 않았지만 postgresql에서는 감싸줍니다.
추가로 oracle에서 자동증가번호인 sequence는 postgreSQL에서 Serial로 사용합니다.
내부에 테이블을 추가할때는 insert into 테이블명 (넣을 테이블) values (해당 값)으로 넣습니다.
WHERE조건절도 oracle과 비슷하지만 유의사항이 있습니다.
먼저 조건걸 컬럼은 ""로 감싸줘야 하며 대소문자 구분을 해야합니다.
여기서 where "Sal" >= 500;이 아니라
where "sal" >= 500으로 적거나 where Sal >= 500으로 작성할경우 동작하지 않습니다.
이렇게 간단하게 oracle유저가 postgresql을 사용하는 방법을 익혔습니다. 다음에는 전자정부 프레임워크와 연결하는 방법과 join등에 대해 알아보겠습니다.