반응형

WHERE 절 마스터하기 ✍️ 다양한 조건문과 연산자 총정리

"WHERE 절만 제대로 알아도 SQL 절반은 먹고 들어간다!"
라는 말, 들어보셨나요?
오늘 그 핵심을 확실히 잡아드립니다!

 

 

안녕하세요 여러분! 😊

오늘은 SQL 쿼리에서 가장 많이 쓰이는 구문 중 하나인 WHERE 절에 대해 깊이 있게 배워볼 거예요.

WHERE 절은 조건을 걸어 필요한 데이터만 추출할 수 있게 해주는 아주 중요한 도구인데요.

단순한 "=" 연산부터 BETWEEN, LIKE, 논리 연산자(AND, OR, NOT)까지 다양한 조건식을 제대로 익히면, 데이터 추출 실력이 몇 단계는 더 올라간답니다.

이 포스팅에서는 실무 예제와 함께 각 연산자의 사용법과 차이점을 비교해드릴게요.

SQL 초보자도 이해할 수 있게 친절하고 자세하게 설명할 테니, 부담 없이 따라오셔도 좋아요! 😊

1. WHERE 절의 기본 개념 이해하기 🤓

SQL에서 WHERE 절은 조건을 걸어 원하는 데이터만 골라내는 도구입니다.

SELECT, UPDATE, DELETE 쿼리에서 가장 많이 쓰이며, 데이터를 필터링할 수 있는 가장 강력한 수단이기도 해요.

예를 들어,

게시판에서 특정 작성자만 조회하고 싶다면 아래처럼 사용하겠죠.

SELECT * FROM board WHERE writer = '홍길동';

즉, WHERE 절은 "필터 기능"이라고 이해하시면 돼요.

그리고 그 안에서 사용하는 조건문과 연산자가 다양해서 조합하는 재미가 있답니다.

🔍 WHERE 절을 사용하는 대표 SQL 문들

SQL 유형 예시
SELECT SELECT * FROM board WHERE writer = '홍길동';
UPDATE UPDATE board SET title='수정됨' WHERE id = 3;
DELETE DELETE FROM board WHERE id > 10;

📌 WHERE 절 조건문의 형태

  • 비교 조건: =, <>, >, <, BETWEEN, LIKE 등
  • 논리 연산: AND, OR, NOT 으로 조건 연결

기초가 탄탄해야 응용이 자유롭습니다.

다음 STEP에서는 본격적으로 비교 연산자에 대해 하나하나 살펴볼게요!

 

 

2. 비교 연산자 정리 (=, <>, <, >, BETWEEN, LIKE 등) ⚖️

WHERE 절에서 가장 기본적이면서도 자주 쓰이는 도구가 바로 비교 연산자입니다.

숫자, 문자열, 날짜 등 다양한 데이터 타입을 비교하고 필터링할 때 활용돼요.

아래 표로 주요 비교 연산자를 먼저 정리해볼게요.

📋 주요 비교 연산자 요약표

연산자 의미 예시
= 같다 WHERE writer = '홍길동'
<> 같지 않다 WHERE writer <> '홍길동'
> 크다 WHERE id > 5
< 작다 WHERE id < 10
BETWEEN 사이 범위 WHERE id BETWEEN 5 AND 10
LIKE 패턴 일치 WHERE title LIKE '공지%'

🔍 LIKE 연산자 - 패턴 검색의 핵심!

LIKE는 문자열 검색에서 자주 쓰이는 연산자예요.

‘%’‘_’ 와일드카드를 함께 사용하면 더욱 유연한 검색이 가능합니다.

  • LIKE 'A%': A로 시작하는 문자열
  • LIKE '%공지': 공지로 끝나는 문자열
  • LIKE '_작업': 첫 글자가 아무거나 + ‘작업’으로 끝나는 3글자

🧠 BETWEEN과 범위 검색 팁

숫자나 날짜의 범위 검색에 자주 사용되는 BETWEEN은 간단하지만 강력한 기능이에요.

아래 예제를 봐볼까요?

SELECT * FROM board WHERE id BETWEEN 3 AND 6;

BETWEEN은 양 끝값을 포함하기 때문에 위 쿼리는 id = 3, 4, 5, 6인 행을 모두 가져옵니다.

자, 이렇게 비교 연산자를 익혔다면 이제 조건을 조합해서 더 복잡한 필터링을 해보는 것도 가능해지겠죠?

