주노 님의 블로그

20240704 사전캠프 4일차 TIL 본문

TIL

20240704 사전캠프 4일차 TIL

juno0432 2024. 7. 4. 22:39

 

사전캠프 4일차 내용 간단요약

  • 14:00 ~ 14:10 : 어제 TIL 복습 
  • 14:10 ~ 15:00 : SQL 문제풀이 (1 ~ 17) 
    NULL값 처리방법 (COALESCE, IFNULL, CASE)
  • 15:00 ~ 15:10 : 팀원 회의
  • 15:20 ~ 16:10 : 데일리 과제
    데일리 1주차 금요일 : 웹 동작 방식

 


SQL문제풀이 - NULL값 처리방법 (COALESCE, IFNULL, CASE)

더보기
입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요.

입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요.

 

SQL을 제대로 배운적이 없어서 SELECT에서 NULL값을 처리하는 법을 모르고 있었다

 

방법에는 세가지가 있다고 한다.

1. COALESCE

  • COALESCE(NAME, 'No name') AS NAME
  • 첫번째로 'NULL'이 아닌값을 반환한다
    하지만 NULL값을 다른값으로 변환할때도 사용한다 아래와 같이 생각하면 된다
    COALESC(NULL이 아닐때 반환할 값, NULL일때 반환할 값)

2. IFNULL

  • IFNULL(NAME, 'No name')
    첫번째 인수가 NULL이면 두번째 인수를 반환한다
    즉 NAME = NULL이면 'No name을 반환한다.

3. CASE

  • CASE
    WHEN NAME IS NULL THEN 'No name'
    ELSE NAME
    END AS NAME

그외 사용한 절 정리

내림차순 오름차순은 항상 헷갈림 ㅠ

  • ORDER BY : 정렬하기
    ASC : 오름차순 작은거부터, 없으면 오름차순
    DESC : 내림차순 큰거부터

    예시
    SELECT ANIMAL_ID 
    FROM ANIMAL_INS 
    WHERE NAME IS NOT NULL
    ORDER BY ANIMAL_ID
  • GROUP BY ~ HAVING
    GROUP BY : 컬럼 기준으로 동일한 값을 묶는다
    HAVING : GROUP BY 절의 조건문 WHERE라고 생각하면 편함

    예시
    SELECT NAME, COUNT(NAME) AS 'COUNT'
    FROM ANIMAL_INS
    GROUP BY NAME
    HAVING COUNT(NAME) >= 2
    ORDER BY NAME ASC;

  • DISTINCT
    중복을 제거함

    예시
    SELECT COUNT (DISTINCT NAME)
    FROM ANIMAL_INS

  • COUNT
    수를 셈

    예시
    SELECT COUNT (ANIMAL_ID)
    FROM ANIMAL_INS

  • LIMIT
    제한을 둠

    예시
    SELECT NAME
    FROM ANIMAL_INS
    ORDER BY DATETIME ASC
    LIMIT 1

  • IS NULL(IS NOT NULL)
    NULL값을 찾거나, NULL이 아닌 값을 찾음

    예시
    SELECT COUNT(USER_ID)
    FROM USER_INFO
    WHERE AGE IS NULL

  • MAX
    최대값을 찾음

    예시
    SELECT MAX(PRICE)
    FROM PRODUCT

 


팀원회의

더보기

금요일 데일리 과제를 위해서 팀원끼리 회의를 하였다.

금요일 데일리 과제 주제는 "개발 아티클 스터디"

  • 개인당 1개의 아티클을 선택한다 VS 팀이 1개의 아티클을 선택한다
  • 아티클 선정 : [해치지 않는 웹] 1. 웹 동작 방식
  • 각자 TIL에 정리한 글을 바탕으로 팀원이 피드백을 해준다
  • 7월 5일 금요일 16시전까지 작성을 완료한다.

데일리 1주차 금요일 과제 - 웹 동작 방식

 

더보기

1. 웹 클라이언트와 웹 서버

  • 웹 클라이언트
    사용자가 웹에 접근하고, 상호작용하는 프로그램이다.
    예를들어 크롬, 웨일, 엣지 등이 있다.
  • 웹 서버
    웹 페이지, 사이트 또는 앱에서 클라이언트 요청을 받아 해당 요청에따라 적절한 응답을 하거나, 데이터를 저장하는 프로그램이다.
    예를들어 아파치 웹 서버, GWS, IIS등이 있다
  • 과정
    클라이언트 : 사용자는 웨일에 접속해 주소창에 링크를 적고 엔터를 누른다
    서버 : 클라이언트에서 요청한 HTTP메세지를 확인 한 후, 데이터를 처리한후 응답한다.

2. WAS(Web Application Server)

  • 웹 서버 혼자 모든 로직을 처리하면 부하가 일어난다, 그래서 WAS라는 중간 처리기를 두어 서버의 부담을 줄인다
    예를들어 아파치 톰캣, 레진, 제이런 등이 있다
  • 클라이언트가 메세지를 보낸다 > WAS에 처리를 요청한다 > WAS는 DB와 연동하여 데이터를 처리한다 > 생성한 파일을 다시 서버로 전송한다
    위 과정으로 웹 서버는 부담을 줄일 수 있다.

3. DB(Data Base)

  • 데이터를 저장하는 곳이다.
  • 클라이언트가 메세지를 보낸다 > WAS는 DB에 데이터를 SQL질의를 통해 요청한다 > SQL질의에 맞는 결과값을 WAS로 전송한다.

4.  정리

  • WAS에 대한 내용을 이제 접하여 다시 정리해본다
    웹 서버 : 정적 콘텐츠 제공 및 HTTP 요청
    WAS : 동적 콘텐츠 제공 및 데이터베이스 연동 등
    으로 역할을 분리한다
  • WAS와 웹 서버를 같이 사용하는 이유
    성능 최적화 : 웹서버(정적 콘텐츠), WAS(동적 컨텐츠 및 데이터베이스)를 적절히 사용하며 성능을 최적화 할 수 있다.
    확장성 : 웹 서버와 WAS를 사용하면 각각의 요소를 독립적으로 확장이 가능함
    보안 : 웹 서버를 통해 WAS접근을 제어하므로 보안에도 유리

잘 정리된 내용이 있어서 같이 링크를 첨부해본다