Koras02
Koras02코딩웹
Koras02
전체 방문자
오늘
어제
  • 분류 전체보기 (299)
    • 백엔드 (59)
      • nestjs (2)
      • Ruby (3)
      • PostgresQL (11)
      • MySQL (5)
      • Haskell (7)
      • Koa (3)
      • Java (3)
      • Python (5)
      • Rust (5)
      • MongoDB (2)
      • PHP (3)
      • Spring Boot (1)
      • redis (5)
      • deno (2)
    • 웹서버 (3)
      • nginx (1)
      • Apache (2)
      • Google Web Server (0)
    • 모바일개발 (5)
      • Figma (0)
      • React Native (2)
      • swift (0)
      • Flutter (3)
      • Kotlin (0)
    • 프론트 엔드 (158)
      • HTML (34)
      • CSS (7)
      • Javascript (35)
      • Angular (0)
      • Typescript (2)
      • React (58)
      • Vue (2)
      • GIT (6)
      • GraphQL (1)
      • Doker (4)
      • Go (8)
      • svelte (1)
      • gatsby (0)
    • etc. (47)
      • Notion (0)
      • TIL (24)
      • Algorithm (17)
      • Algorithm 개념 정리 (2)
      • Wiki (3)
      • Official document (1)
    • 웹개념 (12)
    • 변수정리 (1)
    • VSCode (2)
    • 포트폴리오 분석 (2)
      • React (2)
    • os (5)
      • 윈도우 (4)
      • Mac (0)
      • 가상머신 (0)
      • linux (1)
    • 응용프로그램언어 (2)
      • C (2)
      • C++ (0)
      • C# (0)
    • 블로그 운영관련 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
글쓰기

공지사항

  • [공지사항] 개발 이슈나 공식문서 업데이트 업로드 예정입니⋯

인기 글

태그

  • CSS
  • redis
  • Java
  • React
  • go
  • Rust
  • Haskell
  • html5
  • 알고리즘
  • PostgreSQL
  • Til
  • koa
  • javascript
  • mysql
  • 데이터 타입
  • 문자열
  • 하스켈
  • 프로그래머스
  • Flutter
  • html

티스토리

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
Koras02

Koras02코딩웹

[PostgreSQL] Postgresql 강좌 - 6. 테이블 관리 (생성,변경, 삭제)
백엔드/PostgresQL

[PostgreSQL] Postgresql 강좌 - 6. 테이블 관리 (생성,변경, 삭제)

2022. 4. 10. 22:59
728x90

PostgreSQL을 배운지 일주일 정도 지났습니다. 어느정도 해보니 재밌고 할만하네용 ㅎㅎㅎ

그럼 이번 시간에 배울 내용은 테이블 관리에 대해 알아보도록 하겠습니다.

 

테이블 생성

테이블을 생성하기 위해서는 CREATE TABLE table_name을 이용해 테이블을 생성할 수 있습니다.

테이블을 생성할 때는 명령어를 실행하는 USER가 테이블의 소유자가 됩니다.

 

테이블 생성에 대한 Syntax

CREATE TABLE table_name ( [
   column_name1 data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
  column_name2 data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
  column_name3 data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
  …
] )

테이블에 추가될 컬럼 이름을 column_name에 넣고 컬럼의 데이터 타입을 data_type 부분에 넣습니다. 

그리고 column_constraint에 생성한 커럼의 제약 조건을 넣어줍니다.

 

다음은 테이블 생성에 대한 몇 가지 예지입니다

Create table 명령어로 departments 테이블을 생성하고 department_id와 name컬럼을 생성해줍니다.

Department_id의 데이터 타입은 integer이고 이 테이블의 DefaultKey(기본키)가 됩니다.

Name의 데이터 타입은 varchar(50)입니다.

 

CREATE TABLE departments(
    Department_id   integer PRIMARY KEY,
    Name        varchar(50)
);

아래 예제에는 CREATE TABLE로 flims테이블을 생성합니다.

테이블의 컬럼으로 code, title, did, date_prod,kind,len 등이 있고

 

films 테이블에서는 제약 조건으로 code 컬럼에서는 NULL값을 갖지 않는

NOT NULL조건과 production 테이블에서 data_prod 컬럼이

중복 없이 유일한 UNIQUE 조건을 만족해야 합니다.

