Devin.KR

타자연습 / 지식 여정

SQL 예약어와 함수 65가지 - 설명을 보고 직접 입력하며 익히는 타자 학습

설명을 읽고 해당하는 SQL 예약어나 함수를 입력하세요. 표준 SQL 기준이며 방언은 설명에 따로 적었습니다.

입력 전송 없이 브라우저에서 처리
진행0 / 0
타/분0
정확도 %100.0
시간0:00

준비 중…

SQL 예약어와 함수 65가지 - 설명을 보고 직접 입력하며 익히는 타자 학습 한눈에 보기

순서설명정답핵심
1 행을 조회한다 SELECT 가장 기본이 되는 질의문
2 조회 대상 테이블을 지정한다 FROM 여러 테이블을 콤마나 JOIN 으로 이어 쓴다
3 행을 걸러낸다 WHERE 그룹화 전에 적용된다
4 중복 행을 제거한다 DISTINCT 전체 컬럼 조합이 같은 행만 지운다
5 그룹으로 묶는다 GROUP BY 집계 함수와 함께 쓴다
6 그룹을 걸러낸다 HAVING WHERE 와 달리 집계 결과에 조건을 건다
7 정렬한다 ORDER BY ASC 가 기본이고 DESC 로 내림차순
8 행 수를 제한한다 FETCH FIRST 표준 문법이다. LIMIT 은 방언이다
9 건너뛸 행 수를 지정한다 OFFSET FETCH 와 함께 페이지네이션에 쓴다
10 양쪽에 짝이 있는 행만 INNER JOIN 교집합. JOIN 만 쓰면 이것이다
11 왼쪽을 전부 남긴다 LEFT JOIN 짝이 없으면 오른쪽이 NULL
12 오른쪽을 전부 남긴다 RIGHT JOIN LEFT 를 뒤집은 것
13 양쪽을 전부 남긴다 FULL OUTER JOIN 합집합
14 모든 조합을 만든다 CROSS JOIN 곱집합. 조건을 빠뜨린 조인이 이것이 된다
15 같은 이름 컬럼으로 조인한다 NATURAL JOIN 편해 보이지만 컬럼이 추가되면 조용히 결과가 바뀐다
16 조인 조건을 컬럼 이름으로 준다 USING USING (dept_id) 형태
17 결과를 합치고 중복을 없앤다 UNION 정렬 비용이 든다
18 결과를 합치되 중복을 남긴다 UNION ALL UNION 보다 빠르다
19 두 결과의 교집합 INTERSECT 공통 행만
20 두 결과의 차집합 EXCEPT 표준 문법. Oracle 은 MINUS 를 쓴다
21 행을 넣는다 INSERT INSERT INTO ... VALUES
22 행을 고친다 UPDATE WHERE 를 빠뜨리면 전부 바뀐다
23 행을 지운다 DELETE WHERE 를 빠뜨리면 전부 지워진다
24 있으면 수정, 없으면 삽입 MERGE 표준 upsert 문법
25 테이블을 만든다 CREATE TABLE 테이블을 만든다. 제약 조건을 여기서 함께 선언하는 편이 안전하다
26 테이블 구조를 바꾼다 ALTER TABLE 컬럼이나 제약을 추가·변경·삭제한다. 큰 테이블에서는 잠금을 확인하고 실행한다
27 테이블을 없앤다 DROP TABLE 되돌릴 수 없다
28 데이터만 전부 비운다 TRUNCATE DELETE 와 달리 로그를 거의 남기지 않는다
29 기본키를 지정한다 PRIMARY KEY NOT NULL + UNIQUE 를 겸한다
30 다른 테이블을 참조한다 FOREIGN KEY 참조 무결성을 DB 가 지킨다
31 중복을 막는다 UNIQUE NULL 은 보통 여러 개 허용된다
32 값 조건을 건다 CHECK CHECK (quantity > 0)
33 빈 값을 막는다 NOT NULL 빈 값을 허용하지 않는다. 나중에 추가하려면 기존 행을 먼저 채워야 한다
34 값이 없을 때 기본값 DEFAULT 값을 주지 않았을 때 들어갈 기본값이다
35 NULL 이면 다른 값으로 COALESCE 첫 번째 NULL 아닌 값을 준다
36 두 값이 같으면 NULL NULLIF 0 나누기 방어에 쓴다
37 조건 분기 CASE CASE WHEN ... THEN ... ELSE ... END
38 값이 NULL 인지 본다 IS NULL = NULL 은 항상 참이 아니다. 자주 틀린다
39 목록 안에 있는지 IN 서브쿼리와도 쓴다
40 범위 안에 있는지 BETWEEN 양 끝을 포함한다
41 문자열 패턴을 맞춘다 LIKE % 는 여러 글자, _ 는 한 글자
42 행이 존재하는지 EXISTS IN 보다 빠른 경우가 많다
43 행 수를 센다 COUNT COUNT(*) 와 COUNT(컬럼) 은 NULL 처리가 다르다
44 합계 SUM 합계를 낸다. NULL 은 무시하고 전부 NULL 이면 결과도 NULL 이다
45 평균 AVG NULL 은 빼고 계산한다
46 최댓값 MAX 최댓값. 문자열과 날짜에도 쓸 수 있다
47 최솟값 MIN 최솟값
48 순위를 매긴다 RANK 동률 뒤 순위를 건너뛴다
49 동률 뒤도 이어지는 순위 DENSE_RANK 1,1,2 로 이어진다
50 행 번호를 붙인다 ROW_NUMBER 동률이어도 무조건 다른 번호
51 윈도 함수의 범위를 정한다 OVER OVER (PARTITION BY ... ORDER BY ...)
52 윈도를 그룹으로 나눈다 PARTITION BY GROUP BY 와 달리 행이 줄지 않는다
53 이전 행 값을 가져온다 LAG 같은 윈도에서 이전 행의 값을 가져온다. 전월 대비 계산에 쓴다
54 다음 행 값을 가져온다 LEAD 다음 행의 값을 가져온다. LAG 의 반대다
55 이름 붙인 임시 결과 WITH CTE. 복잡한 질의를 단계로 나눈다
56 재귀 질의 WITH RECURSIVE 계층 구조를 펼칠 때
57 가상 테이블을 만든다 CREATE VIEW 질의에 이름을 붙여 테이블처럼 쓰게 한다. 데이터를 따로 저장하지 않는다
58 조회 속도를 위한 구조 CREATE INDEX 쓰기는 느려진다
59 변경을 확정한다 COMMIT 트랜잭션의 변경을 확정한다. 이후에는 되돌릴 수 없다
60 변경을 되돌린다 ROLLBACK 트랜잭션의 변경을 전부 취소한다
61 되돌릴 지점을 만든다 SAVEPOINT 트랜잭션 안에 되돌릴 지점을 만든다. 일부만 취소할 수 있다
62 트랜잭션을 시작한다 START TRANSACTION 트랜잭션을 시작한다. 자동 커밋이 꺼진다
63 권한을 준다 GRANT 사용자나 역할에 권한을 준다
64 권한을 거둔다 REVOKE 줬던 권한을 거둔다

