SELECT
하나 이상의 테이블에서 특정 데이터를 추출하는 SQL의 기본 언어입니다.
FROM 와 같이 사용해야 하며, WHERE, GROUP BY, HAVING, ORDER BY와 함께 사용하며 다음과 같은 의미를 가집니다.
- SELECT : 테이블에서 항목, 즉 특정 열을 선택합니다. SELECT * : 모든 열을 가져옵니다. DISTINCT를 이용해서 중복을 빼고 추출할 수 있습니다.
- FROM : 어떤 테이블에서 해당 내용을 가져올지 선택합니다.
- WHERE : 테이블의 레코드, 즉 열에 조건을 거는 선택 절이며 =, !=, <, 등 연산자를 이용합니다.
- GROUP BY : SELECT 연산 절의 연산이 해당 그룹에 적용되도록 하며 열을 기준으로 그룹으로 묶습니다.
- HAVING : GROUP BY에 의해 정의된 그룹들 중에서 검색을 합니다.
- ORDER BY : 어떤 열을 기준으로 순서를 지정합니다. ORDER BY " " DESC를 통해 역순으로 정렬할 수 있습니다.
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
모든 레코드 조회하기
SELECT * from ANIMAL_INS order by ANIMAL_ID;
역순 정렬하기
SELECT * from ANIMAL_INS order by ANIMAL_ID;
아픈 동물 찾기
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION="Sick";
어린 동물 찾기
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION!="Aged" order by ANIMAL_ID;
동물의 아이디와 이름
SELECT ANIMAL_ID, NAME NAME from ANIMAL_INS order by ANIMAL_ID;
여러 기준으로 정렬하기
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC, ANIMAL_ID;
아이디, 이름, 보호 시작일을 기준으로 정렬해야 합니다.
이때 같은 이름인 경우 ANIMAL_ID를 무시하고 보호를 나중에 시작한 동물을 먼저 보여주어야 하므로 NAME, DATETIME, ANIMAL_ID 순으로 정렬을 하며 DATETIME은 역순으로 DESC를 적용해줍니다.
상위 N개 레코드
MYSQL에선 LIMIT 절을 이용합니다.
SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1;
Oracle에서는 limit가 없으므로 서브 쿼리를 이용해서 풀어야 합니다. DATETIME 기준으로 정렬된 NAME 서브쿼리를 만들고 rownum = 1을 이용해 하나를 가저옵니다.
SELECT NAME
FROM (SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME)
WHERE rownum = 1;
반응형
'스터디 > SQL' 카테고리의 다른 글
[SQL] String, Date 처리 (0) | 2021.03.03 |
---|---|
[SQL] Join (0) | 2021.03.02 |
[SQL] NULL 처리 (0) | 2021.02.28 |
[SQL] GROUP BY (0) | 2021.02.28 |
[SQL] 집계 함수 (0) | 2021.02.26 |