ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.
ORDER BY뒤에 아무것도 안쓰면 DEFAULT값으로 처리
(디폴트 값이 오름차순(ASC)입니당)
오름차순 : ORDER BY 'ANIMAL_TYPE' ASC;
내림차순 : ORDER BY 'ANIMAL_TYPE' DESC
동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.
< 🍯Honey 팁 >
SELECT문에서는 IS (NOT) NULL 사용
CREATE문에서는 NOT NULL 사용
위에 글이 무슨 내용인가?? 생각이 드실거에요!
SELECT문에서는 'IS'를 넣고, CREATE문에서는 'IS'를 생략한답니다.
SELECT 예시
1) SELECT * FROM ANIMAL_INS WHERE NAME IS NULL
2) SELECT * FROM ANIMAL_INS WHERE NAME IS NOT NULL
✨1번은 NULL값인 것만 가져오는 거에요.
✨2번은 NULL값을 제외한 나머지를 가져오는 거에요.
CREATE 예시
CREATE TABEL ANIMAL_INS(
ANIMAL_ID CHAR(10),
ANIMAL_TYPE CHAR(10),
NAME CHAR(10) NOT NULL,
DATETIME DATE,
...(생략)...
PRIMARY KEY(ANIMAL_ID),
UNIQUE(NAME)
...(생략)...
);
지금 테이블과 예시가 맞지 않지만,,
예를 들어서 테이블이 위에 처럼 만들어졌다면,
NOT NULL부분은 해당 속성(NAME속성)에는 NULL값이 들어갈 수 없도록 하는 것이구요. UNIQUE부분은 해당속성(NAME속성)은 유일해야 한다. 즉, 중복되어서는 안된다는 것을 의미합니다.
그러면, ANIMAL_INS라는 테이블에서 NAME이라는 곳에는 중북도 NULL값도 모두 들어갈 수 없게 설정이 되는 겁니다!
여기서 NULL값이 들어가지 않게 하는 부분에서 'IS' NOT NULL이라고 적지 않도록 주의합시당
UNIQUE 무결성 : 해당 속성을 유일해야 한다. (이름은 중복❌)
NULL 무결성 : 해당 속성은 NULL값을 가질 수 없다. (이름은 NULL값❌)
예를 들어 ANIMAL_INS 테이블이 다음과 같다면
고양이는 2마리, 개는 1마리 들어왔습니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
예를 들어 ANIMAL_INS 테이블이 다음과 같다면
따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS 'count'
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE
SELECT NAME, COUNT(*) AS 'COUNT'
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY (NAME) HAVING count(*) >= 2 ORDER BY (NAME);