개키우는개발자 : )

PostgreSQL 테이블 구조 및 이름 변경 본문

PostgreSQL/데이터 조작 및 테이블 관리

PostgreSQL 테이블 구조 및 이름 변경

DOGvelopers 2019. 11. 19. 15:07
반응형

테이블 구조 변경

한번 만들어진 테이블 이여도 테이블 구조를 변경 할 수 있습니다. 이 기능으로 인해 업무변화에 유연하게 대처할 수 있습니다.

 

실습

 

- LINKS 테이블 생성

CREATE TABLE LINKS (
	LINK_ID SERIAL PRIMARY KEY,
	TITLE VARCHAR(512) NOT NULL,
	URL VARCHAR(1024) NOT NULL UNIQUE
);

 

- LINKS 테이블에 ACTIVE 컬럼을 추가

ALTER TABLE LINKS ADD COLUMN ACTIVE BOOLEAN;

 

- LINKS 테이블에 ACTIVE 컬럼을 제거

ALTER TABLE LINKS DROP COLUMN ACTIVE;

 

- TITLE 컬럼을 LINK_TITLE 컬럼으로 변경

ALTER TABLE LINKS RENAME COLUMN TITLE TO LINK_TITLE;

 

- TARGET 컬럼을 추가

ALTER TABLE LINKS ADD COLUMN TARGET VARCHAR(10);

 

- TARGET 컬럼의 DEFAULT 값을 "_BLANK"로 설정

ALTER TABLE LINKS ALTER COLUMN TARGET SET DEFAULT '_BLANK';

 

- LINKS 테이블에 LINK_TITLE,URL 데이터 저장

INSERT INTO links (LINK_TITLE,URL)
VALUES ('PostgreSQL Tutorial','http://www/postgresqltutorial.com/');
COMMIT;

 

- LINKS 테이블을 조회하면 TARGET 컬럼에 _BLANK 가 기본값으로 저장되어 있는걸 확인할 수 있습니다.

SELECT * FROM LINKS;

 

- TARGET 컬럼에 대한 체크 제약 조건을 추가 합니다.

ALTER TABLE LINKS ADD CHECK (TARGET IN ('_SELF','_BLANK','_PARENT','_TOP'));

 

- 제약조건에 없는 임의의 값을 저장 합니다.

INSERT INTO links (LINK_TITLE,URL,TARGET)
VALUES ('PostgreSQL Tutorial','http://www/postgresqltutorial.com/','ABCD');

 

SQL Error [23514]: 오류: 새 자료가 "links" 릴레이션의 "links_target_check" 체크 제약 조건을 위반했습니다

 

 

테이블 이름 변경

한번 만들어진 테이블이라고 하더라도 테이블 이름을 변경 할 수 있습니다.이 기능으로 인해 업무변화에 유연하게 대처할 수 있습니다.

 

- LINKS 테이블의 이름을 LK 로 변경합니다.

ALTER TABLE LINKS RENAME TO LK;

 

- LK_GROUP 테이블 만듭니다.

CREATE TABLE LK_GROUP(
	ID SERIAL PRIMARY KEY,
	NAME VARCHAR NOT NULL
);

 

- LK 테이블에 GROUP_ID 추가 합니다.

ALTER TABLE LK ADD COLUMN GROUP_ID INT;

 

- LK 테이블에 FOREIGN KEY 생성 합니다.

ALTER TABLE LK ADD FOREIGN KEY (GROUP_ID)
REFERENCES LK_GROUP (ID)

 

- VIEW 를 생성합니다 (VIEW 는 실체하는 데이터가 아닌 보기용 입니다)

CREATE VIEW LK_DATA AS
SELECT
	A.LINK_ID,
	A.LINK_TITLE,
	B.NAME "GROUP"
FROM
	LK A , LK_GROUP B
WHERE B.ID = A.GROUP_ID;

 

반응형

'PostgreSQL > 데이터 조작 및 테이블 관리' 카테고리의 다른 글

PostgreSQL CREATE TABLE AS SELECT (CTAS)  (0) 2019.11.19
PostgreSQL 테이블 생성  (2) 2019.11.17
PostgreSQL 데이터 타입  (0) 2019.11.17
PostgreSQL IMPORT 작업  (0) 2019.11.17
PostgreSQL EXPORT 작업  (0) 2019.11.16
Comments