[SQL] 개념 정리

이연우·2025년 7월 18일

TIL

목록 보기
9/100

🗃️ SQL이란?

  • Structured Query Language의 약자로, 데이터베이스(DB)에 질의(Query)하는 언어
  • 즉, 데이터베이스에 저장된 데이터를 조회하거나 수정할 수 있는 언어
    • ex) "학생 테이블에서 이름이 '홍길동'인 사람을 찾아 줘"
SELECT * FROM 학생 WHERE 이름 = '홍길동';
  • 데이터베이스는 기본적으로 테이블(table) 단위로 정보를 저장
  • 테이블은 엑셀처럼 행(row)과 열(column) 구조

ex) students 테이블

idnameage
1철수17
2영희18

🧩 SQL의 기본 명령어 4가지(CRUD)

기능설명SQL
조회데이터 조회SELECT
추가데이터 삽입INSERT
수정데이터 변경UPDATE
삭제데이터 제거DELETE

🔍 SELECT(조회하기)

SELECT 열이름 FROM 테이블이름;

> 모든 열 조회students 테이블의 모든 데이터를 가져옴

SELECT * FROM students;

> 특정 열만 조회 → 이름과 나이만 가져옴

SELECT name, age FROM students;

> 조건 붙이기(WHERE) → 18세 이상만 가져옴

SELECT * FROM students WHERE age >= 18;

➕ INSERT(추가하기)

INSERT INTO 테이블이름 (1,2) VALUES (1,2);
  • ex) '민수'라는 데이터 추가
INSERT INTO students (name, age) VALUES ('민수', 19);

🛠️ UPDATE(수정하기)

UPDATE 테이블이름 SET=WHERE 조건;
  • ex) 민수의 나이를 20으로 수정
UPDATE students SET age = 20 WHERE name = '민수';

🗑️ DELETE(삭제하기)
→ ⚠️ WHERE 조건을 안 쓰면 모든 행이 삭제되니 주의

DELETE FROM 테이블이름 WHERE 조건;
  • ex) '민수'를 테이블에서 제거
DELETE FROM students WHERE name = '민수';

💻 JDBC를 통한 데이터베이스 연결

  • Java: 범용 프로그래밍 언어 → 앱, 웹, 서버 등을 만드는 도구
  • SQL: Structured Query Language → DB에 데이터를 요청하거나 관리하는 언어
  • JDBC: Java Database Connectivity → Java와 SQL(DB)을 연결해주는 브릿지(다리) 역할의 API

📡 관계 한눈에 보기

Java 코드 → JDBC API → SQL 쿼리 실행 → 데이터베이스(DB)
                                 ↑
                        결과(ResultSet 등)

Java는 앱의 전체 흐름(로직)을 담당
SQL은 데이터의 저장 · 조회 · 수정 · 삭제를 담당
JDBC는 이 둘을 연결해서 Java가 SQL을 사용할 수 있게 만들어 줌

🎯 역할 비교: Java vs SQL

항목JavaSQL
종류범용 프로그래밍 언어데이터베이스 전용 언어
목적앱, 웹, 게임, 서버 등 전반적인 로직 처리데이터 저장, 조회, 수정, 삭제
주체사람이나 프로그램이 로직을 짬DB에게 "명령"을 내림
예시로그인 기능, 계산기 만들기, 버튼 클릭 처리사용자 정보 찾기, 주문 내역 저장

🔧 실제 사용 흐름 예시
👇 Java에서 DB에 저장된 유저 정보를 가져오고 싶다!

  1. Java는 SELECT * FROM users; 라는 SQL 쿼리를 준비
  2. JDBC가 이 SQL을 데이터베이스에게 전달
  3. DB는 해당 데이터를 찾아서 JDBC를 통해 Java에게 돌려줌
  4. Java는 그 결과를 화면에 출력하거나 로직에 사용

📝 예제 코드

// 1. Java 코드 안에서
Class.forName("com.mysql.cj.jdbc.Driver"); // JDBC 드라이버 로드
Connection conn = DriverManager.getConnection(url, user, pwd); // DB 연결

// 2. SQL 작성 (Java 안에서 문자열로)
String sql = "SELECT * FROM users";

// 3. JDBC를 통해 SQL 실행
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);

// 4. 결과 처리
while (rs.next()) {
    System.out.println(rs.getString("name"));
}

// 5. 자원 해제
rs.close();
stmt.close();
conn.close();

✅ Java

  • 프로그램 전반의 구조와 흐름 설계
  • 사용자 입력 처리
  • DB 연결을 위한 JDBC 사용

✅ SQL

  • 데이터 조회, 삽입, 수정, 삭제
  • CREATE, DROP: 테이블 및 스키마 생성/삭제

✅ JDBC

  • DriverManager: DB 연결 생성
  • Connection: 연결 객체
  • Statement, PreparedStatement: SQL 실행 도구
  • ResultSet: SELECT 결과 받아오기
  • close(): 자원 해제

⚠️ JDBC 없이 SQL만 쓰면 생기는 문제점

문제점설명
❌ 직접 연결 불가Java는 DB와 직접 통신하는 기능이 없음 (소켓 연결, 프로토콜 등 없음)
❌ SQL 결과 처리 불편SQL 결과를 Java 객체로 자동 변환해줄 수단이 없음 (ResultSet 없음)
❌ 보안 위험SQL 문자열을 직접 실행하다 보면 SQL Injection 같은 보안 문제가 생김
❌ 재사용성 낮음같은 쿼리를 다시 쓰려면 반복적으로 수동 구현해야 함
❌ 유지보수 어려움연결/해제/예외 처리 등 모든 걸 수작업으로 관리해야 함

🔌 JDBC가 필요한 이유

  • 표준화된 인터페이스 제공(Connection, Statement 등)
  • 자바와 DB 간 통신을 안전하고 효율적으로 처리
  • SQL 실행 결과를 자바에서 쉽게 사용할 수 있게 함
  • 드라이버만 바꾸면 DBMS 종류를 변경해도 코드 변경 최소화

0개의 댓글