seols

[패스트캠퍼스] SQL로 시작하는 데이터 분석 첫걸음 / 1주차 본문

강의/FASTCAMPUS_SQL

[패스트캠퍼스] SQL로 시작하는 데이터 분석 첫걸음 / 1주차

설이야 2022. 8. 27. 21:02

1주차 SQL로 시작하는 데이터 분석 첫걸음

머신러닝, 딥러닝을 배우면서 데이터분석의 중요성을 깨닫고, SQL 강의를 찾아 듣게 되었다.  패스트 캠퍼스 강의가 눈에 확 띄었고, 이전에 만들어둔 내일배움카드로 수강할 수 있었다. 언제 개강하나 기다리다 개강하자마자 수업을 들어보았다. MySQL 설치부터 천천히 설명해줘서 접근하기가 편했다. DAY 2부터 수업을 시작하면서 느낀 건 클립이 짧아 집중이 흐트러지지 않았고, 마지막에 실습을 통해 리마인드하기 좋았다. 데이터의 타입이나 기본적인 정보는 알고 있었으나 쿼리 문법이 낯설었다. 조금 더 적응하면 응용할 수 있을 거라 믿고 1주차 강의를 완료하였다. 

 

DAY 1. 오리엔테이션

02. 데이터 데이터 베이스 그리고 DBMS

데이터 : 컴퓨터가 처리할 수 있는 문자, 숫자, 소리, 그림 따위의 형태로 된 정보

데이터 베이스(DB)의 (넓은) 의미

: 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 데이터 저장소

1. 자료 구조화, 효율적 관리

2. 여러 사용자가 동시에 사용 가능

3. 데이터베이스 기능 활용 시 응용프로그램(=DBMS) 활용 

DBMS의 종류 : oracle, mysql, sqlserver, mariadb

 

03. 데이터베이스 언어와  SQL

데이터베이스 언어 SQL(Structured Query Language)

쿼리 : SQL로 쓰인 데이터베이스에 명령을 내리는 문장

 

06. MySQL Workbench 사용법

MySQL program 사용

Ctrl+Enter : 쿼리 실행 단축키

# or -- or /*~*/: 주석처리

 

DAY 2. 데이터베이스 다루기

01. 데이터 종류 알아보기 (문자형, 숫자형, 날짜형)

데이터 타입 : 숫자, 문자, 그림, 영상 등

많이 사용하는 MYSQL 사용 데이터 타입

>> 데이터 저장 전 저장공간의 데이터 타입 미리 지정 / 미리 정해둔 데이터 타입이 아닌 경우 데이터 저장 불가

1. 정수형 : 소수점이 없는 숫자 데이터

데이터 타입 바이트(8bit) 수
TINYINT 1
SMALLINT 2
MEDIUMINT 3
INT 4
BIGINT 8

2. 실수형

데이터 타입 바이트(8bit) 수
FLOAT 4
DOUBLE 8

3. 문자형

데이터 타입 최대 바이트 수
CHAR(n) 255
VARCHAR(n) 65535

(n) 바이트 수 미리 입력, 지정 안 할시 CHAR은 1 자동 입력, VARCHAR은 사용 불가

CHAR : 고정 길이 문자열 / VARCHAR : 변동 길이 문자열

데이터 타입 고정 바이트 수 
TINYTEXT 255
TEXT 65535
MEDIUMTEXT 약 1600만
LONGTEXT 약 42억

4. 날짜형

데이터 타입 특징 
DATE 년월일
DATETIME 년월일시분초
TIME 시분초
YEAR

02. 기본적인 데이터 다뤄보기

*엑셀과 유사

문자형 데이터는 반드시 " " or ' '와 함께 사용

함수를 사용한 데이터 타입 변환 가능

 

03. 테이블 만들고 변경하기 (CREATE-ALTER)

테이블 : 데이터를 형태를 정해 모아 놓은 저장 공간(ex, 표)

1. 컬럼(열) : 데이터 저장 틀, 컬럼의 이름은 중복 불가

2. 값 : 컬럼의 데이터 타입만 값으로 가짐

3. 로우(행) : 하나의 관계된 데이터, 항상 동일한 구조

데이터베이스의 (좁은)의미 : 테이블을 저장해두는 저장소

데이터 베이스, 테이블 등 이름 생성 규칙

1. 이름은 문자(영문 소문자),숫자,_

2. 키워드나 함수명은 대문자

3. 예약어 사용 불가

4. 문자로 시작

5. 빈칸 사용불가

6. 중복 불가

쿼리 문법

CREATE DATABASE[데이터베이스 이름]; : 데이터 베이스 생성

SHOW DATABASES; : 모든 데이터 베이스 보임

USE [데이터베이스 이름]; : 데이터베이스 사용

CREATE TABLE [테이블 이름] ( [컬럼 이름] [데이터 타입] ,...); : 테이블 생성

ALTER TABLE [테이블 이름] RENAME [새로운 테이블 이름]; : 테이블 이름 변경

ALTER TABLE [테이블 이름] ADD COLUMN [컬럼이름] [데이터 타입]; : 테이블 컬럼 추가

ALTER TABLE [테이블 이름] MODIFY COLUMN [컬럼이름] [새로운데이터 타입]; : 기존 컬럼 타입 변경

ALTER TABLE [테이블 이름] CHANGE COLUMN [컬럼이름] [새로운 컬럼 이름] [새로운 데이터 타입]; : 기존 컬럼 이름 타입 변경

ALTER TABLE [테이블 이름] DROP COLUMN [컬럼이름]; : 컬럼 삭제

 

04. 테이블 지우기 (DROP-TRUNCATE)

DROP DATABASE [데이터베이스 이름]; : 데이터 베이스 삭제

DROP TABLE [테이블 이름]; : 테이블 삭제

TRUNCATE TABLE [테이블 이름]; : 테이블 값만 삭제

IF EXISTS [데이터베이스/테이블 이름]; : 존재한다면

ex) DROP TABLE IF EXISTS [테이블 이름]; : 테이블이 존재한다면 삭제

 

05. 테이블 삽입, 삭제, 수정하기 (INSERT, DELETE, UPDATE)

INSERT INTO [테이블 이름] ([컬럼1 이름], [컬럼2 이름]) 

VALUES ([컬럼1 값], [컬럼2 값]),...,([컬럼1 값], [컬럼2 값]); : 컬럼이 2개인 경우, 컬럼 값 추가 (로우 단위로)

DELETE FROM [테이블 이름]

WHERE [조건 값]; : 조건에 맞는 데이터 삭제

UPDATE [테이블 이름]

SET [컬럼 이름] = [새 값]

WHEAR [조건 값]; : 조건에 맞는 데이터 일부 수정

 

06. [실습] 테이블을 만들고 데이터를 넣어보자 (CREATE, INSERT)

CREATE DATABASE pokemon;
USE pokemon;

CREATE TABLE mypokemon(
			number INT, 
            name VARCHAR(20), 
            type VARCHAR(10)
            );
INSERT mypokemon (number, name, type) 
VALUES  (10,"caterpie","bug"),
		(25,"pikachu","electric"),
        (133,"eevee","normal");

USE pokemon;
CREATE TABLE mynewpokemon(
			number INT, 
            name VARCHAR(20), 
            type VARCHAR(10)
            );
INSERT mynewpokemon (number, name, type) 
VALUES  (77,"포니타","불꽃"),
		(132,"메타몽","노말"),
        (151,"뮤","에스퍼");

SELECT * FROM mypokemon;
SELECT * FROM mynewpokemon;

SELECT * FROM [테이블 이름]; : 테이블 전체 조회

 

07. [실습] 테이블을 변경하고 지워보자 (ALTER, DROP)

SELECT * FROM mypokemon;
ALTER TABLE mypokemon 
RENAME myoldpokemon;
SELECT * FROM myoldpokemon;

ALTER TABLE myoldpokemon 
CHANGE COLUMN name eng_name VARCHAR(20);
SELECT * FROM myoldpokemon;

ALTER TABLE mynewpokemon 
CHANGE COLUMN name kor_name VARCHAR(20);
SELECT * FROM mynewpokemon;

TRUNCATE TABLE myoldpokemon;
SELECT * FROM myoldpokemon;

DROP TABLE mynewpokemon;
SELECT * FROM mynewpokemon;

DROP DATABASE pokemon;

DAY 3. 데이터 가져오기

01. 데이터 가져오기 (SELECT)

SELECT [가져올 데이터]; : 모든 쿼리에 필수, 가져올 데이터를 선택/ 값을 가져올 컬럼을 선택(테이블 선택 후)

 

02. 테이블에서 데이터 가져오기 (FROM)

FROM [테이블 이름]; : 데이터를 가져올 테이블 선택

* : 컬럼 전체(=ALL)

SELECT [컬럼 이름] FROM [데이터베이스 이름].[테이블 이름];

or

USE [데이터베이스 이름];

SELECT [컬럼 이름] FROM [테이블 이름];

 

03. 별명 붙이기 (ALIAS)

SELECT [컬럼 이름] AS [컬럼 별명] FROM [테이블 이름]; : 실제 컬럼 변경X, 쿼리 내에서만 유효

 

04. 데이터 일부만 가져오기 (LIMIT)

SELECT [컬럼 이름] FROM [테이블 이름] LIMIT [로우 수]; : 데이터의 row 개수를 지정하여 데이터의 일부 확인

 

05. 중복 제거하기 (DISTINCT)

SELECT DISTINCT [컬럼 이름] FROM [테이블 이름] ; : 컬럼의 유일한 값 가져오기(중복 데이터 지움)

 

06. [실습] 테이블에서 데이터를 가져와보자 (SELECT, FROM)

DROP DATABASE IF EXISTS pokemon;
CREATE DATABASE pokemon;
USE pokemon;
CREATE TABLE mypokemon (

number int,
name varchar(20),
type varchar(20),
height float,
weight float,
attack float,
defense float,
speed float
);

INSERT INTO mypokemon (number, name, type, height, weight, attack, defense, speed)
VALUES (10, 'caterpie', 'bug', 0.3, 2.9, 30, 35, 45),
(25, 'pikachu', 'electric', 0.4, 6, 55, 40, 90),
(26, 'raichu', 'electric', 0.8, 30, 90, 55, 110),
(133, 'eevee', 'normal', 0.3, 6.5, 55, 50, 55),
(152, 'chikoirita', 'grass', 0.9, 6.4, 49, 65, 45);
SELECT * FROM mypokemon;

USE pokemon;
SELECT 123*456;
SELECT 2310/30;
SELECT '피카츄' AS '포켓몬';
SELECT * FROM mypokemon;
SELECT name FROM mypokemon;
SELECT name, height, weight FROM mypokemon;
SELECT DISTINCT height FROM mypokemon;
SELECT attack*2 AS attack2 FROM mypokemon;
SELECT name AS 이름 FROM mypokemon;
SELECT attack AS 공격력, defense AS 방어력 FROM mypokemon;
SELECT height*100 AS 'height(cm)' FROM mypokemon;
SELECT * FROM mypokemon LIMIT 1;
SELECT name AS '영문명', height AS '키(m)', weight AS '몸무게(kg)' FROM mypokemon LIMIT 2;
SELECT name, attack+defense+speed AS total FROM mypokemon;
SELECT name, weight/(height)^2 AS BMI FROM mypokemon;

 

본 강의는 국비지원교육입니다.

Comments