brunch

You can make anything
by writing

C.S.Lewis

by 빅데이터스터디 Sep 23. 2021

초보자 확실히 기억해야 하는 SQL 가이드

누구나 금방 이해할 수 있는 데이터베이스 기초지식


이 문장과 누구나 금방 이해할 수 있는 데이터베이스 기초지식  [학습 계획] 십 주 안에 영부터 데이터 분석 입문까지  셋 번째 주 학습 내용입니다. 앞으로 이 학습 계획을 업데이트할 예정입니다.


이전에는 데이터베이스의 정의와 RDBMS의 MySQL의 설치 방법에 대해 설명했지만, 오늘은 데이터베이스 작업 및 SQL에 대해 설명합니다.


SQL (Structured Query Language)은 RDMBS에서 데이터베이스의 정의와 조작을위한 데이터베이스 언어입니다.


* 위키 백과 사전 「위키 페디아 (Wikipedia)」


위키 백과의 정의에 따르면 SQL은 데이터의 참조, 변경, 삭제, 계산 등 관계형 데이터베이스와 그 안에 있는 테이블 및 데이터이 필요합니다.


Oracle, DB2, Sybase SQLServer, MySQL, MS Access 등의 데이터베이스는 SQL 구문과 다르지만, 기본적으로 동일합니다. 데이터 엔지니어 또는 데이터 분석가로서 시장에 셀프 서비스 BI 도구가 많이 있어 드래그 앤 드롭만으로 데이터 분석을 할 수 있지만 조금이라도 SQL에 관한 지식을 갖춰야 합니다.


시장에서 SQL에 관한 서적이나 온라인 튜토리얼이 많이 있으므로, 여기서 학습의 요점만 정리해 공유하고 싶습니다.


이 문장은 주로 다음과 같은 4가지 방면에서 설명하겠습니다. 참고하시기 바랍니다 ~


1. SQL 빠르게 입문

2. 데이터베이스의 기본 조작

3. 테이블의 기본 조작

4. 데이터 검색어




1. SQL 빠르게 입문

지식 제로에서 SQL을 독학할 때 아래 두 가지 문제가 있을 겁니다.


문제 ① :

SQL Sever 또는 MySQL을 배우기 전에 데이터베이스 소프트웨어를 설치해야 합니다. 초보자들에게 데이터베이스 소프트웨어 설치 시간을 많이 걸립니다. 처음에 직장 교육을 받았을 때, 2 일안에 SQL을 마스터하는 것을 요구합니다. 결국 SQL Sever 설치에 거의 하루정도 걸려 버렸습니다. 전 문장에서 그다지 복잡하지 않는 MySQL의 설치 방법을 소개했습니다.


문제 ② :

처음에 제가 SQL 구문을 많이 외우지만 실제로 사용할 때는 아무것도 할 수 없습니다. 제가 연습하면서 기억하는 방법은 가장 효율적인 방법이라고 생각합니다. Excel 함수처럼 그 의미와 사용법을 이해한 후 실제로 사용할 때 W3cschools (온라인 학습 사이트)에서 살펴보면, 점점 착용하게 됩니다.


SQL 학습

방법① :

MySQL을 다운로드하여 설치하고 내장 데이터베이스를 이용하여 W3cschools 따라 연습합니다. 

(영어가 약한 분들은 언어를 한국어로 선택하십시오.)


방법② :

무료 온라인 코스를 공부합니다. 두 사이트를 추천합니다.

SQL Tutorial

Progate

 SQL Tutorial과 같이 SQL 구문을 입력하고 그 결과를 볼 수 있습니다. 그리고 해설은 매우 자세하고 이해하기 쉽고, 연습 문제를 풀 때 입력란과 실행 결과와 함께 해설도 볼 수 있습니다. 이 사이트는 영어와 일본어 버전만 있습니다. 




2. 데이터베이스의 기본 조작

① 기존의 데이터베이스 보기

SHOW DATABASES;


② 데이터베이스 만들기

 CREATE DATABASE <database_name>;


③ 데이터베이스를 선택

 USE <database_name>;


④.sql 파일에서 SQL 문을 참조하기

 SOURCE <.sql file path>;


⑤ 데이터베이스를 삭제

 DROP DATABASE <database_name>;



3. 테이블의 기본 조작


① 기존 데이터베이스의 테이블을 보기

 SHOW TABLES;


② 테이블을 새로 만들기

 CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, .... ); 

각 컬럼의 데이터 유형을 지정해야 합니다.

INTEGER 정수

NUMERIC 임의의 정밀도를 가진 숫자

CHAR 고정 길이 문자열

VARCHAR 가변 길이 문자열

DATE 날짜


③ 테이블의 컬럼 정보를 표시하기

 DESCRIBE table_name;


④ 기존의 테이블에 레코드를 추가

 INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

컬럼 이름을 생략하는 경우도 있습니다. 그래서 값을 순서대로 모든 컬럼에 추가됩니다.

