🗃️ SQL이란?
- Structured Query Language의 약자로, 데이터베이스(DB)에 질의(Query)하는 언어
- 즉, 데이터베이스에 저장된 데이터를 조회하거나 수정할 수 있는 언어
- ex) "학생 테이블에서 이름이 '홍길동'인 사람을 찾아 줘"
SELECT * FROM 학생 WHERE 이름 = '홍길동';
ex) students 테이블
| id | name | age |
|---|---|---|
| 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);
INSERT INTO students (name, age) VALUES ('민수', 19);
🛠️ UPDATE(수정하기)
UPDATE 테이블이름 SET 열 = 값 WHERE 조건;
UPDATE students SET age = 20 WHERE name = '민수';
🗑️ DELETE(삭제하기)
→ ⚠️ WHERE 조건을 안 쓰면 모든 행이 삭제되니 주의
DELETE FROM 테이블이름 WHERE 조건;
DELETE FROM students WHERE name = '민수';
💻 JDBC를 통한 데이터베이스 연결
📡 관계 한눈에 보기
Java 코드 → JDBC API → SQL 쿼리 실행 → 데이터베이스(DB)
↑
결과(ResultSet 등)
→ Java는 앱의 전체 흐름(로직)을 담당
→ SQL은 데이터의 저장 · 조회 · 수정 · 삭제를 담당
→ JDBC는 이 둘을 연결해서 Java가 SQL을 사용할 수 있게 만들어 줌
🎯 역할 비교: Java vs SQL
| 항목 | Java | SQL |
|---|---|---|
| 종류 | 범용 프로그래밍 언어 | 데이터베이스 전용 언어 |
| 목적 | 앱, 웹, 게임, 서버 등 전반적인 로직 처리 | 데이터 저장, 조회, 수정, 삭제 |
| 주체 | 사람이나 프로그램이 로직을 짬 | DB에게 "명령"을 내림 |
| 예시 | 로그인 기능, 계산기 만들기, 버튼 클릭 처리 | 사용자 정보 찾기, 주문 내역 저장 |
🔧 실제 사용 흐름 예시
👇 Java에서 DB에 저장된 유저 정보를 가져오고 싶다!
SELECT * FROM users; 라는 SQL 쿼리를 준비📝 예제 코드
// 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
✅ 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가 필요한 이유