다음 STEP에서는 AND, OR, NOT 논리 연산자를 배워볼게요!

 

 

3. 논리 연산자(AND, OR, NOT)로 조건 조합하기 🔗

WHERE 절은 단일 조건뿐 아니라, 여러 조건을 조합해서 훨씬 정교하게 데이터를 추출할 수 있어요.

이때 사용하는 게 바로 논리 연산자입니다.

대표적으로 AND, OR, NOT이 있죠.

✅ AND - 모든 조건이 참일 때만

SELECT * FROM board
WHERE writer = '홍길동' AND title LIKE '%공지%';

위 쿼리는 작성자가 '홍길동'이면서 제목에 '공지'가 포함된 게시글만 조회합니다.

즉, 모든 조건을 동시에 만족해야 해요.

✅ OR - 하나라도 참이면 통과

SELECT * FROM board
WHERE writer = '홍길동' OR writer = '이순신';

'홍길동' 또는 '이순신'이 작성한 글이면 전부 조회됩니다.

하나라도 만족하면 OK!라는 의미예요.

OR 연산은 범위를 넓게 보고 싶을 때 유용해요.

❌ NOT - 조건을 부정할 때

SELECT * FROM board
WHERE NOT writer = '관리자';

'관리자'가 작성하지 않은 모든 글을 조회하고 싶을 때 유용하죠.

NOT은 어떤 조건이 참이 아닌 경우를 찾을 때 사용합니다.

🔗 조건이 많을 땐 괄호로 묶자!

SELECT * FROM board
WHERE (writer = '홍길동' OR writer = '강감찬')
AND title LIKE '%공지%';

괄호를 사용하지 않으면 조건이 예상과 다르게 평가될 수 있어요.

항상 논리 우선순위를 고려해 괄호로 명확히 구분해 주세요!

이제 단순한 필터링을 넘어, 조건을 조합하는 힘을 갖게 되셨어요.

다음 STEP에서는 실무에서 자주 사용하는 WHERE 패턴들을 소개해드릴게요!

 

 

4. 실무에서 자주 쓰는 WHERE 패턴 📌

SQL을 실제로 써보면, WHERE 절을 쓰지 않는 경우가 거의 없을 정도예요.

그만큼 다양한 조건 조합이 실무에서 굉장히 자주 등장합니다.

아래는 실제 서비스 개발이나 데이터 분석 시 많이 쓰이는 WHERE 절 패턴을 정리한 예시들이에요!

🧾 자주 쓰는 WHERE 절 예시 모음

패턴 목적 SQL 예시
특정 작성자 글만 보기 WHERE writer = '홍길동'
두 ID 사이의 글 보기 WHERE id BETWEEN 5 AND 10
제목에 키워드 포함 WHERE title LIKE '%공지%'
여러 작성자 중 하나 WHERE writer IN ('홍길동', '이순신')
최근 일주일만 보기 WHERE created_at >= NOW() - INTERVAL 7 DAY
특정 컬럼 값이 NULL 아님 WHERE content IS NOT NULL

📚 실무 응용 팁

  • WHERE 절 + ORDER BY: 필터링 후 정렬까지 연결 가능
  • LIMIT을 함께 쓰면 페이징도 가능해요
  • WHERE + JOIN 조합으로 연관 테이블 필터링도 가능!

실무에서는 조건이 점점 많아지고 복잡해지는데요, 위 예시들을 참고해서 자신만의 WHERE 절 패턴을 익혀두면 다양한 상황에서도 유연하게 대처할 수 있어요! 😊

다음은 진짜 데이터를 활용한 조건문 조합 실습으로 이어집니다!

 

 

5. 조건문 조합 예제 실습 🧪

지금까지 배운 비교 연산자와 논리 연산자를 직접 실습으로 확인해볼 시간입니다!

단순한 조건부터 복잡한 조합까지, 다양한 시나리오를 통해 WHERE 절을 유연하게 활용하는 법을 익혀볼게요.

🧩 시나리오 1: 특정 키워드를 포함한 최신 글만 보기

SELECT * FROM board
WHERE title LIKE '%공지%'
AND created_at >= NOW() - INTERVAL 7 DAY
ORDER BY created_at DESC;

📌 포인트: 공지가 포함된 게시글 중 최근 일주일 이내에 작성된 글만 내림차순으로 정렬해 보여줍니다.

🧩 시나리오 2: 특정 작성자 제외하고, ID가 10보다 큰 글만 보기

SELECT * FROM board
WHERE NOT writer = '관리자'
AND id > 10;

📌 포인트: 관리자 외의 작성자가 작성했고, id가 10을 초과하는 게시물만 조회합니다.

🧩 시나리오 3: 두 명의 작성자가 쓴 글 중, 제목에 ‘공지’가 포함된 경우만

SELECT * FROM board
WHERE (writer = '홍길동' OR writer = '이순신')
AND title LIKE '%공지%';

📌 포인트: 괄호로 조건을 명확하게 묶는 게 중요합니다.

                  논리 연산자의 우선순위 때문에 결과가 달라질 수 있어요!

✅ 실전 조합 팁

  • WHERE 절은 조건이 많아질수록 괄호로 구분해주는 습관이 중요해요!
  • 조건문이 너무 길어지면 가독성 확보를 위해 줄바꿈과 들여쓰기 활용하기

이제 WHERE 절이 단순한 필터링을 넘어서, 다양한 조건을 조합해 정교한 데이터 추출 도구로 거듭나는 걸 직접 느끼셨을 거예요.

이제 마지막으로 요약과 실전 활용 팁을 정리해보며 마무리해볼게요 😊

 

 

6. 마무리 ✨

여기까지 따라오신 여러분, 정말 잘하셨어요! 👏

이번 포스팅에서는 SQL의 핵심 WHERE 절에 대해 개념부터 다양한 연산자, 실전 예제까지 완전 정복했어요.

데이터베이스를 다룰 때 WHERE 절은 선택이 아닌 필수입니다.

✅ 오늘의 핵심 요약

  • WHERE 절은 조건에 따라 데이터를 필터링하는 기능
  • 비교 연산자: =, <>, >, <, BETWEEN, LIKE 등 필수
  • 논리 연산자: AND, OR, NOT 으로 복잡한 조건 조합
  • 괄호 ()는 조건 우선순위 명확히 하는 데 꼭 필요!
  • LIKEBETWEEN은 실무에서 자주 사용됨

💡 실전 활용 팁

  • WHERE 절은 UPDATE, DELETE, SELECT 모두에 쓰임
  • 다양한 연산자를 조합해서 정확한 조건 필터링이 가능
  • IN, IS NULL, EXISTS 등도 함께 공부하면 더 강력해져요

이제 여러분은 단순한 쿼리를 넘어서, 실무에 활용할 수 있는 조건문 설계 능력을 갖추셨습니다. 😊

반응형
반응형

데이터베이스 조작 예제 💾
게시판 테이블 만들고 데이터 입력하기

여러분, "게시판 테이블을 직접 만들어 보고, 데이터를 손으로 넣어본 경험" 있으신가요? 직접 해보면 SQL이 훨씬 재밌어집니다!

 

 

안녕하세요!

데이터베이스를 처음 배우거나 실무에 막 발을 들인 분들께 도움이 될 만한 실습 예제를 준비했어요.

오늘은 가장 많이 쓰이는 예제 중 하나인 "게시판 테이블 생성과 데이터 입력"을 다뤄볼 거예요.

테이블 설계부터 SQL 문 작성, 실제 데이터 삽입까지 모든 과정을 친절하게 설명드릴게요.

복잡한 개념은 최소한으로 줄이고, 예제 중심으로 구성했으니 초보자도 걱정하지 마세요!

그럼 천천히 따라오시면서 직접 실습해보세요. 😊

1. 게시판 테이블 설계 🛠️

게시판을 만든다고 하면 제일 먼저 떠오르는 건 무엇일까요?

바로 "게시글을 저장할 공간"이죠.

이 공간은 데이터베이스에서 "테이블"이라는 형태로 구현돼요.

게시판 테이블을 만들기 전에, 어떤 데이터를 저장해야 할지 먼저 설계해보는 게 중요해요.

이걸 잘 해두면 나중에 확장하거나 기능을 붙일 때 훨씬 수월하거든요.

📋 어떤 컬럼이 필요할까?

  • id - 게시글 번호 (자동 증가, 기본 키)
  • title - 게시글 제목
  • content - 게시글 본문 내용
  • writer - 작성자 이름
  • created_at - 작성일시 (기본값 CURRENT_TIMESTAMP)