INSERT INTO table_name VALUES (value1, value2, value3, ...);


⑤ 기존 테이블의 레코드를 변경

UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;


⑥ 테이블에서 레코드를 삭제

DELETE FROM table_name WHERE condition; 


⑦ 테이블을 삭제

DROP TABLE table_name;


⑧ 기존의 테이블에 컬럼을 추가, 삭제 또는 변경


컬럼을 추가

 ALTER TABLE table_name ADD column_name datatype;

컬럼을 삭제

 ALTER TABLE table_name DROP COLUMN column_name;

컬럼을 변경

 ALTER TABLE table_name ALTER COLUMN column_name datatype;


⑨ 테이블 이름을 변경

 RENAME TABLE table_name1 to table_name2;



4. 데이터 검색어


①SELECT

테이블에서 지정하는 컬럼 데이터를 선택

 SELECT column1, column2, ... FROM table_name;

테이블의 모든 데이터를 선택

 SELECT * FROM table_name;


②SELECT DISTINCT

중복 값을 포함하지 않는 데이터를 선택

 SELECT DISTINCT column1, column2, ... FROM table_name;


③WHERE

연락처 기존 테이블의 레코드를 변경할 때 조건을 특정하기 위한 where를 사용했습니다.

where 조건은 일반적으로 다음과 같습니다.


문자열 비교 (text)

수치의 비교 (numbers)

AND, OR, NOT 등의 논리 연산


예 :

 SELECT product_name, product_type FROM Product; WHERE product_type = 'clothes';


④GROUP BY

GROUP BY를 사용하면 특정 컬럼을 키의 합계나 평균로 표시됩니다. 일반적으로 집계 함수 (COUNT, MAX, MIN, SUM, AVG)와 함께 사용됩니다.

  

SELECT column_name(s)  FROM table_name  WHERE condition  GROUP BY column_name(s);


COUNT : 테이블의 레코드 수 (행수)를 계산합니다.

SUM : 테이블 숫자 열 데이터의 합계를 계산합니다.

AVG : 테이블 숫자 열 데이터의 평균을 계산합니다.

MAX : 테이블의 모든 열에있는 데이터의 최대 값을 구합니다.

MIN : 테이블의 모든 컬럼 데이터의 최소 값을 구합니다.


GROUP BY와 WHERE를 함께 사용하는 경우 SELECT 문의 실행 순서 :

FROM → WHERE → GROUP BY → SELECT

예 :

SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country;


Having

Having은 집계 함수와 함께 사용하여 열을 집계한 결과를 특정하는 조건입니다. Having와 WHERE를 구별해야 됩니다.

 SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) HAVING condition ORDER BY column_name(s);

예:

SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country HAVING COUNT(CustomerID) > 5;


⑥ORDER BY

ORDER BY는 꺼낸 결과를 정렬합니다. ASC (오름차순) 또는 DESC (내림차순)를 지정하지 않으면 오름차순으로 정렬됩니다.

SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC;


BETWEEN

BETWEEN은 WHERE와 함께 지정된 범위의 레코드를 검색하는 데 사용됩니다.

SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;


⑧LIKE

LIKE로 특정 문자열 검색할 수 있습니다.

SELECT column1, column2, ... FROM table_name WHERE columnN LIKE pattern;

LIKE와 함께 사용되는 2 개의 와일드 카드가 있습니다.


% - 0 문자 이상의 임의의 문자열

_ - 임의의 문자

 구체적인 사용법은 다음과 같습니다 .


 ⑨IN

WHERE와 함께 사용하여 여러 값을 지정할 수 있습니다.

SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...);


⑩JOIN

SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;

JOIN은 두 개 이상의 테이블의 값을 결합하는 데 사용됩니다 (테이블 사이에 관련이 있는 경우). 아래 이미지는 4 종의 JOIN을 보여줍니다.

⑪ 뷰

뷰 (View)는 가상적인 테이블입니다. 일반 SQL 테이블처럼 레코드와 컬럼을 포함하고 있습니다. 뷰는 항상 데이터베이스의 최신 데이터를 표시합니다.


뷰를 만들기

 CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition;

보기를 삭제하기

 DROP VIEW <view_name>;


⑫ 하위

기존 테이블을 가공한 것에서 데이터를 검색하려면, 하위 쿼리는 유용합니다.

예를 들어, 2018 가을과 2019 봄에 열리는 코스를 검색하면


SELECT DISTINCT course_id FROM section WHERE semester = 'Fall' AND year= 2018 AND course_id IN( SELECT course_id FROM section WHERE semester = 'Spring' AND year= 2019 );



이번 주의 공유 내용은 여기에서 마치도록하겠습니다. 

또 만나요!~

데이터 분석에 관심이 있으시면 페이스북에서 우리 팔로우해주세요~ @bigdatastudy


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari