본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

54강 SQL 초석 다지기 : PostgreSQL CREATE TABLE

by DoitSQL 2022. 12. 28.
728x90

PostgreSQL 기초강의, PostgreSQL 기초강좌, PostgreSQL 기본강의, PostgreSQL 기본강좌

54강 SQL 초석 다지기 : PostgreSQL CREATE TABLE   

SQL 초석 다지기 54강 시작합니다.

본 강의는 PostgreSQL Tutorial을 참조합니다.  https://www.postgresqltutorial.com/

이번 시간에는

 PostgreSQL CREATE TABLE

에 대해서 알아보는 시간입니다.

 

요약: 이번 강의에서는 PostgreSQL CREATE TABLE 문을 사용하여 새 테이블을 만드는 방법을 배웁니다.


PostgreSQL CREATE TABLE syntax   

관계형 데이터베이스는 여러 관련 테이블로 구성됩니다. 테이블은 행과 열로 구성됩니다. 테이블을 사용하면 고객, 제품, 직원 등과 같은 구조화된 데이터를 저장할 수 있습니다.

새 테이블을 작성하려면 CREATE TABLE 문을 사용합니다. 

다음은 CREATE TABLE 문의 기본 구문을 보여줍니다.

CREATE TABLE [IF NOT EXISTS] table_name (
   column1 datatype(length) column_contraint,
   column2 datatype(length) column_contraint,
   column3 datatype(length) column_contraint,
   table_constraints
);  

 

위 기본구문에서:

  • 먼저 CREATE TABLE 키워드 뒤에 테이블 이름을 지정합니다.
  • 둘째, 이미 존재하는 테이블을 만들면 오류가 발생합니다. IF NOT EXIST 옵션을 사용하면 새 테이블이 없는 경우에만 새 테이블을 생성할 수 있습니다. IFNOT EXIST 옵션을 사용하고 테이블이 이미 존재하는 경우 PostgreSQL은 오류 대신 알림을 실행하고 새 테이블 생성을 건너뜁니다.
  • 셋째, 테이블 열의 쉼표 목록을 지정합니다. 각 열은 열 이름, 열에 저장되는 데이터 종류, 데이터 길이 및 열 제약 조건으로 구성됩니다. 열 제약 조건은 열에 저장된 데이터가 따라야 하는 규칙을 지정합니다. 예를 들어 null이 아닌 제약 조건은 열의 값이 NULL일 수 없습니다. 열 제약 조건에는 null, 고유, 기본 키, 검사, 외부 키 제약 조건이 포함되지 않습니다.
  • 마지막으로 기본 키, 외부 키 및 검사 제약 조건을 포함한 테이블 제약 조건을 지정합니다.

일부 테이블 제약 조건은 기본 키, 외부 키, 검사, 고유 제약 조건과 같은 열 제약 조건으로 정의할 수 있습니다.


Constraints   

PostgreSQL에는 다음과 같은 열 제약 조건이 포함됩니다.

 

  • NOT NULL – 열의 값이 NULL이 될 수 없습니다.
  • UNIQUE – 동일한 테이블 내의 행에서 고유한 열의 값을 보장합니다.
  • 주 키 – 주 키 열은 테이블의 행을 고유하게 식별합니다. 테이블에는 기본 키가 하나만 있을 수 있습니다. 기본 키 제약 조건을 사용하여 테이블의 기본 키를 정의할 수 있습니다.
  • CHECK – CHECK 제약 조건은 데이터가 부울식을 충족해야 함을 보장합니다.
  • Foreign KEY – 테이블의 열 또는 열 그룹의 값이 다른 테이블의 열 또는 열 그룹에 있는지 확인합니다. 기본 키와 달리 테이블에는 여러 외부 키가 있을 수 있습니다.

 

테이블 제약 조건은 둘 이상의 열에 적용된다는 점을 제외하고 열 제약 조건과 유사합니다.

 

PostgreSQL CREATE TABLE examples   

다음과 같은 열이 있는 accounts라는 새 테이블을 만듭니다.

 

  • user_id – 기본 키
  • username  – null이 아닌 고유 이름
  • password  – null이 아님
  • email  – null이 아닌 고유한 이메일
  • created_on – null이 아님
  • last_login – null

 

다음 문은 계정 테이블을 생성합니다.

CREATE TABLE accounts (
        user_id serial PRIMARY KEY,
        username VARCHAR ( 50 ) UNIQUE NOT NULL,
        password VARCHAR ( 50 ) NOT NULL,
        email VARCHAR ( 255 ) UNIQUE NOT NULL,
        created_on TIMESTAMP NOT NULL,
        last_login TIMESTAMP 
);  

테이블을 생성하고 확인해 봅니다.

 

다음 문은 role_id 및 role_name의 두 개의 열로 구성된 역할 테이블을 생성합니다.

CREATE TABLE roles(
   role_id serial PRIMARY KEY,
   role_name VARCHAR (255) UNIQUE NOT NULL
);  

 

다음 문은 user_id, role_id 및 grant_date라는 세 개의 열이 있는 account_role 테이블을 생성합니다.

CREATE TABLE account_roles (
  user_id INT NOT NULL,
  role_id INT NOT NULL,
  grant_date TIMESTAMP,
  PRIMARY KEY (user_id, role_id),
  FOREIGN KEY (role_id)
      REFERENCES roles (role_id),
  FOREIGN KEY (user_id)
      REFERENCES accounts (user_id)
);  

 

account_roles 테이블의 기본 키는 user_id와 role_id의 두열로 구성되므로 기본 키 제약 조건을 테이블 제약 조건으로 정의해야 합니다.

PRIMARY KEY (user_id, role_id)   

 

user_id 열은 계정 테이블의 user_id 열을 참조하므로 user_id 열에 대한 외부 키 제약 조건을 정의해야 합니다.

FOREIGN KEY (user_id)
REFERENCES accounts (user_id)
 

 

role_id 열은 역할 테이블의 role_id 열을 참조합니다. 또한 role_id 열에 대한 외부 키 제약 조건을 정의해야 합니다.

FOREIGN KEY (role_id)
REFERENCES roles (role_id) 

 

 

 

다음은 accounts , roles 및 account_roles 테이블 간의 관계를 보여줍니다.

 

accounts , roles 사이에 account_roles라는 둘 사이의 관계를 나타내는 테이블이 있습니다.

roles  :  account_roles는 1 :  N 관계

accounts :  account_roles 도 1 :  N 관계

테이블의 관계를 나타내는 표현에 대해서는 ERD 학습할 기회가 있으면 같이 살펴보도록 하겠습니다.

 

수고하셨습니다.


Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글