누구나 금방 이해할 수 있는 데이터베이스 기초지식
이 문장과 누구나 금방 이해할 수 있는 데이터베이스 기초지식 [학습 계획] 십 주 안에 영부터 데이터 분석 입문까지 셋 번째 주 학습 내용입니다. 앞으로 이 학습 계획을 업데이트할 예정입니다.
이전에는 데이터베이스의 정의와 RDBMS의 MySQL의 설치 방법에 대해 설명했지만, 오늘은 데이터베이스 작업 및 SQL에 대해 설명합니다.
SQL (Structured Query Language)은 RDMBS에서 데이터베이스의 정의와 조작을위한 데이터베이스 언어입니다.
* 위키 백과 사전 「위키 페디아 (Wikipedia)」
위키 백과의 정의에 따르면 SQL은 데이터의 참조, 변경, 삭제, 계산 등 관계형 데이터베이스와 그 안에 있는 테이블 및 데이터이 필요합니다.
Oracle, DB2, Sybase SQLServer, MySQL, MS Access 등의 데이터베이스는 SQL 구문과 다르지만, 기본적으로 동일합니다. 데이터 엔지니어 또는 데이터 분석가로서 시장에 셀프 서비스 BI 도구가 많이 있어 드래그 앤 드롭만으로 데이터 분석을 할 수 있지만 조금이라도 SQL에 관한 지식을 갖춰야 합니다.
시장에서 SQL에 관한 서적이나 온라인 튜토리얼이 많이 있으므로, 여기서 학습의 요점만 정리해 공유하고 싶습니다.
이 문장은 주로 다음과 같은 4가지 방면에서 설명하겠습니다. 참고하시기 바랍니다 ~
지식 제로에서 SQL을 독학할 때 아래 두 가지 문제가 있을 겁니다.
문제 ① :
SQL Sever 또는 MySQL을 배우기 전에 데이터베이스 소프트웨어를 설치해야 합니다. 초보자들에게 데이터베이스 소프트웨어 설치 시간을 많이 걸립니다. 처음에 직장 교육을 받았을 때, 2 일안에 SQL을 마스터하는 것을 요구합니다. 결국 SQL Sever 설치에 거의 하루정도 걸려 버렸습니다. 전 문장에서 그다지 복잡하지 않는 MySQL의 설치 방법을 소개했습니다.
문제 ② :
처음에 제가 SQL 구문을 많이 외우지만 실제로 사용할 때는 아무것도 할 수 없습니다. 제가 연습하면서 기억하는 방법은 가장 효율적인 방법이라고 생각합니다. Excel 함수처럼 그 의미와 사용법을 이해한 후 실제로 사용할 때 W3cschools (온라인 학습 사이트)에서 살펴보면, 점점 착용하게 됩니다.
방법① :
MySQL을 다운로드하여 설치하고 내장 데이터베이스를 이용하여 W3cschools 따라 연습합니다.
(영어가 약한 분들은 언어를 한국어로 선택하십시오.)
방법② :
무료 온라인 코스를 공부합니다. 두 사이트를 추천합니다.
SQL Tutorial
Progate
SQL Tutorial과 같이 SQL 구문을 입력하고 그 결과를 볼 수 있습니다. 그리고 해설은 매우 자세하고 이해하기 쉽고, 연습 문제를 풀 때 입력란과 실행 결과와 함께 해설도 볼 수 있습니다. 이 사이트는 영어와 일본어 버전만 있습니다.
① 기존의 데이터베이스 보기
SHOW DATABASES;
② 데이터베이스 만들기
CREATE DATABASE <database_name>;
③ 데이터베이스를 선택
USE <database_name>;
④.sql 파일에서 SQL 문을 참조하기
SOURCE <.sql file path>;
⑤ 데이터베이스를 삭제
DROP DATABASE <database_name>;
① 기존 데이터베이스의 테이블을 보기
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;
①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