🧠 SQL & Java Interface 복습 정리
🧩 [ SQL 기초 문법 정리 ]
자주 사용되는 SQL 핵심 문법 정리표
| 번호 | 구문 | 설명 | 예시 |
|---|
| 1️⃣ | 별칭 (AS) | 속성명이나 테이블명에 별칭 부여 | SELECT name AS 이름 FROM member AS m; |
| 2️⃣ | 중복제거 (DISTINCT) | 중복된 데이터를 제거 | SELECT DISTINCT city FROM member; |
| 3️⃣ | 산술연산자 | 수학 연산 수행 | +, -, *, /, DIV, MOD |
| 4️⃣ | 비교연산자 | 두 값 비교 | >, <, >=, <=, =, != |
| 5️⃣ | 논리연산자 | 여러 조건 결합 | AND, OR, NOT |
| 6️⃣ | 기타연산자 | 조건 검색 | BETWEEN A AND B, IN(...), IS NULL |
| 7️⃣ | 문자패턴 | LIKE 구문으로 문자 비교 | '김%', '김_' |
| 8️⃣ | 정렬 (ORDER BY) | 결과를 정렬 | ORDER BY age DESC; |
| 9️⃣ | 개수 제한 (LIMIT) | 결과의 개수를 제한 | LIMIT 0, 10; |
| 🔟 | 작성 순서 | SQL 문장 기본 구조 | SELECT → FROM → WHERE → ORDER BY → LIMIT |
📄 문자패턴 예시
| 패턴 | 설명 | 예시 |
|---|
% | 문자 개수 무관 | LIKE '김%' → 성이 김씨인 사람 |
_ | 문자 1개 대응 | LIKE '김_' → 외자인 사람 |
📊 [ 그룹 / 집계 함수 (GROUP & AGGREGATE) ]
| 구분 | 함수명 | 설명 |
|---|
| 🧩 그룹화 | GROUP BY | 특정 속성을 기준으로 데이터를 그룹화 |
| 📈 합계 | SUM(속성명) | 속성의 총합 반환 |
| 📊 평균 | AVG(속성명) | 속성의 평균값 반환 |
| 🔽 최솟값 | MIN(속성명) | 속성 중 최소값 반환 |
| 🔼 최댓값 | MAX(속성명) | 속성 중 최대값 반환 |
| 🔢 레코드 개수 | COUNT(속성명) | NULL 제외한 레코드 개수 |
| ⚙️ 전체 개수 | COUNT(*) | NULL 포함 전체 레코드 개수 |
📘 예시
SELECT name, SUM(price)
FROM buy
GROUP BY name;
🧱 [ 인터페이스 (Interface) ]
상수와 추상메소드를 포함하는 하나의 타입(규약)
| 구분 | 설명 |
|---|
| 🧩 상수(Constant) | 초기값 필수, 변경 불가 |
| 🧠 추상메소드(Abstract) | 구현체에서 반드시 구현 |
| ⚙️ 객체 생성 불가 | 생성자가 없어 직접 객체 생성 불가 |
| 🔗 변수 선언 가능 | 인터페이스 타입으로 참조 가능 |
💡 인터페이스 내 메소드 종류
| 종류 | 설명 | 오버라이딩 여부 |
|---|
| 🧱 추상 메소드 | 구현체에서 반드시 구현해야 함 | ⭕ 가능 |
| ⚙️ 디폴트 메소드 | 기본 구현 제공 가능 | ⭕ 가능 |
| ⚡ 정적 메소드 | 인터페이스명.메소드명() 형태로 호출 | ❌ 불가능 |
| 🔒 private 메소드 | 인터페이스 내부에서만 사용 가능 | ❌ 불가능 |
| 🔒⚡ private static 메소드 | 내부 전용 정적 메소드 | ❌ 불가능 |
🧩 인터페이스 구현 예시
interface Animal {
void sound();
default void info() { System.out.println("동물 인터페이스"); }
}
class Dog implements Animal {
public void sound() { System.out.println("멍멍"); }
}
💡 익명 구현체
Animal cat = new Animal() {
public void sound() { System.out.println("야옹"); }
};
cat.sound();
🧠 [ 팀프로젝트 회고 및 개선점 ]
| 번호 | 개선 포인트 | 설명 |
|---|
| 1️⃣ | 싱글톤 구성 | DTO를 제외한 모든 클래스는 싱글톤으로 설계 |
| 2️⃣ | 캡슐화 강화 | 모든 멤버변수는 private으로 선언 |
| 3️⃣ | DTO 기본구성 | 기본생성자, 전체생성자, getter/setter 포함 |
| 4️⃣ | 설계 전 한글로 로직 정리 | 구현 전 개념 정리로 코드 흐름 명확화 |
| 5️⃣ | API 명세서 관리 | 변경 시 즉시 수정하여 팀 간 혼선 방지 |
| 6️⃣ | 로그 확인 습관화 | soutm, soutp, soutv 적극 활용 |
| 7️⃣ | 공통 규칙 정립 | 코딩 컨벤션과 파일 구조를 통일 |