본문 바로가기
AI/데이터베이스\SQL

SQL 기초 (SELECT, COUNT, WHERE, ORDER BY, LIMIT, BETWEEN, IN, LIKE, ILIKE)

by 까다로운오리 2022. 2. 16.

 

SELECT

SELECT 열 이름 FROM 테이블;

이때, 열 이름에 *를 쓰면 테이블 전체의 모든 열을 가져온다.

 

 

 

DISTINCT

SELECT DISTINCT(열 이름) FROM 테이블;

중복 값을 제거한 값을 보여준다.

 

 

 

COUNT

SELECT COUNT(열 이름) FROM 테이블;

해당 테이블의 SELECT로 불러온 열에 해당하는 데이터의 개수를 count해준다.

 

 

 

WHERE

SELECT 열 이름 FROM 테이블
WHERE 조건식;

WHERE은 FROM뒤에 쓰는 명령으로 WHERE 뒤에는 조건식이 나온다. 조건식은 열에 조건을 지정하여 그에 맞는 행이 반환되도록 한다. 즉, SELECT 문에서 반환되는 행을 걸러내기 위해 사용된다.

 

예를들어 customer 테이블에 있는 id가 hello인 사람의 email을 가져와라. 라는 문제가 주어졌으면

SELECT email 
FROM customer
WHERE id = 'hello';

다음과 같이 WHERE 뒤에 조건을 추가할 수 있다.

 

이때, 주의해야 할 한 가지는 string type은 무조건 '' 작은따옴표를 붙여야 한다.

 

 

ORDER BY

SELECT 열 이름 FROM 테이블
ORDER BY 열 이름1 DESC, 열 이름2

default 값은 오름차순(ASCE)으로 ORDER BY 뒤에 우선 순위로 정렬할 열 부터 정렬 조건을 써준다.

 

 

 

LIMIT

SELECT 열 이름 FROM 테이블
LIMIT 5;

python의 head와 같은 기능으로 테이블 제일 위에 있는 n개의 값을 보여준다.

 

 

 

BETWEEN

SELECT 열 이름
FROM 테이블
WHERE 열 이름 BETWEEN low AND high;

BETWEEN low AND high로 low와 high값을 포함한다. 

 

 

#1
SELECT 열 이름 FROM 테이블
WHERE 열 이름 BETWEEN low AND high;

#2
SELECT 열 이름 FROM 테이블
WHERE 열 이름 >= low AND 열 이름 >= high;

#1과 #2는 같은 말이다.

 

 

 

IN

#1
SELECT 열 이름
FROM 테이블
WHERE 열 이름 IN (2, 4, 8);


#2
SELECT 열 이름
FROM 테이블
WHERE 열 이름 = 2, 열 이름 = 4, 열 이름 =8;

#1과 #2는 같다.

 

 

LIKE , ILIKE

SELECT * FROM 테이블
WHERE 열 이름1 ILIKE 'J%' AND 열 이름2 LIKE '_S_'

_는 한글자, %는 2글자 이상을 말한다.

ILIKE는 대소문자를 구분하지 않고, LIKE는 대소문자를 구분한다.

다음 명령을 해석하면

 

해당 테이블의 열 이름1에서 첫 스펠링이 'J'이고, 열 이름2에서 단어 길이가 3인 것들 중 가운데 글자가 S(s)인 모든 열을 가져와라.

 

이다. 

 

 

 

 


연습문제

 

연습문제 1) 결제액 중 $5 초과인 결제 건수는 몇 건인가?

SELECT COUNT(amount) FROM payment
WHERE amount > 5;

 

 

연습문제 2) 이름이 P로 시작하는 영화배우는 몇 명인가?

SELECT COUNT(first_name) FROM actor
WHERE first_name ILIKE 'P%';

 

 

연습문제 3) 고객 주소에서 중복되지 않은 고유한 지역은 몇 개인가?

SELECT COUNT(DISTINCT(address)) FROM address;

 

 

연습문제 4) 고객 주소에서 중복되지 않은 고유한 지역 명단을 출력하시오

SELECT DISTINCT(address) FROM address;

 

 

연습문제 5) 'R'등급이고 교환 비용이 5달러와 15달러 사이인 영화는 몇 편 인가?

SELECT COUNT(title) FROM film
WHERE rating = 'R' AND replacement_cost BETWEEN 5 and 15;

 

 

연습문제 6) 제목 어딘가에 Truman이라는 단어가 들어있는 영화는 몇 편 인가?

SELECT COUNT(title) FROM film
WHERE title LIKE '%Truman%';