데이타베이스/PostgreSQL

PostgreSQL 초보자를 위한 필수 SQL 명령 마스터하기

shimdh 2025. 10. 29. 08:52
728x90

PostgreSQL 데이터베이스와 처음 마주치는 순간, 복잡한 명령어와 쿼리 문법이 머리를 아프게 할 수 있습니다. 하지만 걱정 마세요! 몇 가지 핵심 SQL 명령어를 익히기만 하면, 데이터를 자유자재로 검색하고, 추가하고, 수정하며, 삭제하는 데 자신감을 가질 수 있습니다. 이 글에서는 PostgreSQL의 기본 SQL 명령어를 실전 예시와 함께 자세히 탐구해보겠습니다. 초보자도 쉽게 따라할 수 있도록 단계별 설명과 팁을 추가했으니, 함께 데이터베이스 세계의 문을 열어보세요.

728x90

SQL, 왜 중요한가요?

오늘날 데이터는 '새로운 석유'로 불릴 만큼 소중한 자산입니다. 기업의 전략 결정부터 과학 연구, 일상적인 개인 정보 관리까지 모든 영역에서 데이터의 역할이 커지고 있죠. SQL(Structured Query Language)은 이러한 데이터를 관계형 데이터베이스(RDBMS)에서 효율적으로 다루기 위한 표준 언어입니다. PostgreSQL처럼 오픈소스 기반의 강력한 RDBMS에서는 SQL을 통해 복잡한 쿼리를 간단히 구현할 수 있으며, 이는 개발자, 데이터 분석가, DBA(데이터베이스 관리자)에게 필수 스킬입니다.

PostgreSQL을 선택한 이유? 안정성, 확장성, 그리고 무료라는 매력 덕분에 스타트업부터 대기업까지 널리 사용되죠. 이제 핵심 명령어로 넘어가 보겠습니다. 모든 예시는 가상의 employees 테이블(직원 정보: first_name, last_name, department, salary 등)을 기반으로 합니다.

1. SELECT 명령: 데이터 검색의 시작

데이터베이스에서 가장 자주 쓰이는 명령이 바로 SELECT입니다. 이 명령으로 원하는 열(컬럼)을 지정하거나, 조건에 맞는 행(로우)을 필터링할 수 있어요. 불필요한 데이터를 최소화하며 정확한 정보를 추출하는 데 최적입니다.

기본 사용법: 특정 열 가져오기

SELECT first_name, last_name FROM employees;
  • 설명: employees 테이블에서 모든 직원의 이름과 성만 검색합니다. * 대신 특정 열을 지정하면 쿼리 속도가 빨라지고, 결과가 깔끔해집니다.
  • : 테이블이 크면 EXPLAIN 명령으로 쿼리 실행 계획을 확인해 보세요. (예: EXPLAIN SELECT ...)

WHERE 절과 함께: 조건 필터링

SELECT * FROM employees WHERE department = 'Sales';
  • 설명: 'Sales' 부서 직원만 가져옵니다. *는 모든 열을 의미하니, 필요 시 특정 열로 제한하세요.
  • 추가 팁: 문자열 비교 시 대소문자 구분을 피하려면 ILIKE를 사용하세요. (예: WHERE department ILIKE '%sales%')

2. INSERT 명령: 새로운 데이터 추가

새로운 레코드를 테이블에 삽입할 때 INSERT를 씁니다. 직원 등록이나 제품 추가처럼 일상적인 작업에 딱 맞아요. 열 순서와 데이터 타입을 맞추는 게 핵심입니다.

기본 사용법: 단일 레코드 추가

INSERT INTO employees (first_name, last_name, department, salary) 
VALUES ('John', 'Doe', 'HR', 50000);
  • 설명: 'John Doe' 직원을 HR 부서에 월급 50,000으로 추가합니다. 열 이름과 값을 괄호로 명확히 지정하세요.
  • : 여러 레코드 추가 시 VALUES를 반복하세요. (예: VALUES ('Jane', 'Smith', 'IT', 60000), ('Bob', 'Johnson', 'Sales', 55000);)

3. UPDATE 명령: 기존 데이터 수정

시간이 지나면서 데이터가 변하는 건 당연하죠. UPDATE로 특정 필드를 변경할 수 있지만, WHERE 절을 잊지 마세요 – 생략하면 전체 테이블이 영향을 받습니다!

기본 사용법: 조건에 맞는 값 변경

UPDATE employees 
SET department = 'Marketing', salary = 60000 
WHERE first_name = 'John' AND last_name = 'Doe';
  • 설명: 'John Doe'의 부서를 'Marketing'으로, 월급을 60,000으로 업데이트합니다. 여러 열을 한 번에 수정 가능합니다.
  • : 변경 전 SELECT로 미리 확인하세요. 트랜잭션 사용 시 BEGIN; UPDATE ...; COMMIT;으로 안전하게 롤백할 수 있습니다.

4. DELETE 명령: 데이터 제거

더 이상 필요 없는 데이터를 지울 때 DELETE를 활용하세요. WHERE 절 없이는 테이블 전체가 사라질 수 있으니, 백업 후 실행하는 습관을 들이세요.

기본 사용법: 특정 레코드 삭제

DELETE FROM employees 
WHERE first_name = 'John' AND last_name = 'Doe';
  • 설명: 'John Doe' 레코드를 삭제합니다. 조건이 여러 개일 수 있어요.
  • : 대량 삭제 시 TRUNCATE TABLE employees;를 고려하세요. (빠르지만 제약 조건 무시)

5. ORDER BY 절: 결과 정렬

검색 결과를 무작위로 보는 건 비효율적입니다. ORDER BY로 알파벳 순이나 숫자 순으로 정리해 보세요.

기본 사용법: 오름차순/내림차순 정렬

SELECT * FROM employees ORDER BY last_name ASC, salary DESC;
  • 설명: 성을 오름차순으로, 월급을 내림차순으로 정렬합니다. 여러 열 지정 가능.
  • : NULL 값 처리 시 NULLS FIRST/LAST 옵션을 추가하세요.

6. LIMIT 절: 결과 수 제한

대용량 테이블에서 모든 데이터를 로드하면 서버가 버거워집니다. LIMIT로 처음 N개만 가져와 페이징처럼 사용하세요.

기본 사용법: 행 수 제한

SELECT * FROM employees ORDER BY salary DESC LIMIT 5 OFFSET 10;
  • 설명: 월급 높은 순으로 10번째부터 5개만 가져옵니다. OFFSET으로 페이징 구현.
  • : 웹 앱에서 페이지네이션 시 LIMIT 10 OFFSET (page-1)*10 패턴을 활용하세요.

결론: SQL 마스터를 위한 다음 단계

이제 SELECT, INSERT, UPDATE, DELETE라는 CRUD(Create, Read, Update, Delete) 기본기를 익혔습니다. 여기에 ORDER BYLIMIT를 더하면 데이터 탐색이 훨씬 수월해지죠. PostgreSQL은 이 명령어들만으로도 강력한 도구가 되지만, 실전에서 반복 연습이 핵심입니다. pgAdmin이나 DBeaver 같은 GUI 도구로 직접 쿼리를 테스트해 보세요.

728x90