티스토리 뷰

[MySQL] 1일차 : 데이터베이스 기본, 구조, 스키마, INSERT

만든 날짜:2019-01-21 오후 3:36

 본 글은 에버노트에서 작성되었습니다.

 해당 글은 생활코딩에 올려진 DB강의를 토대로 학습하며 작성되었습니다. 따라서 원본 강의를 확인하고 싶다면 생활코딩을 방문하시기 바랍니다.

DATABASE1-1.수업소개


정보기술의 심장인 DB를 공부해보자.file은 어디에서나 사용할 수 있다. 이메일/메신저로도 전송이 가능하다. file이라고 만능은 아닙니다. 성능/보안 등에 있어서 한계가 있어서 입니다.

그래서 고안된 전문화된 소프트웨어가 database입니다.

공감이 없는 이해는 모래위 지어진 성이다. DB를 공부할 때 우리는 아주 복잡한 데이터들을 다루고 있다고 상상을 하면서 공부를 해야한다.



데이터베이스의 본질


아무리 복잡한 기술도 그 중심에 자리잡고 있는 핵심은 복잡하지 않다. 어렵지도 않다. 어떤 DB를 만나건 제일먼저 해야할 것은 DB에 데이터를 어떻게 입/출력할지 따져보는 것이다.

입력 : 생성, 수정, 삭제
출력 : 읽기
위 4가지는 CRUD. 이렇게 4가지를 알게되면 어떤 DB라도 겁날 것이 없을 것이다.


file vs database

우리가 작가이고. 여러가지 제품에 대해 설명 소개를 작성하려고 한다면?
위 처럼 텍스트 파일을 작성하고 그 파일들이 아주 많이 있다고 가정할 때. 우리가 만약 특정 작가가 쓴 작품만 모아보고 싶거나 어떤 날짜 이후의 파일을 보고싶거나 또는 본문만 보고 싶을 때 파일만으로는 그렇게 하지 못한다. 그리고... 자연스럽게 스프레드시트로 손이 가게 될 것이다.



스프레드시트를 사용하면 필터, 숨기기, 정렬 등을 사용할 수 있다.

컴퓨터 프로그래밍 언어를 통해서 데이터를 생성,삭제,수정,읽을 수 있는 것, 자동화를 할 수 있는 것 등이 DataBase가 갖는 이점이다.

DATABASE1 - 4.수업을 마치며
어떤 DB를 선택 또는 공부를 할 것인가? 우리가 속해있는 직장에서 사용하는 것이 있으면 그것을 사용해야할 것이다. 그렇지 않다면 통계를 기반으로 공부하는 것은 어떨까?

Google : Database ranking 2019

 DB이름과 어떤 형식의 DB모델인지 등 알 수 있다. 관계형 데이터베이스가 데이터베이스 시장의 절대 강자인 것을 알 수 있다. 관계형 데이터베이스를 배우면 다른 관계형 데이터베이스를 잘 쓸 수 있다. MongoDB는 완전히 다른 데이터베이스 형태이기 때문에 일단은 관계형을 먼저 공부해보고 그렇지 않은 것을 나중에 공부해보자.
 Oracle : 오랫동안 시장에서 절대강자로 군림. 주로 관공사, 큰 기업에서 사용한다. (비용이 비싸다.) DB의 기술지원도 상당히 비싸다. Oracle 자금력이 있는 곳에서 주로 사용한다. 개인적/작은회사는 비추

MySQL : 무료고 오픈소스이다. 관계형DB를 쓰고 싶으면서 자금이 많지 않아서 개인, 작은회사 등에서 사용할 경우. 금융권이 아닌 SNS등의 경우에 추천한다.

MongoDB : Document store, 관계형DB가 아니다. NoSQL (관계형DB가 아닌 다양한 DB가 폭발적으로 만들어지는 흐름을 알고있자.)


DATABASE2 - MySQL

정보가 폭발적으로 저장되면서 file만으로는 데이터를 보관/사용하기가 힘들어졌다.

1970 애드거 프랭크 테드커드는 IBM에서 관계형 데이터베이스를 고안한다. 그 이론에 기반해서 여러 DB가 출현. 지금까지 DB분야에서 절대 강자로 군림중이다. 데이터를 표의 형태로 정리정돈, 정렬,검색을 빠르고 편리하고 안전하게 할 수 있다.


1994년 스웨덴에서 MySQL을 개발. 무료 오픈소스. 웹과 함께 폭발적으로 동반성장하게 되었다. 앞으로 MySQL을 통해서 뒤죽박죽된 정보를 정렬해보자!



데이터베이스의 목적
스프레드시트와 데이터베이스의 차이점과 공통점을 알아보자

공통점 : 데이터를 표의 형태로 표현한다. 기능이 서로 거의 비슷하다. (Ex. 엑셀에서 필터

차이점 : DB는 프로그래밍언어로 데이터를 제어할 수 있다. 코드를 통해서 데이터를 조작할 수 있다.

웹을 통해서 데이터를 화면에 표시해보는 모습.


MySQL 설치
Google : MySqL Community Edition (순수하게 무료인 제품)
또는
Google : bitnami WAMP (Window Apache MySQL PHP를 동시에 설치)

MySQL은 다중사용자. 그중 첫번째 사용자가 root이다.

환경변수에 MySQL의 bin폴더를 추가한 뒤에 mysql -uroot -p를 입력하여 mySQL을 실행할 수 있다. [실습 준비 완료]


Codeanywhere.com 에 MySQL 설치
컴퓨터에 설치하지 않고서도 실습을 하려면 이 방법을 사용하자.
PHP(센트os)로 생성.
SSH 터미널을 클릭하여 위 를 사용할 수 있다.
-uroot : ID를 root로 mysql을 사용하겠다.


MySQL의 구조
MySQL의 전체적인 구성을 알아보자. 3개 정도가 있다.
데이터를 보관하는 최종적인 표. 표가 늘어나면 많아진 표를 정리정돈할 필요가 생긴다. 그래서 서로 연관된 표들을 그룹화해서 연관되지 않는 것들을 나누는 것을 사용하는데 그것이 바로 데이터 베이스이다.
데이터베이스와 스키마라는 용어를 사용한다. 스키마(표들을 서로 그룹핑할 때 사용하는 일종의 폴더 라고 생각하면된다.) 스키마는 서로 연관된 데이터를 그룹핑 해준다. 스키마 안에는 테이블들이 있다.
스키마들이 많아지면.. 데이터베이스 서버에 저장된다. MySQL이 즉 데이터베이스 서버를 설치한 것이고 그 기능을 사용해서 작업을 하는 것이다.


MySQL 서버 접속
파일은 운영체제만 뚤리면 보안기능이 없지만, 데이터베이스는 자체적인 보안체계를 가지고 있는 장점이있다. 그 외에도 권한 기능이 있다. MySQL에 여러 사용자를 등록할 수 있다. 차등적인 권한을 줄 수 있다.
기본유저는 root. 관리자이기 때문에 모든 권한이 열려있다. 중요한 시스템일 경우 작업 계정을 따로 만들어 관리하는 것이 권장된다.


MySQL 스키마(schema)의 사용

스키마를 만들어보자.
Google : mysql create database
데이터 베이스 생성.
데이터 베이스 제거.

Google : how to show database list in mysql
이제 데이터 베이스 안에 표를 만들을 것이다. 해당 데이터베이스를 사용하기위해서
USE명령을 사용한다.

SQL과 테이블 구조
Structured Query Language.
Structured : 표를 작성하여 정리화 하는것.
Query : 데이터베이스에게 읽기,생성 등을 요청(질의) 하는 것.
Language : 미리 정해진 공통의 약속된 문법에 따른 요청이 필요하다.

SQL은 표준화 되어있기 때문에 다수의 데이터베이스 시스템이 SQL로 동작한다.

row, record, 행 : 데이터 갯수(데이터 자체. 하나하나)
column, 열 : 데이터의 타입


MySQL 테이블의 생성

먼저 column을 만들자.
최종적으로 우리가 작성할 코드. (현실에선 이러한 코드를 작성하는 일이 흔치않다.)

Google : create table in mysql cheat sheet (컨닝페이퍼)

엑셀에서는 colmn에 어떠한 데이터를 넣어된다. SQL에서는 데이터를 넣을 때 특정 형식(숫자,날짜 등)만을 입력 받게 할 수 있다.

Google : mysql datatype number


m : 얼마까지 노출시킬 것인가.
NOT NULL : 값이 없는 것은 허용하지 않겠다.
AUTO_INCREMENT : 자동으로 1씩 증가한다.
첫 번째 Colmn 완성


NULL : 값이 없는 것을 허용한다.
PRIMARY KEY() : 중복을방지. 성능. 각각의 값들이 고유하도록 지정.
SET PASSWORD = PASSWORD('[패스워드]') : 를 입력하면 비밀번호를 변경가능하다.


MySQL의 CRUD
4가지 중에서 중요한 것을 살펴보자. Create와 Read가 중요하다.

SQL의 INSERT 구문

Google : mysql create row

topic 테이블에 데이터를 넣어보자.
DESC를 사용하면 참고해서 INSERT문을 작성할 수 있다.
추가성공.

google : how to read row in mysql

SELECT * FROM topic으로 테이블을 확인할 수 있다.


댓글
댓글쓰기 폼