ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [2월 4주차-2/24(2)]WAS(Web Application Server)와 ANSI SQL 정리
    Why Not SW CAMP 5기/수업 기록 2025. 2. 24. 17:35

    WAS(Web Application Server)는 웹 애플리케이션이 실행되는 환경을 제공하는 서버로, 클라이언트(웹 브라우저)와 데이터베이스(DBMS) 사이에서 애플리케이션 로직을 수행하는 역할을 함

    WAS의 주요 기능은 웹 요청 처리, 세션 관리, 트랜잭션 관리, 데이터베이스 연동 등이 있음


    1. Apache / Tomcat

    (1) Apache

    Apache는 대표적인 웹 서버(Web Server)로, 정적인 HTML, CSS, JavaScript 파일을 클라이언트에 제공하는 역할을 함.

    (2) Tomcat

    Tomcat은 Java 기반의 WAS(Web Application Server)로, Java Servlet과 JSP(JavaServer Pages)를 실행하는 환경을 제공함


    2. Framework

    프레임워크는 웹 애플리케이션을 개발할 때 반복적인 작업을 쉽게 처리할 수 있도록 도와주는 구조를 제공

    (1) Spring Framework

    • Java 기반의 대표적인 웹 애플리케이션 프레임워크
    • Spring MVC를 사용하여 컨트롤러와 뷰를 분리한 구조로 웹 애플리케이션 개발 가능

    (2) Django

    • Python 기반의 웹 애플리케이션 프레임워크

    3. DBMS (Database Management System)

    DBMS는 데이터베이스를 관리하는 소프트웨어로, 데이터 저장, 조회, 수정, 삭제 등의 기능을 제공

    대표적인 DBMS로는 MySQL, PostgreSQL, Oracle, SQL Server 등이 있음

    (1) 관계형 DBMS (RDBMS)

    • 데이터를 테이블(Table) 구조로 저장하고 SQL(Structured Query Language)로 데이터를 관리하는 방식
    • MySQL, MariaDB, PostgreSQL, Oracle DB, Microsoft SQL Server 등이 포함됨

    (2) 비관계형 DBMS (NoSQL)

    • 데이터 모델이 테이블 형태가 아니며, Key-Value, Document, Column, Graph 구조 등을 사용할 수 있음
    • MongoDB(Document DB), Redis(Key-Value Store), Cassandra(Column Store) 등이 포함됨

    4. DB (Database)

    DB(Database)는 데이터를 저장하는 논리적인 공간을 의미하며, 하나의 DBMS 안에는 여러 개의 데이터베이스가 존재할 수 있음


    5. Table (테이블)

    테이블(Table)은 DB 안에서 데이터를 저장하는 논리적인 구조 단위입니다.

    • 테이블은 행(Row)과 열(Column)로 이루어져 있으며, 각 행이 하나의 데이터 레코드를 의미합니다.
    • Primary Key (기본키): 각 행을 고유하게 식별하는 컬럼
    • Foreign Key (외래키): 다른 테이블의 기본키를 참조하는 컬럼

    정리

    WAS (Web Application Server)
     ├── Apache / Tomcat  →  웹 서버 및 애플리케이션 실행 환경
     ├── Framework  →  Spring, Struts 등 개발 편의성 제공
     ├── DBMS (Database Management System)  →  MySQL, Oracle 등 데이터 관리
     │   ├── DB (Database)  →  논리적 데이터 저장 공간
     │   │   ├── Table (테이블)  →  데이터를 저장하는 구조
     │   │   │   ├── Row (행)  →  개별 데이터
     │   │   │   ├── Column (열)  →  속성 (예: ID, Name, Email)
    
    

    이러한 구조를 기반으로 WAS는 클라이언트의 요청을 받아 프레임워크를 통해 처리한 후, DBMS에서 데이터를 조회 및 조작하여 응답을 반환하는 방식으로 동작함.

    6. ANSI SQL이란?

    ANSI SQL(American National Standards Institute Structured Query Language)은 SQL(Structured Query Language) 표준

    즉, 관계형 데이터베이스(RDBMS)에서 데이터를 정의하고 조작하기 위한 표준 SQL 문법을 의미


    7. ANSI SQL의 필요성

    각 DBMS(예: MySQL, PostgreSQL, Oracle, SQL Server)는 자체적으로 SQL을 구현하는 방식이 조금씩 다름.

    이로 인해 DBMS 간 호환성 문제가 발생할 수 있기 때문에 ANSI에서 공통적인 SQL 문법을 표준화함

    • 예를 들어, JOIN 문법, 서브쿼리 사용 방식, 트랜잭션 관리 등이 ANSI SQL로 표준화되어있음.

    8. ANSI SQL 주요 특징

    (1) 데이터 정의 언어(DDL: Data Definition Language)

    데이터베이스 객체(테이블, 인덱스 등)를 생성, 수정, 삭제하는 명령어

    • CREATE TABLE : 테이블 생성
    • ALTER TABLE : 테이블 수정
    • DROP TABLE : 테이블 삭제
    • TRUNCATE TABLE : 테이블 삭제

    (2) 데이터 조작 언어(DML: Data Manipulation Language)

    데이터를 조회, 삽입, 수정, 삭제하는 명령어

    • INSERT : 데이터 삽입
    • SELECT : 데이터 조회
    • UPDATE : 데이터 수정
    • DELETE : 데이터 삭제 (행 삭제)

    📌 예제

    -- 데이터 삽입
    INSERT INTO employees (id, name, salary) VALUES (1, 'John Doe', 50000);
    
    -- 데이터 조회
    SELECT * FROM employees WHERE salary > 40000;
    
    -- 데이터 수정
    UPDATE employees SET salary = 55000 WHERE id = 1;
    
    -- 데이터 삭제
    DELETE FROM employees WHERE id = 1;
    
    /*
    주석 다는 방법
    */
    
    

    (3) TRUNCATE vs DROP vs DELETE 차이점 정리

    비교 항목 TRUNCATE DROP DELETE

    SQL 종류 DDL (데이터 정의어) DDL (데이터 정의어) DML (데이터 조작어)
    기능 테이블의 모든 데이터 삭제 (구조 유지) 테이블 자체를 완전히 삭제 특정 조건의 행만 삭제 가능
    롤백 가능 여부 ❌ 불가능 (COMMIT 없이 즉시 반영) ❌ 불가능 (COMMIT 없이 즉시 반영) ✅ 가능 (ROLLBACK으로 취소 가능)
    자동 증가 값 (AUTO_INCREMENT) ✅ 초기화됨 ❌ 테이블이 삭제되므로 의미 없음 ❌ 유지됨
    테이블 구조 유지 여부 ✅ 유지됨 ❌ 삭제됨 ✅ 유지됨
    속도 ✅ 가장 빠름 ✅ 가장 빠름 상대적으로 느림
    트리거 작동 여부 ❌ 작동 안 함 ❌ 작동 안 함 ✅ 작동함
    WHERE 조건 사용 ❌ 불가능 (전체 삭제) ❌ 불가능 (전체 삭제) ✅ 가능 (필터링 가능)

    🚀 즉, DROP은 테이블 삭제, TRUNCATE는 전체 데이터 삭제, DELETE는 특정 데이터 삭제!


    (4) 데이터 제어 언어(DCL: Data Control Language)

    사용자의 접근 권한을 제어하는 명령어

    • GRANT : 특정 사용자에게 권한 부여
    • REVOKE : 특정 사용자 권한 회수

    📌 예제

    GRANT SELECT, INSERT ON employees TO user1;
    REVOKE INSERT ON employees FROM user1;
    

    (5) 트랜잭션 제어 언어(TCL: Transaction Control Language)

    트랜잭션을 관리하는 명령어

    • COMMIT : 트랜잭션 완료(저장)
    • ROLLBACK : 트랜잭션 취소(이전 상태로 복구)
    • SAVEPOINT : 특정 지점 저장 후 롤백 가능

    📌 예제

    BEGIN TRANSACTION;
    UPDATE employees SET salary = 60000 WHERE id = 1;
    ROLLBACK;  -- 변경 취소
    

Designed by Tistory.