CREATE TABLE films (
    code        char(5) NOT NULL,
    title       varchar(40),
    did         integer,
    date_prod   date,
    kind        varchar(10),
    len         interval hour to minute,
    CONSTRAINT production UNIQUE(date_prod)
);

테이블 변경

테이블을 변경하는 것은 ALTER TABLE table_name을 이용해 테이블을 변경할 수 있습니다.

ALTER TABLE table_name 
[ADD|DROP|ALTER|SET|RENAME] 
    column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ];

[ADD|DROP|ALTER|SET|RENAME]  은 테이블을 수정할 때 변경할 내용을 선택합니다.

컬럼을 추가할때는 ADD, 삭제시 DROP, 존재하는 컬럼의 데이터를 변경할 때 ALTER, 

 

테이블을 다른 TABLESPACE나 SCHEMA로 이동 시 SET,

테이블, 컬럼 제약조건의 이름을 변경할 시 RENAME을 사용합니다.

 

테이블에 변경할 컬럼 이름을 column_name에 넣고 컬럼의 데이터 타입을 data_type에 넣습니다.

그리고 column_constraint에 변경할 컬럼의 제약 조건을 넣어줍니다.

 

다음은 테이블 변경에 대한 몇가지 예제입니다.

 

departments 테이블에 데이터 타입이 varchar(50)인 address 컬럼을 추가합니다.

 ALTER TABLE departments 
     ADD COLUMN address varchar(50);

departments 테이블에 address 컬럼의 이름을 city로 변경합니다.

ALTER TABLE departments 
  RENAME COLUMN address TO city;

departments 테이블에서 zipchk 제약조건을 삭제합니다.

ALTER TABLE distributors
     DROP    CONSTRAINT    zipchk;

departments 테이블에서 tablespace를 fasttablespace tablespace로 이동합니다.

ALTER TABLE distributors
    SET    TABLESPACE    fasttablespace;

departments 테이블에서 address 컬럼의 데이터 타입을 varchar(80)으로 변경후

name컬럼의 데이터 타입을 varchar(100)으로 변경합니다.

ALTER TABLE distributors
    ALTER COLUMN address TYPE varchar(80),
    ALTER COLUMN name TYPE varchar(100);

테이블 삭제

테이블을 삭제하는 것은 DROP TABLE table_name을 이용해 테이블을 삭제할 수 있습니다.

 

테이블 삭제 Syntax

DROP TABLE [ IF EXISTS ] table_name [, ...] [ CASCADE | RESTRICT ]

테이블을 삭제할 시 테이블을 소유하고 있는 USER나 SUPERUSER만이 테이블을 삭제할 수 있습니다.

테이블 전체를 삭제하는 것이 아닌 테이블 내의 행들만 삭제 할때는 DELETE나 TRUNCATE를 사용합니다.

 

먼전 삭제할 테이블 이름을 table_name에 넣고 제약조건으로 CASCADE를 사용할 경우

이 테이블과 view나 개체들도 함께 삭제됩니다.

 

RESTRICT를 사용할 경우 다른 개체가 종속되어 있을 경우 테이블 삭제를 제한합니다.

다음은 FIlms 테이블과 distributors 테이블 삭제 예제입니다.

DROP TABLE films, distributors;

참고 자료

 

테이블 관리 (생성,변경,삭제)

테이블 생성 CREATE TABLE table_name 을 이용하여 테이블을 생성할 수 있습니다. 테이블을 생성할 때 명령을 실행하는 USER가 테이블의 소..

www.gurubee.net

 

'백엔드 > PostgresQL' 카테고리의 다른 글

[PostgreSQL] Postgresql 강좌 - 7.SELECT 문법  (0) 2023.01.09
[PostgreSQL] Postgresql 강좌 - 5.제약 조건  (0) 2022.04.08
[PostgreSQL] Postgresql 강좌 - 4. 데이터 타입  (0) 2022.04.08
    '백엔드/PostgresQL' 카테고리의 다른 글
    • [PostgreSQL] Postgresql 강좌 - 8.DML
    • [PostgreSQL] Postgresql 강좌 - 7.SELECT 문법
    • [PostgreSQL] Postgresql 강좌 - 5.제약 조건
    • [PostgreSQL] Postgresql 강좌 - 4. 데이터 타입
    Koras02
    Koras02
    현재 사용중인 언어 - next-js,react,vue, typescript

    티스토리툴바