이렇게 하면 더 잘 외워집니다

  • 질의 실행 순서(FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY)를 떠올리며 묶어 외우면 빨리 붙습니다.
  • WHERE 와 HAVING, UNION 과 UNION ALL, RANK 와 DENSE_RANK 와 ROW_NUMBER 처럼 짝으로 헷갈리는 것들을 함께 보세요.
  • 익힌 예약어는 SQL 연습소에서 바로 실행해 보세요. 눈으로 본 것과 직접 돌려 본 것은 남는 정도가 다릅니다.
  • 표준과 방언을 구분하세요. LIMIT 은 방언이고 표준은 FETCH FIRST 입니다.

자주 묻는 질문

WHERE 와 HAVING 은 무엇이 다른가요?

WHERE 는 그룹으로 묶기 전 개별 행을, HAVING 은 묶은 뒤 그룹을 거릅니다. 집계 함수 조건은 HAVING 에 씁니다.

IS NULL 대신 = NULL 을 쓰면 안 되나요?

안 됩니다. NULL 은 '모르는 값'이라 어떤 값과 비교해도 참이 되지 않습니다. IS NULL 을 써야 합니다.

여기서 익힌 SQL 을 실행해 볼 수 있나요?

SQL 연습소에서 브라우저 안의 실제 SQLite 로 바로 실행할 수 있습니다. 입력한 SQL 은 서버로 전송되지 않습니다.