📊 테이블 구조 미리보기

컬럼명 데이터 타입 제약 조건 설명
id INT PRIMARY KEY, AUTO_INCREMENT 고유 게시글 번호
title VARCHAR(100) NOT NULL 게시글 제목
content TEXT NOT NULL 게시글 내용
writer VARCHAR(50) NOT NULL 작성자 이름
created_at DATETIME DEFAULT CURRENT_TIMESTAMP 작성 시간

이제 어떤 테이블을 만들어야 할지 확실히 감이 오셨죠?

 

다음 단계에서는 이 설계대로 실제 SQL 문장을 작성해서 게시판 테이블을 직접 만들어볼게요!

 

 

2. CREATE TABLE로 테이블 만들기 ✍️

자, 이제 우리가 설계한 게시판 테이블을 진짜로 만들어볼 차례입니다.

이럴 때 사용하는 SQL 명령어가 바로 CREATE TABLE이에요.

먼저 구조를 이해하고, 바로 실습해볼 수 있도록 순서대로 안내드릴게요.

복잡하지 않으니 걱정 마세요.

하나하나 따라오면 금방 끝납니다!

🧾 기본 SQL 문법 설명

CREATE TABLE board (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100) NOT NULL,
    content TEXT NOT NULL,
    writer VARCHAR(50) NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

위 코드를 보면 board라는 이름의 테이블을 만들고 있고, 각 컬럼의 타입과 제약 조건을 함께 정의하고 있어요.

한 줄씩 해석해 볼게요:

  • id INT AUTO_INCREMENT PRIMARY KEY : 고유번호 자동 증가 + 기본 키 지정
  • title VARCHAR(100) NOT NULL : 제목은 최대 100자, 빈칸 입력 금지
  • content TEXT NOT NULL : 긴 본문 저장 가능, 빈칸 불가
  • writer VARCHAR(50) NOT NULL : 작성자 이름, 50자 제한
  • created_at DATETIME DEFAULT CURRENT_TIMESTAMP : 현재 시간 자동 저장

💡 실전 팁: SQL 에러 방지

  • 세미콜론(;) 누락 주의! SQL 명령은 끝에 꼭 ; 붙이기
  • 컬럼명 오타 주의! 영문 오타 많아요...
  • 중복된 테이블명 있을 경우 DROP TABLE 먼저 실행

이제 SQL을 실행해보면 정말 테이블이 만들어질 거예요!

다음은 이 테이블에 실제로 데이터를 넣어보는 실습으로 넘어가볼게요 🙌

 

 

3. INSERT 문으로 데이터 입력하기 📥

게시판 테이블을 만들었으면 이제 본격적으로 데이터를 넣어봐야겠죠?

INSERT INTO 문은 데이터베이스에 새 행(row)을 추가할 때 사용하는 명령어예요.

입력 방법을 하나하나 실습하면서 확실히 익혀보죠!

✅ 기본 INSERT 구문 예시

INSERT INTO board (title, content, writer)
VALUES ('첫 번째 글입니다!', '이건 테스트 게시물의 본문입니다.', '홍길동');

보이시죠?

idcreated_at은 따로 입력하지 않았는데도 자동으로 들어갑니다.

그 이유는 id는 AUTO_INCREMENT, created_at은 기본값 CURRENT_TIMESTAMP로 설정했기 때문이에요.

🧪 실습용 샘플 데이터 더 넣어보기

INSERT INTO board (title, content, writer)
VALUES 
('두 번째 글입니다', '내용은 이렇게 다양하게 넣을 수 있어요.', '이순신'),
('세 번째 글도 있어요', '본문에 마크다운이나 HTML 태그가 들어갈 수도 있겠죠?', '강감찬'),
('DB 입력이 재밌어요!', 'INSERT 문 반복해보면 감 잡힙니다.', '유관순');

이렇게 한꺼번에 여러 개의 데이터를 넣을 수도 있어요.

VALUES 뒤에 괄호 묶인 데이터를 쉼표로 구분만 하면 됩니다.

실무에서도 이런 방식 자주 써요.

⚠️ 입력 시 주의사항

  • 문자열은 항상 작은 따옴표('')로 감싸야 합니다!
  • NULL 값을 허용하지 않는 칼럼은 반드시 값 입력 필요!
  • INSERT 전에 CREATE TABLE이 제대로 실행됐는지 꼭 확인!

