ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 스파르타) 웹개발 종합반 완강, MySQL Query SELECT 연습 01
    TIL 2024. 4. 21. 16:28

    --

     

    학습 키워드: Javascript, module, MySQL, SELECT

     

    1. Script module

    <script type="module">
    	/* some firebase config */
    </script>

     - script 태그의 type을 module로 지정하면 해당 스크립트가 가장 마지막에 로드된다고 한다. 어쩐지 저번에 firebase 데이터를 불러오는 스크립트를 별개의 js 안에서 만들었더니 동작을 안해서 결국 module이 붙은 스크립트 안에 같이 넣었는데, 모듈 스크립트가 가장 마지막에 로드되기 때문에 다른 스크립트에서 firebase 설정이 아직 로드되지 않은게 문제였다.

     

     

    2. 프로그래머스 MySQL Query Select 문제 풀이 및 설명

    https://school.programmers.co.kr/learn/courses/30/lessons/59407

    SELECT ANIMAL_ID FROM ANIMAL_INS
    	WHERE NAME IS NOT NULL
    	ORDER BY ANIMAL_ID ASC

     - SELECT: 데이터베이스에서 데이터를 받아올때 사용한다.

     - FROM: ANIMAL_INS 라는 이름의 테이블에서 데이터를 찾는다.

     - WHERE: 뒤이어 나오는 조건을 충족하는 데이터를 의미한다.

     - IS NOT: IS와 NOT의 결합으로, 여기선 NAME의 값이 NULL이 아닌 데이터를 의미한다.

     - ORDER BY: ANIMAL_ID를 기준으로 ASC(ascending, 오름차순, DESC는 내림차순) 정렬

     - "ANIMAL_INS 테이블에서 NAME column의 값이 NULL이 아닌 데이터의 ANIMAL_ID column을 오름차순으로 정렬"한 데이터를 받게된다.

     

    --

     

    https://school.programmers.co.kr/learn/courses/30/lessons/59408

    SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS

     - COUNT(): 괄호안의 항목에 해당하는 숫자를 카운트

     - DISTINCT: Unique 한지 확인, 여기서는 "NAME" column의 값이 고유한 데이터가 된다.

     - "ANIMAL_INS 테이블에서 NAME column의 값이 고유한 데이터의 숫자"를 받게된다.

     

    --

     

    https://school.programmers.co.kr/learn/courses/30/lessons/59041

    SELECT NAME, COUNT(NAME) FROM ANIMAL_INS
        GROUP BY NAME
        HAVING COUNT(NAME) > 1
        ORDER BY NAME ASC

     - GROUP BY: 결과를 NAME 컬럼끼리 묶음? 어떻게 동작하는지 감은 잡았는데 정확한 기능을 뭐라고 표현하는게 맞는 건지를 모르겠다. 이 쿼리에서 GROUP BY 부분을 빼면 각각의 NAME의 COUNT가 아닌 테이블 내 전체 NAME의 COUNT가 반환된다. 

     - HAVING: Group function을 사용할 수 있다. 여기서는 COUNT(NAME) > 1 의 조건을 충족하는 데이터를 의미한다.

     - "ANIMAL_INS 테이블에서 NAME column과 COUNT(NAME)을 반환하되, NAME column을 기준으로 묶어 COUNT(NAME) 이 1보다 큰 row만 NAME 컬럼을 기준으로 오름차순으로 정렬"한 데이터를 받게된다

     - 위 내용은 GROUP BY에 대한 충분한 이해가 생기면 다시 작성하도록 한다.

     

    --

     

    https://school.programmers.co.kr/learn/courses/30/lessons/59036

    SELECT ANIMAL_ID NAME FROM ANIMAL_INS
        WHERE INTAKE_CONDITION LIKE "Sick"
        ORDER BY ANIMAL_ID ASC

     - LIKE: WHERE로 문자열을 비교하는 방법이다. INTAKE_CONDITION 값이 SICK인 데이터를 의미한다.

     - "ANIMAL_INS 테이블에서 INTAKE_CONDITION column 값이 Sick 인 row의 ANIMAL_ID column을 오름차순으로 정렬한 ANIMAL_ID column" 데이터를 받게된다.

     

    --

     

    https://school.programmers.co.kr/learn/courses/30/lessons/59405

    SELECT NAME from ANIMAL_INS
        ORDER by DATETIME asc
        LIMIT 1

     - LIMIT: 받는 데이터의 개수를 제한한다. 여기서는 1개 데이터만 받는다는 뜻이다.

     - "ANIMAL_INS 테이블에서 DATETIME으로 정렬한 데이터의 맨 첫 번째 row의 NAME column 데이터"를 받게된다. 오름차순 정렬을 했기 때문에 DATETIME이 최소 값인 row가 맨 처음 데이터다.

     

     

     

    728x90
Designed by Tistory.