자연과학/컴퓨터과학

강의 요약(Introduction to SQL)

Retyper 2022. 7. 31. 12:19

본 요약 handout 은 Datacamp 사이트 무료강의를 이수하며 직접 요약한 것이다.

강의 명 : Introduction to SQL

 

1장. 컬럼 선택하기

query에 다음과 같이 명령을 입력하면 해당 표(table) 의 열(column, field)을 선택하여 출력할 수 있다. 세미콜론(;)은 query의 마침표와 같으니 꼭 넣어주자.

SELECT 해당 열 이름 FROM 표 이름;

 

SELECT, FROM 같은 용어들은 소문자로 작성해도 똑같이 동작 하지만 사람이 보기에 대문자로 해야 직관적으로 빠르게 다른 변수와 구분할 수 있다.

select 해당 열 이름 from 표 이름;

 

 

표를 한번에 여러개 선택하는것은 간단히 콤마(,) 만 붙이면 된다.

SELECT 열 이름, 열 이름, 열 이름 FROM 표 이름;​

 

모든 열을 선택 하려면 애스터리스크(*) 를 열 이름 작성 부분에 넣으면 된다.

SELECT * FROM 표 이름;

 

출력되는 행 수LIMIT 로 조절할 수 있다.

SELECT * FROM 표 이름 LIMIT 수;

 

용어 DISTINCT 는 해당 열에 있는 data들을 중복없는 하나의 집합열로 만들어 준다.

(ex, 한 열의 데이터가 banana, kiwi, kiwi, kiwi, apple 이라면 banana, kiwi, apple 만 나열된 열로 만들어 준다.)

SELECT DISTINCT 열 이름 FROM 표 이름;

 

함수 COUNT()는 뜻 그대로 해당되는 자료의 열의 개수를 세어준다. 테이블에있는 모든 행의 숫자를 알고싶다면 이렇게 쓰면된다.

SELECT COUNT(*) FROM 표 이름;

 

해당 열의 자료들 중 데이터가 존재하는 열의 개수만 알고싶다면 함수COUNT 괄호 안에 열 이름을 쓰면 된다.

SELECT COUNT(열 이름) FROM 표 이름;

 

DISTINCT 와 붙여 써서 해당 열의 자료들을 중복 없이 추린 개수도 알 수 있다.

(ex, 한 열의 데이터가 banana, kiwi, kiwi, kiwi, apple 이라면, 3이 출력된다.)

SELECT COUNT(DISTINCT 열 이름) FROM 표 이름;

 

2장. 행 필터링하기

용어 WHERE는 항상 FROM 다음에 쓰며 데이터를 원하는 기준으로 필터링 시켜준다.

SELECT 열 이름 FROM 표 이름 WHERE 원하는 열 이름 = '텍스트데이터';
SELECT 열 이름 FROM 표 이름 WHERE 원하는 열 이름 < 수;
SELECT 열 이름, 열 이름 FROM 표 이름 WHERE 원하는 열 이름 >= 수;

 

WHERE 와 AND를 함께 사용하면 제시된 조건들을 모두 만족하는 데이터들만을 필터링 할 수 있다.

SELECT * FROM 표 이름 WHERE 원하는 열 이름 = '텍스트데이터' AND 다른 원하는 열 이름 > 수;

 

WHERE 와 OR를 함께 사용하면 제시된 조건 중 하나라도 만족하는 데이터들을 필터링 할 수 있다.

SELECT * FROM 표 이름 WHERE 원하는 열 이름 = 수 OR 다른 원하는 열 이름 < 수;

 

상세한 필터링을 위해서 혼합되어 사용도 가능하다.

SELECT * FROM 표 이름 WHERE 원하는 열 이름 >= 수 AND 원하는 열 이름 < 수 AND (열 이름 = '텍스트데이터' OR 열 이름 = '텍스트데이터');

 

WHERE + BETWEEN으로 범위를 지정할 수도 있다.

SELECT * FROM 표 이름 WHERE 원하는 열 이름 BETWEEN 수 AND 수;

 

WHERE + IN 을 사용하면 OR을 중복으로 쓰는것과 같은 효과를 줄 수 있다.

즉, IN  오퍼레이터를 사용할때 괄호안의 데이터가 하나라도 있으면 선택된다.

