지난 글에서 우리는 고객 테이블을 직접 만들었다.

테이블을 만들고, 데이터를 넣고, 조회해서 확인까지 했다.
[ PostgreSQL 초보자 실습 03: 테이블 생성과 INSERT 데이터 입력 ]

이번에는 메뉴 테이블부터 다시 시작한다.

고객 테이블과 비슷해서 복습하기 좋다.

이번 글에서는 외우기보다

왜 테이블을 연결해야 하는지부터 보자.

이 글은 PostgreSQL 메뉴 테이블(cafe.menus)을 예시로 CREATE TABLE 작성, 데이터 타입과 제약 조건 정리, INSERT 입력, SELECT 확인까지 순서대로 따라가 보는 실습 노트다.

PostgreSQL 실습 노트 04에서 메뉴 테이블 생성과 주문 테이블 FK 개념으로 넘어가는 흐름을 보여주는 대표 이미지

목차

  1. 지난 글에서 한 일 다시 보기
  2. 메뉴 테이블은 어떤 정보를 저장할까?
  3. 메뉴 테이블 컬럼 정리하기
  4. 메뉴 테이블 CREATE TABLE 작성하기
  5. 사용할 SQL 키워드 확인해보자
  6. 메뉴 테이블에 사용할 데이터 타입 정리
  7. 제약 조건 확인하기
  8. 메뉴 테이블 SQL 실제로 작성하기
  9. SQL 실행 전 필수 확인
  10. 메뉴 테이블 SQL 실행하고 확인하기
  11. 메뉴 데이터 INSERT 하기
  12. 준비 중인 메뉴는 어떻게 넣을까?

시작하기전! 알아두면 좋은 TIP.

이쯤되면 궁금할 수 있을 것 같은 부분!

SQL 문법은 줄바꿈 들여쓰기 같은것을 꼭해야하는 건가요?

SQL은 Python처럼 들여쓰기로 구조를 판단하지 않는다.
아직 파이썬을 모르는 사람은 아래 내용정도만 알고 가자!

SQL 문법에서 줄바꿈과 들여쓰기보다 괄호, 쉼표, 따옴표, 세미콜론 위치가 중요하다는 설명 이미지

줄바꿈과 들여쓰기는 대부분 사람이 보기 좋게 하기 위한 것이다.

SQL에서 더 중요한 것은
괄호, 쉼표, 따옴표, 세미콜론의 위치다.

구분의미
줄바꿈사람이 읽기 쉽게 나눈 것
들여쓰기사람이 구조를 보기 쉽게 한 것
쉼표 ,값과 값을 구분하는 실제 문법
괄호 ( )컬럼 목록, 값 묶음을 구분하는 실제 문법
따옴표 ' '글자 값을 표시하는 실제 문법
세미콜론 ;SQL 문장의 끝을 표시

1. 지난 글에서 한 일 다시 보기

지난 글에서는 고객 테이블을 직접 만들어보았다.

먼저 고객 테이블에 어떤 컬럼이 필요할지 생각했고,
CREATE TABLE로 실제 테이블을 만들었다.

그다음 INSERT INTO로 샘플 고객 데이터를 입력하고,
SELECT로 제대로 들어갔는지 확인했다.

흐름은 이랬다.

고객 테이블 구조 고민
→ CREATE TABLE로 테이블 생성
→ INSERT로 데이터 입력
→ SELECT로 결과 확인

이번 글에서는 이 흐름을 그대로 한 번 더 사용한다.

먼저 메뉴 테이블을 만들고,
그다음 주문 테이블에서 새로운 개념인 FK를 만나본다.

이전 글:

PostgreSQL 초보자 실습 03: 테이블 생성과 INSERT 데이터 입력


2. 메뉴 테이블은 어떤 정보를 저장할까?

고객 테이블은
손님 정보를 저장하는 표였다.

이번에는 메뉴 테이블을 만든다.

메뉴 테이블은
카페에서 판매하는 메뉴 정보를 저장하는 표다.

이번 항목에서 할 일은 간단하다.

메뉴 정보 생각하기
→ 필요한 항목 고르기
→ 중요한 기준 컬럼 찾기
→ SQL 컬럼으로 정리하기

먼저
어떤 정보를 저장할지,
그중 무엇이 기준이 될지,
그걸 어떤 컬럼으로 바꿀지
생각하는 것이 중요하다.

