본 요약 handout 은 Datacamp 사이트 무료강의를 이수하며 직접 요약한 것이다.
Learn R, Python & Data Science Online
Learn Data Science from the comfort of your browser, at your own pace with DataCamp's video tutorials & coding challenges on R, Python, Statistics & more.
www.datacamp.com
![](https://blog.kakaocdn.net/dn/sPAhK/btrIxBEMmIU/XhiwYSjaGoonrzdsyBk7Ak/img.png)
강의 명 : 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(*) > 수;
'자연과학 > 컴퓨터과학' 카테고리의 다른 글
<Python> 초간단! python 코드를 exe 파일로 만들기(비주얼 스튜디오 가상환경) (0) | 2023.02.16 |
---|---|
<Python> NLTK 사용시 단어의 품사 약칭 정리 (0) | 2023.01.19 |
강의요약(Introduction to R) (0) | 2022.08.06 |