본문 바로가기

Data Science/Data Analysis

SQL로 하는 데이터 분석 | 1.데이터베이스 기본 개념 및 테이블 생성

[코드잇] SQL로 하는 데이터 분석 '강의를 수강하고 정리한 내용입니다.

 


목차

  1. 데이터베이스 기본 개념 및 테이블 생성
  2. 데이터 조회
  3. 데이터 분석
  4. 테이블 조인을 통한 깊이있는 데이터 분석
  5. 서브쿼리와 뷰를 활용한 유연한 데이터 분석

 

 

1. 데이터베이스 기본 개념 및 테이블 생성

[ DBMS ]

데이터베이스 : 일정한 체계 속에 저장된 데이터의 집합

DBMS : 데이터베이스 관리 시스템, 데이터베이스에서 데이터를 조회

종류 : MySQL, ORACLE,SQL Server, SQLite , MariaDB

서버 - 클라이언트 구조로 사용

SQL(Structured query Language) - DBMS에 명령하는 언어

DBMS를 사용한다 = 실행되고 있는 server에 client를 이용해서 접속한 후, 원하는 명령을 내린다는 뜻

 

 

[ MySQL ]

  • 개발자들이 CLI를 사용하는이유CLI의 장점 : CLI는 글자만 보여주고, 그래픽이 필요없어 속도가 빠름.
  • 더욱 명확함. 정확한 명령어를 실행해 여러단계에 걸친 과정을 한줄의 커멘드로 요약할 수 있기때문에 편함
  • GUI(Grapic User Interface) / CLI(Command Line Interface)

MySQL Workbench : GUI환경에서 server에 접속해 데이터베이스 관련 작업 실시 가능

 

 

 

[ CSV 파일로 테이블 생성하기 ]

copang_main 데이터베이스 안에 테이블을 하나 생성

테이블을 생성하는 방법 1. SQL문으로 생성 (SQL로 하는 데이터 관리 토픽 참고) 2. csv파일 import하는 방법

  1. SQL 문으로 생성
USE copang_main;

CREATE TABLE `member` (
  `id` int,
  `email` text,
  `age` int,
  `gender` text,
  `height` double,
  `weight` double,
  `birthday` date,
  `sign_up_day` date,
  `address` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO `member` (`id`, `email`, `age`, `gender`, `height`, `weight`, `birthday`, `sign_up_day`, `address`) VALUES 
(1,'codeit@naver.com',28,'m',178.2,70,'1992-01-03','2019-03-26','서울특별시 중구 삼일대로 343 103호'),
(2,'korin02@google.com',29,'m',165.7,67.3,'1992-08-13','2019-02-27','서울특별시 중구 세종대로 110 502호'),
(3,'cowboy@codeit.kr',31,'m',NULL,70.2,'1990-01-03','2019-01-05','경기도 고양시 일산서구 고양대로 633 204동 203호'),
(4,'get_flower@naver.com',-10,'f',183.5,72,'1975-03-12','2018-11-29',NULL),
(5,'taehos@hanmail.net',27,'m',181.3,70,'1992-09-02','2017-03-14','제주 제주시 문연로 6 102동 1105호'),
(6,'iamstylish@naver.com',300,'f',172.2,NULL,'1989-01-03','2012-11-15','안드로메다 128행성'),
(7,'captainGoGo03@koreauniv.com',28,'m',195.2,66,'1992-03-13','2014-03-18','전라남도 순천시 왕지3길 60 112동 107호'),
(8,'sungsos@naver.com',36,'f',167.7,66.2,'1992-01-03','2017-03-20','경기도 부천시 평천로 679 101동 101호'),
(9,'young05@naver.com',30,'m',180.2,70.4,'1991-02-13','2013-08-12','경기 오산시 세마문학로 50 111동 109호'),
(10,'codeman_to@yonseit.com',111,'f',NULL,70.5,'1970-08-01','2017-02-20','경기 고양시 덕양구 충장로 118 112동 1103호'),
(11,'programmer007@sumsung.com',27,'m',170.4,65.3,'1993-03-26','2014-01-22','경기 성남시 수정구 시민로 209 101동 1201호'),
(12,'lovely_day@kaisty.com',-10,'f',162.7,69.4,'1995-10-11','2017-07-01','경기 화성시 봉담읍 동화새터길 55-39 203동 205호'),
(13,'teddy@kakaot.com',41,'f',177.3,77.2,'1980-11-12','2016-08-03','인천 부평구 아트센터로 118 302동 602호'),
(14,'pooh_man@naver.com',28,'m',182,NULL,'1993-12-21','2018-09-02','인천 미추홀구 송림로 194 602동 303호'),
(15,'bicycle_go123@yahoot.com',24,'m',180,60.3,'1997-03-03','2019-12-01','서울 송파구 올림픽로 435 103동 501호'),
(16,'all_round321@naver.com',26,'m',182.4,NULL,'1995-01-03','2019-11-23',NULL),
(17,'nice_man@google.com',200,'m',180.8,NULL,'2003-01-03','2015-10-25','강원도 원주시 가곡로 50 101동 810호'),
(18,'jw101@hanmail.net',0,'m',160.3,70,'1992-08-03','2017-09-23','강원도 춘천시 지석로 29 402동 321호'),
(19,'cat_movie@lotte.com',-5,'f',180.2,NULL,'1989-01-03','2018-11-25','서울 양천구 오목로 354 110동 402호'),
(20,'gogo_shopping@naver.com',32,'m',180.2,80.3,'1989-11-02','2015-01-23','서울 송파구 올림픽로35길 10 파크리오 301동 703호'),
(21,'hello_hat@unista.com',26,'f',165.3,48.2,'1995-11-13','2018-12-23',NULL),
(22,'new_coder@naver.com',-2,'f',180.7,70,'1976-08-03','2018-12-12','부산 연제구 양연로27번길 26 301동 701호'),
(23,'zerotohundred@naver.com',20,'m',162,56,'2001-02-17','2015-07-20',NULL),
(24,'xMan_series@naver.com',29,'m',173,65,'1992-01-03','2011-12-20','어린왕자에 나오는 B612');

 

 

2. csv파일 import 하는 방법

 

테이블명 우클릭 > Table data import Wizard

select file to import→ select destiantion > Crreate new table(데이터베이스, table이름 설정) → configure import Settings > 스페어 모양 > field separator> ,로 변경

- 아래에 추가될columns와 type미리 볼 수 있음(만약 WorkBench가 type잘못 추론했다면 변경해) → finish → Work bench의 schema 새로고침

 

회사에서 받는 파일 : 엑셀 파일 -> CSV 파일 -> 테이블

 

 

[속성]

PK(Primary key) - 테이블에서 하나의 row를 고유하게 식별할 수 있도록 하는 column, 식별자이므로 not null이여야함.

NK(natural key) - 실제로 어떤 개체가 갖고 있는 속성을 나타내는 컬럼이 PK가 됨 예: 주민등록번호 , ISBN

SK(surrogate Key) - 속성을 나타내는 것이 아닌, PK로 쓰기위한 인위적인 컬럼, 1부터 순차적으로 증

Not null: null값(값이 없음) 허용하지 않음 . 식별자 PK에 필수적으로 적용되는 속성

(AI)Auto Increment : 설정 시 해당 컬럼에 대해서DBMS가 자동으로 증가하는 값을 넣어줌