📕 SQL/MySQL

📕[SQL] 24.08.17 SQL

혜덕hyeduck 2024. 8. 17. 16:49

SQL ) LV1. 강원도에 위치한 생산공장 목록 출력하기

관련 개념

  • 문자열 자르기
    • SUBSTRING(문자열, 시작위치, 길이)
      • 문자열에서 시작위치(가장 앞이 1)부터 시작해 특정 길이만큼 추출하기
    • LEFT(문자열, 길이)
      • 문자열의 맨 왼쪽에서 특정 길이만큼 추출하기
    • RIGHT(문자열, 길이)
      • 문자열의 맨 오른쪽에서 특정 길이만큼 추출하기
    • SUBSTIRING_INDEX(문자열, 구분자, 개수)
      • 구분자를 기준으로 자르고 싶을 떄
      • 구분자가 개수만큼 나오기 전까지의 서브 문자열을 추출한다
        • 개수가 양수라면, 왼쪽부터 개수만큼 구분자를 계산했을 때 마지막 구분자의 왼쪽 문자열이 리턴
        • 개수가 음수라면, 오른쪽부터 개수만큼 구분자를 계산했을 때 마지막 구분자의 오른쪽 문자열을 리턴

접근법

  • SUBSTRING함수를 사용해 WHERE절에서 ADDRESS칼럼 값의 1번째부터 길이 3만큼의 문자열을 추출했을 때 강원도에 해당하는 데이터만 조회

코드

SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY
WHERE SUBSTRING(ADDRESS,1,3) = '강원도'
ORDER BY 1 ASC;

 

SQL ) LV1. 최댓값 구하기

접근법

  • 가장 최근에 들어온 동물의 보호 시작일을 출력해야 하므로, DATETIEM기준으로 내림차순 정렬 후, LIMIT 연산자를 사용해 가장 첫째 행의 DATETIME 출력

코드

SELECT DATETIME 시간 FROM ANIMAL_INS ORDER BY DATETIME DESC LIMIT 1;

 

SQL ) LV1. 이름이 있는 동물의 아이디

접근법

  • WHERE절에서 NAME칼럼 값이 NULL이 아닌 경우만 조회

코드

SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY 1;

 

SQL ) LV1. 상위 n개 레코드

접근법

  • DATETIME기준 오름차순 정렬후 LIMIT 연산을 통해 가장 첫째 행의 NAME값 출력

코드

SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1;

 

SQL ) LV1. 여러 기준으로 정렬하기

접근법

  • 이름기준 오름차순, 보호시작일 기준 내림차순 정렬하여 조회

코드

SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME, DATETIME DESC;

 

SQL ) LV1. 동물의 아이디와 이름

접근법

  • ANIMAL_ID와 NAME칼럼 데이터만 조회

코드

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS;

 

SQL ) LV1. 이름이 없는 동물의 아이디

접근법

  • NAME칼럼 값이 NULL인 데이터의 ANIMAL_ID 조회

코드

SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY 1;

 

SQL ) LV1. 어린 동물 찾기

접근법

  • INTAKE_CONDITION 칼럼 값이 Aged가 아닌 경우의 데이터만 조회

코드

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION != 'Aged' ORDER BY 1;

 

SQL ) LV1. 역순 정렬하기

접근법

  • ANIMAL_ID칼럼 기준 역순정렬(DESC)하여 출력

코드

SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC;

 

SQL ) LV1. 모든 레코드 조회하기

코드

SELECT * FROM ANIMAL_INS ORDER BY 1;