이제 여러 개의 게시글이 잘 저장되었을 거예요.

다음으로 넘어가서 SELECT 문으로 데이터를 확인해보는 실습을 해볼게요.

진짜 저장이 잘 됐는지 직접 눈으로 확인하는 시간이죠!

 

 

4. 입력된 데이터 확인하기 🔍

데이터베이스에 데이터를 잘 넣었다면, 이제 그걸 눈으로 확인해봐야겠죠?

이럴 때 사용하는 명령어가 바로 SELECT입니다.

이 명령은 데이터를 조회할 때 사용돼요.

기본적인 형태부터 조건을 붙이는 방식까지 하나씩 익혀볼게요!

🔍 전체 데이터 조회하기

SELECT * FROM board;

이렇게 하면 board 테이블 안에 들어있는 모든 행(row)이 출력돼요.

각 게시글의 id, 제목, 내용, 작성자, 작성일시가 한눈에 보이겠죠?

DB 관리 도구나 터미널에서 직접 실행해보면 훨씬 와닿을 거예요.

🎯 특정 칼럼만 조회하기

SELECT title, writer FROM board;

모든 데이터를 볼 필요가 없을 땐 이렇게 필요한 컬럼만 골라서 조회할 수 있어요.

이건 실무에서 자주 쓰는 패턴이에요.

예를 들어

게시판 목록 페이지를 만들 때 제목과 작성자만 가져오면 딱 좋겠죠?

🔎 조건을 붙여서 조회하기 (WHERE)

SELECT * FROM board WHERE writer = '홍길동';

이 명령은 작성자가 '홍길동'인 게시글만 출력해줘요.

WHERE 조건은 SQL의 핵심 기능 중 하나인데, 이렇게 간단한 조건뿐만 아니라 숫자 비교, 날짜 비교, LIKE 검색 등도 가능합니다.

🧹 조회 결과 정렬하기 (ORDER BY)

SELECT * FROM board ORDER BY created_at DESC;

게시판에서 최신 글이 위에 나오도록 정렬하고 싶다면 ORDER BY를 사용하면 돼요.

DESC는 내림차순, ASC는 오름차순 정렬이에요.

기본은 오름차순이죠.

📌 자주 쓰는 SELECT 패턴 요약

용도 SQL 예시
모든 행 전체 보기 SELECT * FROM board;
제목만 보기 SELECT title FROM board;
작성자 조건 검색 SELECT * FROM board WHERE writer = '이순신';
최신순 정렬 SELECT * FROM board ORDER BY created_at DESC;

SELECT 문은 데이터베이스와 "대화"하는 가장 기본적인 수단이에요.

잘만 다루면 복잡한 데이터 분석도 가능하답니다.

다음 파트에서는 실무에서 자주 발생하는 상황과 예외 처리 팁을 알아볼게요!

 

 

5. 실무에서 쓰는 팁과 예외 처리 ⚠️

SQL 문법만 아는 걸로는 부족해요. 실제 서비스에서는 예외 상황안정성이 중요하거든요.

이번 섹션에서는 초보자들이 자주 실수하는 부분실전 꿀팁들을 정리해봤어요.

실무에서도 유용하게 쓰일 거예요!

🚫 자주 하는 실수 TOP 5

  1. 세미콜론(;)을 빼먹어서 실행이 안 됨
  2. 문자열을 작은따옴표로 안 감싸서 에러 발생
  3. NOT NULL인데 값을 안 넣고 INSERT 시도
  4. 오타로 인해 존재하지 않는 컬럼/테이블 호출
  5. 같은 테이블을 여러 번 만들려고 해서 오류 발생

💡 DROP TABLE IF EXISTS 사용하기

DROP TABLE IF EXISTS board;

이미 같은 이름의 테이블이 존재할 경우 새로 만들려고 하면 에러가 나요.

이럴 땐 위 명령어로 먼저 삭제해주는 게 안전합니다.

IF EXISTS를 붙이면 테이블이 존재할 때만 삭제하므로 실습 시 특히 유용해요!

🧠 INSERT 전에 데이터 유효성 검사하기

프론트엔드에서 유효성 검사를 하더라도, 백엔드나 DB단에서도 꼭 한 번 더 검증을 해주는 게 좋아요.

예를 들어 제목이나 작성자가 비어있으면 저장을 막거나, 내용의 길이가 너무 짧은 경우 경고 메시지를 띄우는 방식이죠.

🔐 트랜잭션(Transaction) 기본 개념

  • 여러 SQL 작업을 하나의 단위로 묶어서 처리
  • 중간에 에러가 발생하면 ROLLBACK으로 전체 취소
  • 모든 작업이 문제없이 끝났을 때만 COMMIT으로 저장
START TRANSACTION;
INSERT INTO board (title, content, writer) VALUES ('트랜잭션 글', '테스트 중입니다.', '관리자');
-- 중간에 에러 발생 시 ROLLBACK;
COMMIT;

이 개념은 조금 어려울 수 있지만, 진짜 실무에서는 꼭 필요해요.

특히 결제, 주문, 포인트 적립 같은 작업은 반드시 트랜잭션으로 감싸야 합니다.

이제 SQL의 기초부터 실전 팁까지 꽤 많이 배웠어요!

 

 

6. 마무리  ➡️

여기까지 따라오신 여러분, 정말 수고 많으셨습니다!

이제 여러분은 단순히 SQL 문법을 아는 수준을 넘어서,

게시판 테이블을 설계하고 직접 데이터를 입력하고 확인하는 실습까지 마스터하신 거예요.

이건 단순한 이론이 아니라, 실제 웹 서비스에서 사용하는 핵심 기능이에요. 👍

 

이제 여러분이 할 수 있는 다음 단계는 이런 것들이에요:

  • 댓글 테이블을 따로 만들어서 게시글과 연결해보기 (외래키 연습)
  • 게시글 수정과 삭제 기능 추가 (UPDATE, DELETE 문 활용)
  • 웹 프레임워크(FastAPI, Django 등)와 연동해서 게시판 페이지 구현

이제 SQL이 조금 더 익숙해지셨을 거예요.

처음엔 생소했던 CREATE, INSERT, SELECT 명령이 점점 손에 익는 느낌이 들지 않으셨나요?😉

다음 실습에서는 JOIN과 정규화 개념도 살펴볼 예정이니 기대해주세요!

반응형
반응형

데이터 정의어(DDL)의 핵심!
CREATE, ALTER, DROP 완전 정복

SQL 문법 중에서도 가장 기본이자 가장 중요한 명령어,
CREATE, ALTER, DROP을 정확하게 알고 계신가요?

 

 

안녕하세요, 여러분 😊
오늘은 데이터베이스 기초 중에서도 실무와 시험, 어디서든 반드시 등장하는 핵심 개념인 데이터 정의어(DDL)에 대해 자세히 알아보려 해요.

특히 이 글에서는 CREATE, ALTER, DROP이라는 3대 명령어를 중심으로, 실제 사용 예제와 함께 초보자도 쉽게 이해할 수 있도록 하나하나 짚어드릴 거예요.
처음 배우는 분들도 걱정 마세요! 실수하기 쉬운 포인트까지 친절하게 알려드릴 테니까요.

1. CREATE 문 – 테이블 생성의 시작 📦

CREATE 문은 데이터베이스에서 테이블을 처음 만들 때 사용하는 명령어예요.
어떤 데이터를 저장할지, 그 데이터가 어떤 형태를 가질지, 테이블의 기본 틀을 만드는 과정이죠.

SQL 문법에서 가장 기본적인 작업이지만, 정확하게 이해하고 써야 실수 없이 데이터베이스를 설계할 수 있습니다.

🧾 CREATE 문 기본 문법

CREATE TABLE 테이블명 (
    컬럼1 데이터타입 [제약조건],
    컬럼2 데이터타입 [제약조건],
    ...
);

 

예시로 살펴보면 훨씬 이해가 쉬워요. 아래에 간단한 회원 테이블을 만들어 볼게요.

CREATE TABLE members (
    id INT PRIMARY KEY,
    username VARCHAR(30) NOT NULL,
    email VARCHAR(50),
    created_at DATE
);

📝 주요 구성 요소 정리

요소 설명
테이블명 생성할 테이블의 이름
컬럼명 테이블에 포함될 각 열의 이름
데이터 타입 해당 열이 저장할 데이터의 형식 (예: INT, VARCHAR, DATE)
제약조건 NOT NULL, PRIMARY KEY 등 데이터 무결성 확보용 조건

💡 실전 팁

  • 테이블명은 복수형보다 단수형이 일반적입니다. 예: user, order
  • PRIMARY KEY는 한 테이블에 하나만 설정 가능하니 주의!
  • NOT NULL은 데이터를 꼭 입력해야 하는 컬럼에 붙이세요.

이렇게 CREATE 문은 테이블을 처음 설계할 때 필수적으로 사용되며, 앞으로 데이터베이스 설계나 개발 시 가장 많이 쓰이는 문장 중 하나예요.
자주 실습해보면서 익혀두면 나중에 데이터베이스 실무에서도 유용하게 써먹을 수 있어요 😊

 

 

2. ALTER 문 – 테이블 구조 변경하기 🔧

실제 서비스를 운영하다 보면 테이블 구조를 처음 설계한 대로만 쓰기 어렵습니다.

새로운 컬럼을 추가하거나 기존 컬럼을 수정하거나, 때로는 삭제해야 할 때도 있어요.

그럴 때 사용하는 명령어가 바로 ALTER 문입니다.

🔧 ALTER 문 기본 문법

-- 컬럼 추가
ALTER TABLE 테이블명 ADD 컬럼명 데이터타입;

-- 컬럼 삭제
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

-- 컬럼 이름 변경 (DBMS마다 문법 차이 있음)
ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼 TO 새컬럼;

-- 컬럼 속성 수정
ALTER TABLE 테이블명 MODIFY 컬럼명 새데이터타입;

 

예제를 통해 ALTER 문의 주요 사용법을 확인해볼게요.

-- 회원 테이블에 phone 컬럼 추가
ALTER TABLE members ADD phone VARCHAR(20);

-- email 컬럼 삭제
ALTER TABLE members DROP COLUMN email;

-- created_at 컬럼을 signup_date로 이름 변경
ALTER TABLE members RENAME COLUMN created_at TO signup_date;

-- phone 컬럼 데이터 타입 수정
ALTER TABLE members MODIFY phone VARCHAR(50);

🧩 ALTER 문으로 할 수 있는 주요 작업 정리

작업 설명
ADD 새로운 컬럼 추가
DROP 기존 컬럼 삭제
RENAME 컬럼명 변경
MODIFY 데이터 타입 또는 제약조건 변경

⚠️ 실무에서의 주의사항

  • 컬럼 삭제(DROP)는 복구 불가능할 수 있으므로 백업 필수!
  • MODIFY 문은 일부 DB에서 형식이 다를 수 있으니 DBMS 매뉴얼 확인 필수!
  • 실시간 운영 중인 테이블은 변경 전 트랜잭션 및 롤백 고려 필요

ALTER 문을 잘 다루면, 테이블을 새로 만들 필요 없이 유연하게 구조를 조정할 수 있습니다.
서비스가 성장하면서 데이터도 함께 진화하는 만큼, 이 명령어는 꼭 익혀두세요!

 

 

3. DROP 문 – 테이블 삭제 주의사항 🗑️

DROP 문은 데이터베이스에서 테이블이나 전체 객체를 완전히 삭제할 때 사용하는 명령어예요.
DELETE 문과 비슷하다고 오해하는 경우가 많은데, DROP은 테이블 자체를 지워버리기 때문에 되돌릴 수 없어요!

🧨 DROP 문 기본 문법

-- 테이블 삭제
DROP TABLE 테이블명;

-- 전체 데이터베이스 삭제
DROP DATABASE 데이터베이스명;

 

예제를 통해 DROP 문이 얼마나 강력한 명령어인지 감을 잡아보세요.

-- members 테이블 삭제
DROP TABLE members;

-- dev_db 데이터베이스 삭제
DROP DATABASE dev_db;

❗ DROP과 DELETE의 차이점

비교 항목 DROP DELETE
기능 테이블 자체를 삭제 데이터(레코드)만 삭제
ROLLBACK 일반적으로 불가능 가능 (트랜잭션 내에서)
속도 빠름 (구조까지 삭제) 비교적 느림
사용 주기 정리나 초기화 목적 데이터 수정·갱신 목적

⚠️ DROP 사용 시 주의사항

  • DELETE는 데이터만 지우고 구조는 남는다.
  • DROP은 ROLLBACK 불가. 실행 전 반드시 백업 또는 재확인 필수!
  • 실제 운영 DB에서는 가급적 DROP 지양. 테스트 환경에서 먼저 실행해 보세요.

DROP 문은 정말 강력하지만 그만큼 위험할 수 있는 명령어입니다.
데이터 전체 손실로 이어질 수 있으니 꼭 신중하게 사용하고, 필요하다면 DELETE 또는 TRUNCATE와의 차이점도 함께 비교해보는 습관을 들이세요.

 

 

4. DDL과 DML의 차이점은? 🤔

SQL을 공부하다 보면 꼭 마주치는 개념이 바로

DDL(Data Definition Language)DML(Data Manipulation Language)이에요.
두 용어 모두 SQL의 하위 분류지만,

역할과 기능이 완전히 다르기 때문에 확실하게 구분해서 알아두는 게 중요합니다.

🆚 DDL vs DML 비교표

구분 DDL DML
풀네임 Data Definition Language Data Manipulation Language
역할 테이블 구조 정의 및 변경 테이블 안의 데이터 조작
대표 명령어 CREATE, ALTER, DROP INSERT, UPDATE, DELETE, SELECT
ROLLBACK 불가능 (일반적으로 즉시 반영) 가능 (트랜잭션 사용 시)
사용 시점 초기 테이블 설계 또는 구조 변경 시 일상적인 데이터 입력 및 수정 작업 시

📌 핵심 요약

  • DDL은 테이블 "뼈대"를 만드는 것!
  • DML은 그 안에 "내용물"을 채우고 바꾸는 작업!

초보자 입장에서는 두 개념을 헷갈리는 일이 잦지만, 실무나 면접에서도 자주 나오는 구분이니 꼭 정리해두세요.
구조(DDL) vs 데이터(DML)라는 큰 틀로 이해하면 더 쉬워요!

 

 

5. 실전 예제로 배우는 DDL 활용법 💡

이제 이론만 보고 끝낼 수는 없죠?

실제 상황에서 어떻게 CREATE, ALTER, DROP을 사용하는지, 실전 예제를 통해 알아보겠습니다.

실습 환경은 MySQL 또는 MariaDB 기준이며, 로컬에서 직접 실행해보시면 학습 효과가 훨씬 좋아요!

🛠️ Step 1: 사용자 테이블 생성

CREATE TABLE users (
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(30) NOT NULL,
    password VARCHAR(100) NOT NULL,
    email VARCHAR(50),
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
  • AUTO_INCREMENT로 user_id 자동 증가
  • created_at 기본값으로 현재 시간 자동 설정

🛠️ Step 2: 컬럼 추가 (ALTER)

ALTER TABLE users ADD phone_number VARCHAR(20);

 

운영 중 “휴대폰 번호” 컬럼이 필요하다는 요청이 들어왔을 때 이렇게 ALTER로 유연하게 대응할 수 있어요.

🛠️ Step 3: 테이블 삭제 (DROP)

DROP TABLE users;

 

테스트용으로 만든 테이블을 완전히 삭제할 때 유용하지만, 실서비스에서는 신중하게 사용해야 해요!

🧠 실전에서 자주 쓰는 DDL 흐름

  1. 개발 초기 - CREATE로 테이블 설계
  2. 요구사항 변경 - ALTER로 컬럼 추가/수정
  3. 테스트 종료 시 - DROP으로 정리

이처럼 DDL 명령어는 프로젝트 전체 생명주기에서 필수로 활용되며, 특히 초기 설계 및 유지보수 단계에서 그 진가를 발휘합니다.
직접 연습해보고, 실제 서비스에서 사용할 수 있을 만큼 자신감을 키워보세요!

 

 

마무리하며 ✨

지금까지 CREATE, ALTER, DROP을 중심으로 한 데이터 정의어(DDL)에 대해 함께 공부해봤습니다.

초보자 분들은 처음에는 조금 복잡하게 느껴질 수도 있지만, 실제로 몇 번 실습하고 나면 오히려 가장 손에 익게 되는 명령어들이 바로 이 DDL들이에요.

 

테이블을 만들고 → 수정하고 → 삭제하는 과정은 웹 개발, 데이터 분석, 서버 구축 등 거의 모든 IT 분야에서 반복되는 핵심 루틴이죠.


앞으로 프로젝트를 진행하시면서도 이 명령어들을 자연스럽게 써먹게 될 날이 꼭 올 거예요!😉

반응형

+ Recent posts