SQL 기본부터 코테까지

ietgou·2024년 7월 29일

im_sql

목록 보기
1/5
post-thumbnail

SQL 코딩테스트를 해야 할 상황이 갑자기 생겼다. SQL은 gpt나 구글링으로만 자주 했는데... 간단한 문제를 풀 수 있는 기초를 다시 한번 다져봐야겠다.

gpt와 여러 개발자분들의 아티클을 합쳐서 개인적으로 정리해봤다.
수정하며 내가 이해하기 쉽게 최종본으로 정리해보자.


  1. 기초 개념 이해
  • 데이터베이스와 SQL의 기본 개념
  • 데이터베이스 관리 시스템(DBMS)의 종류
  • SQL의 기본 구조와 문법
  1. 기본 SQL 문법 학습
  • 데이터베이스 및 테이블 생성
  • 기본 데이터 타입 이해
  • 데이터 삽입, 수정, 삭제
  1. 기초 SQL 질의문 연습
  • SELECT 문
  • WHERE 절
  • ORDER BY 절
  • LIMIT 및 OFFSET
  1. 고급 SQL 문법 학습
  • JOIN (INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN)
  • GROUP BY와 HAVING 절
  • 서브쿼리
  1. 실전 문제 풀이 및 연습
  • 다양한 문제 풀이 사이트 이용 (LeetCode, HackerRank 등)
  • 기출 문제 풀이
  1. 최적화 및 심화 학습
  • 인덱스와 성능 최적화
  • 복잡한 쿼리 작성 연습
  • 데이터베이스 설계 기초

1단계: 기초 개념 이해

데이터베이스와 SQL의 기본 개념

  • 데이터베이스(Database): 데이터의 집합체로, 데이터를 구조화하여 저장하는 시스템.
  • SQL(Structured Query Language): 데이터베이스에서 데이터를 관리하고 조작하는 데 사용되는 언어.

데이터베이스 관리 시스템(DBMS)의 종류

  • 관계형 데이터베이스 관리 시스템(RDBMS): SQL Server, MySQL, PostgreSQL, Oracle 등.
  • NoSQL 데이터베이스: MongoDB, Cassandra 등.

SQL의 기본 구조와 문법

  • SQL은 주로 DDL(Data Definition Language), DML(Data Manipulation Language), DCL(Data Control Language)로 구성됨.
  • DDL: 데이터베이스 객체 생성 및 수정 (예: CREATE, ALTER, DROP)
  • DML: 데이터 조작 (예: SELECT, INSERT, UPDATE, DELETE)
  • DCL: 데이터베이스 접근 권한 제어 (예: GRANT, REVOKE)

2단계: 기본 SQL 문법 학습

데이터베이스 및 테이블 생성

-- 데이터베이스 생성
CREATE DATABASE mydatabase;

-- 데이터베이스 사용
USE mydatabase;

-- 테이블 생성
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

기본 데이터 타입 이해

  • INT, VARCHAR, DATE, TIMESTAMP 등
    데이터 삽입, 수정, 삭제

-- 데이터 삽입
INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com');

-- 데이터 수정
UPDATE users SET email = 'john.doe@example.com' WHERE username = 'john_doe';

-- 데이터 삭제
DELETE FROM users WHERE username = 'john_doe';

3단계: 기초 SQL 질의문 연습

  • SELECT 문

sql

-- 모든 컬럼 조회
SELECT * FROM users;

-- 특정 컬럼 조회
SELECT username, email FROM users;
WHERE 절

sql

-- 조건에 맞는 데이터 조회
SELECT * FROM users WHERE username = 'john_doe';
ORDER BY 절

sql

-- 데이터 정렬
SELECT * FROM users ORDER BY created_at DESC;
LIMIT 및 OFFSET

sql

-- 데이터 제한
SELECT * FROM users LIMIT 10 OFFSET 20;

4단계: 고급 SQL 문법 학습

  • JOIN

sql
코드 복사

-- INNER JOIN 예시
SELECT users.username, orders.order_date
FROM users
INNER JOIN orders ON users.id = orders.user_id;
  • GROUP BY와 HAVING 절

sql
코드 복사

-- 그룹화 및 조건
SELECT COUNT(*), username
FROM users
GROUP BY username
HAVING COUNT(*) > 1;
  • 서브쿼리

sql
코드 복사

-- 서브쿼리 예시
SELECT username
FROM users
WHERE id IN (SELECT user_id FROM orders WHERE amount > 100);

5단계: 실전 문제 풀이 및 연습

LeetCode, HackerRank 등에서 SQL 문제 풀이
기출 문제 및 다양한 시나리오 기반 연습

6단계: 최적화 및 심화 학습

인덱스와 성능 최적화

sql
코드 복사

-- 인덱스 생성
CREATE INDEX idx_username ON users(username);
복잡한 쿼리 작성 연습

여러 테이블을 사용하는 복잡한 쿼리 작성
트랜잭션 관리
데이터베이스 설계 기초

0개의 댓글