CodeGym /행동 /SQL SELF /테이블 생성의 기초: CREATE TABLE

테이블 생성의 기초: CREATE TABLE

SQL SELF
레벨 17 , 레슨 0
사용 가능

처음 강의에서 우리 관계형 데이터베이스랑 PostgreSQL의 기본 개념을 다뤘고, psql이랑 pgAdmin 사용법, 그리고 데이터베이스 생성과 관리도 배웠지. 이제 본격적으로 관계형 데이터베이스의 "건축 자재"인 테이블을 만들어볼 차례야. 테이블이 바로 우리가 나중에 필터링, 정렬, 조인할 모든 정보를 담고 있어.

PostgreSQL에서 테이블을 만들려면 CREATE TABLE 명령어를 써. 이 명령어로 테이블 구조, 즉 이름, 컬럼, 그리고 각 컬럼의 데이터 타입을 정의할 수 있어.

명령어의 기본 구조

기본 문법은 이렇게 생겼어:

CREATE TABLE 테이블 (
    컬럼1 데이터_타입 constraints,
    컬럼2 데이터_타입 constraints,
    ...
);

부분별로 살펴보자:

  • 테이블 – 테이블 이름 (예: students).
  • 컬럼1 – 컬럼 이름 (예: id, name).
  • 데이터_타입 – 컬럼의 데이터 타입 (예: INTEGER, VARCHAR).
  • constraints – 데이터 제약조건 (예: NOT NULL, PRIMARY KEY).

이제 첫 번째 테이블을 만들어보자.

테이블 생성 예시

시나리오: 학습용 데이터베이스에 학생 정보를 저장해야 해. 그래서 students 테이블을 만들고 필드는 다음과 같아:

  • id: 학생의 고유 식별자 (자동 증가);
  • name: 학생 이름 (최대 100자 문자열);
  • age: 학생 나이 (양의 정수).
CREATE TABLE students (
    id SERIAL PRIMARY KEY,  -- 학생의 고유 ID
    name VARCHAR(100),      -- 이름
    age INTEGER             -- 나이
);

여기서 무슨 일이 일어나냐면:

  1. id SERIAL PRIMARY KEY: id 컬럼이 자동으로 고유 번호(1, 2, 3...)를 생성해주고, 이 컬럼이 테이블의 기본키야.
  2. name VARCHAR(100): 최대 100자까지 저장 가능한 텍스트 컬럼이야.
  3. age INTEGER: 나이를 저장하는 숫자 컬럼이야.

이제 psql이나 pgAdmin에서 이 쿼리를 실행하면 students 테이블이 만들어질 거야.

컬럼의 데이터 타입

테이블을 만들 때 각 컬럼에 맞는 데이터 타입을 잘 선택하는 게 중요해. PostgreSQL에는 여러 타입이 있지만, 일단 제일 많이 쓰는 것부터 볼게.

데이터 타입 설명 값 예시
INTEGER 정수. 나이, 개수, 식별자 등에 좋아. 1, 42, 100
VARCHAR(n) 최대 n자까지 저장 가능한 문자열. 길이 제한이 있는 텍스트에 딱이야. 'Alice', 'Bob'
TEXT 길이 제한 없는 문자열. 긴 텍스트(예: 상품 설명)에 써. '아주 긴 텍스트...'
DATE 시간 없는 날짜. 생일, 이벤트 날짜 등에 써. 2023-10-12
BOOLEAN 논리 타입: TRUE 또는 FALSE. 플래그(예: 완료/미완료)에 써. TRUE, FALSE

적절한 데이터 타입 고르기

  • 숫자를 저장할 땐 INTEGER 써.
  • 길이 제한이 있는 문자열엔 VARCHAR(n)이 좋아.
  • 길이 제한 없는 텍스트엔 TEXT 써.
  • 날짜나 시간은 DATE 또는 TIMESTAMP에 저장해.

예시: courses 테이블 만들기

이번엔 데이터베이스에 강의 정보를 저장해야 한다고 해보자. 각 강의는 다음 정보를 가져:

  • id: 고유 식별자;
  • name: 강의명 (최대 100자 문자열);
  • description: 강의 설명 (긴 텍스트);
  • start_date: 강의 시작 날짜.

SQL 코드:

CREATE TABLE courses (
    id SERIAL PRIMARY KEY,      -- 강의의 고유 ID
    name VARCHAR(100),          -- 강의명
    description TEXT,           -- 설명
    start_date DATE             -- 시작 날짜
);

실습 과제

이제 네가 직접 테이블을 만들어볼 차례야! 과제는 이거야:

  1. teachers 테이블을 만들고 필드는 다음과 같아:
    • id: 고유 식별자.
    • name: 선생님 이름 (최대 50자 문자열).
    • subject: 담당 과목 (최대 50자 문자열).
    • hire_date: 채용 날짜.

실행 예시 코드:

CREATE TABLE teachers (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    subject VARCHAR(50),
    hire_date DATE
);

실행 후 psql에서 \d teachers 명령어로 테이블이 잘 만들어졌는지 확인해봐.

테이블 만들 때 자주 하는 실수

테이블을 처음 만들다 보면 실수할 수 있어. 자주 나오는 상황 몇 가지를 볼게:

테이블이나 컬럼 이름 실수. PostgreSQL에서 이름은 대소문자 구분 안 하지만, 이름에 "를 쓰면 주의해야 해. 예를 들어, CREATE TABLE "MyTable""MyTable"이라는 테이블을 만들고, mytable은 그 이름으로 인식 안 돼.

잘못된 데이터 타입. 존재하지 않는 데이터 타입을 쓰면 쿼리가 에러로 끝나.

CREATE TABLE example (
    column1 STRANGE_TYPE
);

이 쿼리는 STRANGE_TYPE이 없어서 실행 안 돼.

PRIMARY KEY 빼먹기. 기본키를 안 넣으면 테이블은 만들어지지만, 각 행을 구분하기가 힘들어져.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION