모든 개발자가 알아야 할 SQL 쿼리
Source: Dev.to
Introduction to SQL
웹 개발자라면 어느 순간 데이터베이스와 작업해 본 적이 있을 겁니다. PostgreSQL, MySQL, SQLite 혹은 다른 데이터베이스일 수도 있죠. 스택이 무엇이든, SQL은 항상 뒤에서 작동합니다. 그리고 솔직히 말해서, 정확히 필요한 데이터를 반환하는 단일 SQL 쿼리를 작성하는 것보다 기분 좋은 일은 거의 없습니다. 빠르게 실행된다면 보너스 점수! 이 글에서는 모든 개발자가 알아야 할 필수 SQL 쿼리를 살펴보겠습니다. API를 만들든, 대시보드를 구축하든, 새벽 2시에 프로덕션 이슈를 디버깅하든, 이 쿼리들은 여러분의 일상적인 도구가 될 것입니다.
SELECT – The Foundation
SQL이 영화라면 SELECT는 기원 스토리입니다. 의미 있는 모든 쿼리는 여기서 시작됩니다.
SELECT를 사용해 실제로 필요한 데이터만 가져오세요. SELECT *는 편리해 보이지만, 특히 큰 테이블에서는 쿼리를 느리게 만들고 대역폭을 낭비할 수 있습니다.
SELECT의 진정한 힘은 WHERE, JOIN, ORDER BY와 결합될 때 발휘됩니다.
SELECT id, name, email
FROM users;
WHERE – Filtering the Noise
데이터베이스에는 수백만 행이 저장될 수 있습니다. WHERE는 실제로 중요한 것만 남기도록 도와줍니다.
다음과 같은 방법으로 필터링할 수 있습니다:
- 비교 연산자:
=,!=,= - 논리 연산자:
AND,OR,NOT
WHERE 없이 쿼리를 실행하면 위험해질 수 있습니다. DELETE FROM users;와 같이 조건 없이 실행하면 모든 레코드가 삭제됩니다. 항상 두 번 확인하세요.
SELECT *
FROM orders
WHERE status = 'completed';
INSERT – Adding New Data
사용자가 회원가입을 하든, 주문을 하든, 파일을 업로드하든 INSERT가 필요합니다.
베스트 프랙티스
- 항상 컬럼 이름을 명시하세요.
- 가능하면 대량 삽입(bulk insert)을 사용해 성능을 향상시키세요.
- 사용자 입력을 절대 신뢰하지 마세요. 파라미터화된 쿼리나 ORM을 사용해 SQL 인젝션을 방지하세요.
INSERT INTO users (name, email)
VALUES ('Alice', 'alice@example.com');
UPDATE – Changing Existing Data
이메일이 바뀌고, 주소가 바뀌고, 버그가 발생합니다. 이때 UPDATE가 필요합니다.
가장 흔하고 위험한 실수는 WHERE 절을 빼먹는 것입니다. WHERE 없이 실행하면 모든 행이 업데이트됩니다.
팁
- 여러 컬럼을 한 번에 업데이트할 수 있습니다.
- 프로덕션 환경에서는 트랜잭션을 사용해 안전하게 작업하세요.
UPDATE users
SET email = 'alice@newdomain.com'
WHERE id = 42;
DELETE – Removing Data
오래되었거나 사용되지 않는 데이터를 정리할 때 DELETE를 사용합니다.
사용 사례
- 만료된 세션 제거
- 테스트 데이터 정리
- 오래된 로그 삭제
많은 프로덕션 앱에서는 레코드를 영구 삭제하는 대신 deleted_at 컬럼을 추가해 소프트 삭제(soft delete)를 사용합니다.
DELETE FROM sessions
WHERE last_active 100
);
Final Thoughts
이 쿼리들을 마스터하면 다음과 같은 이점을 얻을 수 있습니다:
- 데이터베이스를 직접 쿼리해 더 빠르게 디버깅
- 더 나은, 더 빠른 API 구축
- 백엔드 로직을 깔끔하게 작성
- 코드 리뷰 시 팀원들에게 좋은 인상을 남김
SQL은 두렵지 않습니다. 그것은 슈퍼파워와 같습니다. 그리고 모든 기술처럼, 연습을 많이 할수록 더 자신감 있고 막을 수 없는 존재가 됩니다.