카페 메뉴 테이블에 저장할 정보와 기준 컬럼을 생각하는 과정을 설명한 이미지
추가 설명_ 메뉴 테이블에는 어떤 정보가?

이 그림은 메뉴 테이블을 만들기 전에
어떤 순서로 생각하면 되는지 정리한 것이다.

바로 SQL을 작성하기 전에 먼저 해야 할 일은
메뉴 하나를 저장하려면 어떤 정보가 필요한지 생각하는 것이다.

예를 들어 카페에서 메뉴를 관리한다면
아메리카노, 카페라떼, 치즈케이크 같은 메뉴들이 있을 것이다.

그렇다면 메뉴마다 필요한 정보는 무엇일까?

메뉴 이름은 필요하다.
가격도 필요하다.
커피인지 디저트인지 구분하는 분류도 있으면 좋다.
그리고 현재 판매 중인지 아닌지도 기록할 수 있다.

하지만 여기서 가장 중요한 것은
단순히 메뉴 이름이 아니다.

고객 테이블에서 customer_id가 중요했던 것처럼,
메뉴 테이블에서는 menu_id가 중요하다.

왜냐하면 메뉴 이름은 바뀔 수 있기 때문이다.

예를 들어 처음에는 라떼라고 적었다가
나중에 카페라떼로 바꿀 수도 있다.

또 비슷한 이름의 메뉴가 생길 수도 있다.

그래서 메뉴 하나를 정확히 구분하려면
이름보다 변하지 않는 고유 번호가 필요하다.

그 고유 번호가 바로 menu_id다.

즉, 메뉴 테이블을 만들 때는 이렇게 생각하면 된다.


3. 메뉴 테이블 컬럼 정리하기

앞에서 메뉴 테이블은
카페에서 판매하는 메뉴 정보를 저장하는 표라고 했다.

이제 그것을 컬럼 ( columns ) 로 바꿔보자.

메뉴 하나를 저장하려면 대략 이런 정보가 필요하다.

항목왜 필요한가
메뉴 번호메뉴 하나를 정확히 구분하기 위해
메뉴 이름어떤 메뉴인지 저장하기 위해
가격얼마에 판매할지 저장하기 위해
분류커피, 음료, 디저트처럼 나누기 위해
판매 여부현재 판매 중인지 확인하기 위해

만약 생각한 것이 이것보다 많다면, 또는 다른 항목으로 해도 괜찮다.
하지만 그전에 AI에게 검증을 받아 보도록하자.

아직은 AI가 우리보다 훨씬 잘 알기 때문이지요?

예를 들어서 메뉴 테이블에 들어가야 할 항목을

  • 메뉴명
  • 가격
  • 분류
  • 설명(메뉴에 대한)
  • 매장/테이크 아웃
  • 원두종류
  • HOT/ICE 선택

이라고 생각했다고 하자.

프롬프트는 이렇게 작성했다.

나는 db초보자로 postgreSQL 공부를 하고 있어.
카페 CRUD 만드는 과정 중에, 고객 테이블은 만들었고
메뉴 테이블을 만드려고 하는 중인데

메뉴테이블안에 들어갈 컬럼

메뉴명, 가격, 분류, 설명(메뉴에 대한),

매장/테이크 아웃, 원두종류, HOT/ICE 선택

이렇게 적어봤어. 평가해줘.
SQL을 바로 알려주지는 말고
표로 정리해서 알려주면 좋겠다.

AI답변 요약 내용 _📋 메뉴 테이블 컬럼 제안 및 평가
기존 컬럼명권장 영문 컬럼명적합도 및 평가추천 조치 및 이유
메뉴명menu_name필수 (적합)메뉴의 이름입니다. 중복을 방지하거나 비워둘 수 없도록 설정해야 합니다.
가격price필수 (적합)메뉴의 기본 단가입니다. 숫자로 저장합니다.
분류category적합커피, 논커피, 디저트 등 메뉴를 그룹핑할 때 필수적입니다.
설명description적합메뉴에 대한 상세 소개글로, 글자 수 제한이 넉넉한 타입이 좋습니다.
원두종류bean_type조건부 적합디카페인, 고소한 맛 등 메뉴 자체의 고정 속성이라면 남겨두고, 손님이 선택하는 옵션이라면 별도 분리를 추천합니다.
HOT/ICE 선택temperature보류 (옵션성)하나의 메뉴에 두 가지가 다 가능하다면 메뉴 테이블보다는 ‘주문 옵션’ 영역에 어울립니다. (단, 메뉴 자체를 ‘아메리카노(HOT)’ 형태로 따로 등록할 거라면 유지해도 좋습니다.)
매장/테이크 아웃order_type부적합 (이동 추천)이는 메뉴의 특징이 아니라 ‘손님이 주문하는 방식’입니다. 메뉴 테이블이 아니라 나중에 만드실 ‘주문(Order) 테이블’로 이동해야 합니다.

ID 컬럼 추가하기:
위 목록에는 없지만, 데이터베이스에서 각 메뉴를 명확하게 구별하기 위해
고유한 번호인 메뉴 ID(menu_id)를 꼭 첫 번째 컬럼으로 추가하는 것을 추천합니다.

AI에게 물어보고 의견을 듣고 보면 왜 필수 항목인지 왜 필요없는지
설명을 보고 납득이 된다면 넘어가자.

권장 영문 컬럼명의 폰트색을 흰색으로 정해놨다.
궁금하면 드래그 해서 확인해보자!


4. 메뉴 테이블 CREATE TABLE 작성하기

앞에서 메뉴 테이블에 필요한 컬럼을 정리했다.

이제 그 내용을 바탕으로
실제 SQL을 작성해보자.

이번에도 흐름은 고객 테이블과 같다.

우선 컬럼을 확인하자!

메뉴 테이블 컬럼으로 menu_id, name, price, category, is_available을 정리한 이미지
항목컬럼명의미
메뉴 번호menu_id메뉴 하나를 구분하는 번호
메뉴 이름name메뉴의 이름
가격price메뉴의 판매 가격
분류category커피, 음료, 디저트 같은 메뉴 구분
판매 여부is_available현재 판매 중인지 아닌지

사용할 SQL 키워드 확인해보자.

SQL 작성 첫 등장은 키워드들이다.
아래의 예시처럼 ” 만든다 테이블 ” 영어문법 처럼 해석 된다?

CREATE TABLE, INSERT INTO, SELECT, ORDER BY 등 SQL 키워드 의미를 설명하는 이미지
SQL 키워드뜻이번 실습에서 하는 일
CREATE만든다새로운 테이블을 만들겠다고 시작
TABLE테이블만들 대상이 테이블이라는 뜻
CREATE TABLE테이블을 만든다menus 테이블 생성
INSERT입력한다메뉴 데이터를 넣을 때 사용
INTO~안에어느 테이블에 넣을지 지정
INSERT INTO테이블 안에 입력한다menus 테이블에 메뉴 데이터 입력
VALUES값들실제로 넣을 메뉴 데이터 작성
SELECT조회한다 / 보여줘입력된 메뉴 데이터를 확인
FROM~에서어느 테이블에서 가져올지 지정
ORDER BY정렬한다메뉴 번호 순서대로 정렬해서 확인

메뉴 테이블에 사용할 데이터 타입 정리

데이터 타입은 이 컬럼에는 어떤 종류의 값을 저장할 것인가를 정하는 것

VARCHAR(100) <<< 괄호 안의 숫자는 직접 정하는 것인데
기본적으로 이름과 카테고리는 100, 50으로 진행해는 것이다.

테이블을 만들고
(테이블 안에) 컬럼은 이런 타입으로~

PostgreSQL 메뉴 테이블에서 INTEGER, VARCHAR, BOOLEAN 데이터 타입을 구분하는 이미지
데이터 타입뜻이번 메뉴 테이블에서 쓰는 곳
INTEGER숫자menu_id, price
VARCHAR(100)최대 100자까지 글자 저장name
VARCHAR(50)최대 50자까지 글자 저장category
BOOLEAN참/거짓 저장is_available

제약 조건 확인하기

테이블에 사용할 조건, 정확히는 제약 조건(Constraint) 을 확인
조건은 “데이터를 아무렇게나 넣지 않도록 막아주는 규칙”이다.

테이블을 만들고
(테이블 안에) 컬럼1은 이런 타입이고 이런 조건으로
컬럼2는 이런 타입이고 이런 조건으로
컬럼3은 이런 타입이고 이런 조건으로
.
.

PRIMARY KEY, NOT NULL, DEFAULT 등 메뉴 테이블 제약 조건을 설명하는 이미지
조건뜻이번 메뉴 테이블에서 쓰는 곳
PRIMARY KEY기본키로 사용한다menu_id
NOT NULL비어 있으면 안 된다name, price
DEFAULT값을 안 넣으면 기본값을 넣는다is_available
DEFAULT TRUE값을 안 넣으면 TRUE로 넣는다is_available
GENERATED ALWAYS AS IDENTITY번호를 자동으로 만든다menu_id

4-1. 메뉴 테이블 SQL 실제로 작성하기

메뉴 테이블에 필요한 컬럼, 데이터 타입, 조건까지 확인했다.

이제 이 내용을 하나로 합쳐서
실제 SQL 문장으로 만들어보자.

SQL은 어렵게 보면 길어 보이지만,
사실 앞에서 정리한 조각들을 순서대로 끼워 넣는 것이다.

우리의 말(자연어)을 활용하여 프로그래밍 언어의 코드 형식과 유사하게 정리해 놓은 것을

의사 코드 또는 유사 코드(Pseudocode)

라고 하는데 먼저 유사코드를 먼저 생각해보는 습관을 들여보자.

유사코드를 잘 작성하게 된다면, 코딩은 AI에게~ 요즘은 그런시대니까!

해보자!

cafe 스키마 안에 메뉴테이블을 만들고 그 안에
메뉴 하나를 구분하는 아이디 컬럼을 만든다 숫자 타입의 기본값으로(중요)
메뉴명을 글자 타입으로 만들고 100글자 이내로 조건을 둔다. 없으면 안된다.
가격은 숫자 타입으로 하고 없으면 안된다.
카테고리는 글자타입으로 50글자 이내로 한다.
판매중인지 아닌지는 판매중인지 아닌지를 구분하고 기본으로는 판매중으로 한다.

처음에는 이렇게 하는 것도 어려울 수 있지만 시도해보고 또 시도 해보자!
이렇게 작성을 했다면 하나씩 퍼즐을 끼워 맞추듯 실제 SQL 요소들을 넣어보고
AI에게 확인 받으며 공부를 하면 좋을 것 같다.

카페 메뉴 테이블 요구사항을 SQL CREATE TABLE 문장으로 바꾸는 과정을 보여주는 이미지

그렇게 완성이 된 SQL

CREATE TABLE cafe.menus (
    menu_id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price INTEGER NOT NULL,
    category VARCHAR(50),
    is_available BOOLEAN DEFAULT TRUE
);

DBeaver에 입력하고 실행해보자!

잠깐!


4-2. SQL 실행 전 필수 확인

지금까지 이어서 작업을 하고 있다면 상관 없지만,
종료 했다가 작업을 하는 경우에는 우리가 진행하던
데이터 베이스 ( cafe_practice ) 가 맞는지
스키마 ( cafe ) 가 맞는지 기본값으로 되어 있는지
확인하고 SQL을 입력하고 실행해야 한다.

DBeaver에서 cafe_practice 데이터베이스와 cafe 스키마 기본 연결을 확인하는 화면

미세하지만 경로의 데이터 베이스와 스키마가 진한 회색인지! 확인
기본이 아닐 때 : 오른쪽 마우스를 클릭하고 Set as default 클릭

DBeaver에서 cafe 데이터베이스와 cafe 스키마 선택 상태를 확인하는 화면

종료하기 전까지 cafe_practice 를 하다가 종료 했다면 최근 SQL편집기를 누르면
이전에 했던 스크립트가 보일 것이다.

그게 아니라면 SQL편집기를 눌러서 찾거나
새 SQL편집기를 열어도 상관 없다.

작업을 시작하기전 제대로 cafe_practice
데이터 베이스와 연결 되어 있는지 확인하기 위해

SELECT current_database();

입력 후 실행

SELECT current_database() 실행 결과로 현재 데이터베이스를 확인하는 화면

만약 다른 데이터 베이스가 표시 된다면 위에서
데이터 베이스와 스키마가 기본 값으로 되어 있는지 한 번 확인해보자.

확인할 것이유
현재 DB가 cafe_practice인지 확인다른 DB에 테이블을 만들지 않기 위해
스키마명이 cafe인지 확인cafe.menus 위치가 맞는지 확인
테이블명이 menus인지 확인오타로 다른 테이블이 생기는 것을 막기 위해
컬럼 사이에 ,가 있는지 확인쉼표가 빠지면 SQL 오류가 날 수 있음
마지막 컬럼 뒤에는 ,가 없는지 확인마지막 줄 쉼표 때문에 오류가 날 수 있음
SQL 끝에 ;가 있는지 확인SQL 문장이 끝났다는 표시

4-3. 메뉴 테이블 SQL 실행하고 확인하기

CREATE TABLE cafe.menus (
    menu_id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price INTEGER NOT NULL,
    category VARCHAR(50),
    is_available BOOLEAN DEFAULT TRUE
);

입력 후 SQL을 실행해 보자.

DBeaver SQL 편집기에 CREATE TABLE cafe.menus 문장을 입력한 화면
CREATE TABLE 실행 후 메뉴 테이블 생성이 성공한 DBeaver 실행 결과 화면

에러가 나지 않고 이렇게 출력됐다면 성공이다.

cafe 스키마 안에
menus 테이블이라는 빈 표를 만들었다.

혹시나 에러가 발생했다면 이것을 확인해보자.

자주 나는 실수예시확인할 것
쉼표 , 누락name VARCHAR(100) NOT NULL price INTEGER컬럼과 컬럼 사이에 ,가 있는가
마지막 컬럼 뒤 쉼표is_available BOOLEAN DEFAULT TRUE,마지막 컬럼 뒤에는 ,를 붙이지 않는다
세미콜론 ; 누락)에서 끝남SQL 끝에 ;가 있는가
스키마명 오타cafe.menu / cafes.menuscafe.menus로 작성했는가
컬럼명 오타is_availabeis_available 철자가 맞는가
데이터 타입 오타BOOLENBOOLEAN이 맞는가
이미 테이블이 있음relation "menus" already exists이전에 menus를 만든 적이 있는가

문제가 없다면 정말 menus 테이블이 만들어졌는지 확인해보자.

SELECT table_schema, table_name
FROM information_schema.tables
WHERE table_schema = 'cafe'
  AND table_name = 'menus';

공부 TIP. 이런 SQL을 의사코드로 바꿔보기!
더듬 더듬 이전의 내용들을 찾아보며 들을 맞춰가면 바꿔보고
이 SQL은 뭘 말하기에 아래와 같은 결과가 나왔는지 해석해보자

information_schema.tables 조회로 cafe.menus 테이블 생성 여부를 확인한 결과 화면

5. 메뉴 데이터 INSERT 하기

지금까지는 menus라는 빈 메뉴판을 만든 상태다.

아직 안에는 실제 메뉴 데이터가 없다.

이제 INSERT INTO를 사용해서
카페 메뉴 데이터를 넣어보자.

이번에 넣을 데이터는 예시로 이렇게 잡는다.

메뉴 이름가격분류
아메리카노3000커피
카페라떼4000커피
바닐라라떼4500커피
치즈케이크5500디저트
초코머핀3500디저트

다른 메뉴 넣고 싶어요? 넣어도 된다!

여기서 menu_id는 직접 입력하지 않는다.

왜냐하면 menu_id는 자동으로 만들어지도록 설정했기 때문이다.

그리고 is_available도 직접 입력하지 않는다.

왜냐하면 값을 넣지 않으면
기본값으로 TRUE가 들어가도록 설정했기 때문이다.

어?그럼 여기서 이런 질문이 생길 수도 있다.
나는 생겼기 때문에..ㅋㅋ

그럼 판매 중이 아닌 메뉴는 어떻게 하나? 예를 들어서
준비중인 메뉴지만 노출은 하고 싶을 때 말이다.

is_available 대신 status 같은 컬럼을 쓰는 방법으로 해야한다.

우리가 만든 컬럼은 판매중인지 아닌지만 결정하기 때문이다.
판매 안하는 경우에도 노출이 되게 할 수는 있다.
아래와 같이

INSERT INTO cafe.menus (name, price, category, is_available)
VALUES ('딸기라떼', 5000, '음료', FALSE);

다만, 실제 서비스에서 상태까지 나누고 싶다면
status 컬럼을 만들어서

status VARCHAR(20) DEFAULT 'available'

이렇게 해서 ‘available’ 이 부분을

status의미
available판매 중
sold_out품절
preparing준비 중
hidden숨김

이렇게 하는 방법이 있다..

복잡하고 머리 아파지는 것 같으면
일단은 판매중/ 판매안함으로 먼저 익숙하게 되어보자


이번에 입력할 컬럼은 위의 예시에서 보이는 것처럼
메뉴이름, 가격, 분류 이렇게 세 가지다.

의사 코드, 유사 코드로 먼저 생각해보자.

카페 스키마 안에 있는 메뉴 테이블에 메뉴이름, 가격, 분류 컬럼을 넣고
메뉴는
아메리카노는 3000원이고 커피
카페라떼는 4000원이고 커피
바닐라라떼는 4500원이고 커피
치즈케이크는 5500원 디저트
초코머핀은 3500원 디저트다

를 SQL로 바꾸면!

INSERT INTO cafe.menus (name, price, category)
VALUES
    ('아메리카노', 3000, '커피'),
    ('카페라떼', 4000, '커피'),
    ('바닐라라떼', 4500, '커피'),
    ('치즈케이크', 5500, '디저트'),
    ('초코머핀', 3500, '디저트');

입력을 하려고 보니

INSERT INTO cafe.menus 문장 입력 중 DBeaver가 cafe.menus를 빨간 물결선으로 표시한 화면
DBeaver에서 cafe.menus 테이블이 존재하지만 SQL 편집기에서 아직 인식하지 못하는 상태를 보여주는 화면

분명 테이블이 생성 된것을 확인했는데..?
그리고 있는데!??


DBeaver 편집기가 아직 cafe.menus를 제대로 인식 못 하고 있는 상태
라고 보면 된다고 한다. 실행을 해보고 결과를 보자.

INSERT INTO cafe.menus 실행 후 메뉴 데이터 입력이 성공한 DBeaver 결과 화면

정상적으로 실행이 됐다.

빨간 물결선이 아주 거슬리기는 하지만 문제가 없는 것.

입력된 데이터를 조회해서 확인하자.

SELECT *
FROM cafe.menus
ORDER BY menu_id;
SELECT * FROM cafe.menus ORDER BY menu_id 실행 결과로 메뉴 데이터가 조회된 화면

결과를 해석하자면

확인 항목결과
menu_id1~5까지 자동 생성됨
name메뉴 이름 정상 입력
price가격 정상 입력
category커피 / 디저트 정상 입력
is_available전부 체크됨 = TRUE

조회 결과를 보면 메뉴 데이터가 정상적으로 들어간 것을 확인할 수 있다.

menu_id는 직접 입력하지 않았지만 1번부터 자동으로 생성되었다.

is_available도 직접 입력하지 않았지만,
DEFAULT TRUE 조건 때문에 모두 판매 중(TRUE) 상태로 들어갔다.

즉, 메뉴 테이블 생성과 메뉴 데이터 입력까지 정상적으로 완료되었다.


준비 중인 메뉴는 어떻게 넣을까?

방금 입력한 메뉴들은 is_available을 생략했다.

그래서 기본값인 TRUE,
즉 판매 중으로 들어갔다.

그런데 준비 중인 메뉴처럼
아직 판매하지 않는 메뉴를 넣고 싶다면
is_available
값을 직접 넣으면 된다.

INSERT INTO cafe.menus (name, price, category, is_available)
VALUES ('딸기라떼', 5000, '음료', FALSE);

의사 코드

딸기라떼 메뉴를 추가한다.
가격은 5000원이고,
분류는 음료다.
하지만 아직 판매 중은 아니므로 FALSE로 넣는다.
is_available 값을 FALSE로 지정해 준비 중인 딸기라떼 메뉴를 추가한 실행 결과 화면

Rows 1로 한줄 추가 됐고, Query에 딸기라떼가 FALSE 로 보인다.

잘 입력 됐는지 확인해보자.

SELECT *
FROM cafe.menus
ORDER BY menu_id;
메뉴 테이블 조회 결과에서 딸기라떼의 is_available 값이 FALSE로 표시된 화면

체크 표시가 비어 있는 딸기라떼가 추가 된 것을 볼 수 있다.


[ PostgreSQL 초보자 실습 03: 테이블 생성과 INSERT 데이터 입력 ]

에 이어서 메뉴 테이블을 생성하고 데이터 입력까지 복습하는 느낌으로 진행 되었다.

다음에는 FK(외래키)에 대해 알아보고 주문 테이블까지 이어서 해보도록 한다.