SELECT * FROM 표 이름 WHERE 열 이름 IN (수, 수, 수, 수, 수);
SELECT * FROM 표 이름 WHERE 열 이름 IN ('텍스트데이터', '텍스트데이터', '텍스트데이터');

 

WHERE + IS NULL해당 열의 데이터가 없는 경우만 선택할 수 있고

WHERE + IS NOT NULL 은 반대로 해당 열의 데이터가 있는 경우만 선택할 수 있다.

SELECT * FROM 표 이름 WHERE 원하는 열 이름 IS NULL;
SELECT 열 이름 FROM 표 이름 WHERE 원하는 열 이름 IS NOT NULL;

 

WHERE + LIKE 는 해당 열의 자료 중 어퍼스트로피 안에있는 단어와 일치하는 모든 데이터를 찾아준다.

WHERE + NOT LIKE 는 해당 열의 자료 중 어퍼스트로피 안에있는 단어와 불일치하는 모든 데이터를 찾아준다.

%(이전 혹은 이후 아무 문자가 와도 상관없음) 와 _(이 자리에 아무 문자가 와도 상관 없음)를 함께 사용하여 원하는 특정 문구를 가진 데이터를 찾는다.

(ex, chair, chair man, air port, aid, 중에서 '_ai%' 를 찾는다면  chair, chari man만을 선택할 수 있다.)

SELECT * FROM 표 이름 WHERE 열 이름 LIKE '텍스트데이터';
SELECT * FROM 표 이름 WHERE 열 이름 LIKE '텍스트데이터%';
SELECT * FROM 표 이름 WHERE 열 이름 LIKE '텍스트데이터_텍스트데이터';

 

3장. 집계함수 사용하기

Aggregate functions(집계함수) 를 사용하여 수치 자료들의 정보를 파악할 수 있다.

AVG() 평균

MAX() 최대값

SUM() 총합

등등

(COUNT() 도 집계함수의 일종이다)

SELECT AVG(열 이름) FROM 표 이름;
SELECT MAX(열 이름) FROM 표 이름;
SELECT SUM(열 이름) FROM 표 이름;

 

 

집계함수를 한 번에 두 개이상 사용하면 같은 열 이름이 두개가 들어가 버릴 수 있다.

아래와 같이쓰면 SUM 열이 2개인 표를 출력해 버린다.

SELECT SUM(열 이름),SUM(다른 열 이름) FROM 표 이름;

AS 를 사용하여 출력할 열 이름을 새로 만들어주는 에일리어싱(aliasing)을 할 수 있다.

SELECT SUM(열 이름) AS 바꿀 열 이름, SUM(다른 열 이름) AS 바꿀 열 이름 FROM 표 이름;
SELECT (열 이름 + 다른 열 이름) AS 바꿀 열 이름 FROM 표 이름;

 

 

4장. 정렬하기(sorting)와 그룹화하기(grouping)(完)

ORDER BY 를 사용하여 데이터를 순서대로 정렬해서 출력할 수 있다. 

기본적으로 오름차순으로 정렬되고 뒤에 DESC 를 넣으면 내림차순(descending order)으로 정렬한다.

SELECT * FROM 표 이름 ORDER BY 열이름;
SELECT * FROM 표 이름 ORDER BY 열이름 DESC;

 

GROUP BY를 사용하여 데이터를 그룹화할 수 있다.

집계함수와 함께 사용하여 그룹화한 자료를 원하는대로 추릴 수 있다.

SELECT * FROM 표 이름 GROUP BY 열 이름;
SELECT 열 이름, count(*) FROM 표 이름 GROUP BY 열 이름;

 

물론 정렬과 그룹화를 한 번에 쓸수도 있다.

SELECT 열 이름,열 이름, MAX(열 이름) FROM 표 이름 GROUP BY 열 이름,열 이름 ORDER BY 열 이름,열 이름;

 

WHERE 문장 속에서 집계함수를 사용할 수 없다.

정렬과 그룹화할때는 HAVING 을 사용하여 구체적인 조건을 WHERE 과 비슷하게 사용할 수 있다.

SELECT 열 이름 FROM 표이름 GROUP BY 열 이름 HAVING COUNT(*) > 수;

 

반응형