생활코딩 MySQL 전체 내용

krystal·2022년 7월 26일
1

생활코딩

목록 보기
2/5
post-thumbnail

출처 영상 : 생활코딩

커버페이지

DATABASE1 수업 이후 듣는 것을 추천함 (시리즈 이전 게시판에 포스팅함)

file은 사용하기 쉽고 어디에나 있으며 전송하기 편리하기 때문에 현재와 미래에도 사용할 예정이며
데이터베이스 조차도 결국 정보를 파일에 저장한다.

하지만 file만으로는 정보를 효과적으로 입력, 저장, 출력하는 것이 어려워진다.

관계형 데이터 베이스

관계형 데이터 베이스를 이용하면 데이터를 표의 형태로 정리정돈 할 수 있게 된다.
또한 정렬 검색과 같은 작업을 빠르고 편리하게 안전하게 할 수 있다.

MySQL

MySQL은 무료이고 오픈소스이며 관계형 데이터베이스의 주요한 기능을 대부분 갖추고있음.

데이터베이스의 목적

스프레드 시트와 데이터베이스의 차이점

mysql과 같은 관계형 데이터베이스의 중요한 특징은 스프레드 시트와 마찬가지로 데이터를
표의 형태로 표현해준다.

제일 큰 차이점은 데이터베이스는 코딩을 통해, 즉 컴퓨터 언어를 통해서 제어할 수 있다는 점이다.


MySQL 설치

해당 링크에 들어가서 os맞게 다운로드
혹은 bitnami 사이트를 통해 다운로드한다. 나는 후자를 선택하였다.

윈도우 전용 설치방법
mariaDB 와 mysql는 같음

설치완료


MySQL의 구조

3개의 구성요소가 있다.

표(table)

데이터를 기록하는 최종적인 곳은 표다. MySQL, 더 나가아서 관계형 데이터베이스는 엑셀과 같은 시프레드 시트와 비슷한 구조를 가지고있다.

데이터베이스 (database)

표들이 늘어나게 되면 잘 정리할 필요성이 생긴다. mysql에서는 연관된 표들을 그룹핑해서 연관되지않은 표들과 분리하는데 사용하는 파일의 폴더같은 것이 존재함 => 데이터베이스

스키마

mysql에서는 데이터베이스라는 표현과 함께 스키마라는 표현을 같이 쓴다. 스키마라는 표현을 쓰게되면 표들을 서로 그룹핑할 때 사용하는 일종의 폴더라고 생각하면 됨. (즉 서로 연관된 데이터들을 그룹핑 해준다.)

데이터베이스 서버 (database server)

스키마들을 그룹핑하여 관리함.

즉 mysql을 설치했다는 것은 데이터베이스 서버라는 프로그램을 설치한 것이다.


MySQL 서버 접속

데이터베이스 사용의 효용

  1. 보안
    데이터베이스는 자체적인 보안 체계를 가지고있기 때문에 좀더 안전하게 데이터를 보관할 수 있음

  2. 권한 기능

u(user)root(관리자 : 모든 권한이 열려있음) - p(mysql이 비밀번호를 물어보게 됨)

mysql -uroot -p


MySQL 스키마(schema)의 사용

스키마를 만들기 위해서는

CREATE DATABASE (스키마 이름);

(+) 데이터베이스를 삭제하고 싶은 경우

DROP DATABASE (스키마 이름);

구글링을 하면 명령어를 알아낼 수 있으니 너무 명렁어를 암기한다는 것에 얽매이지 말 것

데이터베이스를 확인하고 싶을 때

SHOW DATABASES;

데이터베이스 안에 표를 만들고싶을 때

USE (스키마 이름);


SQL과 테이블 구조

SQL : Structured Query Language 의 약자

Query는 데이터베이스에 의해 데이터를 관리하는 것을 요청한다, 질의한다 틀에서 표현한다.

공통의 약속에 따라 요청을 해야하기 때문에 그때 사용하는 언어가 sql이라는 언어다.

표(table) row, column 설명

x축(row, 행)과 y축(column,열)을 쪼개서 생각. 보통 column을 얘기할 때는 데이터의 타입이라고 생각하면 된다.

row는 데이터 하나하나, 데이터 자체
column은 데이터 구조


MySQL의 테이블 생성

표를 만드는 작업

CREATE TABLE topic(
    id INT(11) NOT NULLAUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    description TEXT NULL,
    created DATETIME NOT NULL,
    author VARCHAR(15) NULL,
    profile VARCHAR(200) NULL,
    PRIMARY KEY(id)
);

데이터베이스는 컬럼에 데이터 타입을 강제할 수 있다.

INT(12)

=> 숫자 12는 검색을 할 경우 얼마까지만 노출시킬지에 대한 값임

NOTNULL

=> 값이 없는 것을 허용하지 않음

AUTO_INCREMENT

=> id 값이 자동적으로 1씩 증가한다.

VARCHAR(size)

=> size만큼의 문자만 받는다.

TEXT(size)

=> 긴 데이터를 쓰고싶은 경우 한다.

DATETIME

=> 날짜와 시간 모두 사용 가능

PRIMARY KEY(id)

=> 메인 키를 id로 지정해줌 (중복을 막아줌)


MySQL의 CRUD

Create
Read
Update
Delete


SQL의 INSERT 구문

SHOW DATABASES;

데이터베이스 목록들

SHOW TABLES;

데이터베이스의 테이블 목록들

opentutorials <-topic <- 데이터들


SQL의 SELECT 구문

SELECT * FROM (table이름);

모든 데이터를 화면에 출력

SELECT (원하는 칼럼) FROM (table이름);

원하는 칼럼만의 데이터를 출력

SELECT (원하는 칼럼) FROM (table이름) WHERE (조건);

칼럼에서 조건에 맞는 데이터들만 출력

SELECT (원하는 칼럼) FROM (table이름) WHERE (조건) ORDER BY (칼럼 값) DESC;

칼럼에서 조건에 맞는 데이터들만 출력하고 싶은 경우 + 해당 칼럼값의 내림차순으로 정렬

SELECT (원하는 칼럼) FROM (table이름) WHERE (조건) ORDER BY (칼럼 값) DESC LIMIT 2;

칼럼에서 조건에 맞는 데이터들만 출력하고 싶은 경우 + 해당 칼럼값의 내림차순으로 정렬 + 2개만 출력

(+) select_expr

표현되어야할 칼럼들을 나타낸다.


SQL의 UPDATE 구문

UPDATE (테이블이름) SET 칼럼=변경할 값 WHERE (조건문)

테이블 값을 변경함

WHERE문 기억하기

WHERE 문을 빠뜨리지않게 조심해야한다

SQL의 DELETE 구문

DELETE FROM topic 에서 멈추면 절대 안된다. ❗❗❗아까 앞에서 언급했다시피 WHERE문 꼭 기억할 것❗❗❗
인생이 바뀔수도 있다고 강사님이 언급하시는데 생각만 해도 등골이 오싹..😱


관계형 데이터베이스의 필요성


하나의 표로 다 보면 직관적으로 보기엔 좋겠지만
위의 사진처럼 표를 분리하면 중복되는 데이터값을 관리할 수 있다.
또한 유지보수하기에도 용이하다. 하지만 하나의 표로 보는 것보다 보기에는 불편함이 생긴다.

=> 데이터를 별도의 테이블로 보관하면서 중복을 피하면서 데이터를 볼때는 하나로 합쳐서 보고싶을 경우
=> ❗❗❗MySQL은 가능하다❗❗❗


테이블 분리하기

그전에 우리가 배웠던 대로 그냥 테이블 2개 만드는 실습내용이다.


관계형 데이터베이스의 꽃 JOIN

JOIN을 통해 독립적으로 분리된 테이블을 읽을 때 하나의 테이블로 저장되어있는 것처럼 볼 수 있게 한다.

SELECT * FRROM (큰 틀로 보일 테이블) LEFT JOIN (무엇을 합칠지) ON (어떤 값으로)

여기 강의에서는

SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id;

으로 실행했는데
topic 테이블에서 author_id 값을 author 테이블에서의 id값과 합치라는 말 같다.

SELECT topic.id AS topic_id, title, description, created, name, profile FROM topic LEFT JOIN author ON topic.author_id = author.id;

topic에서의 id를 topic_id라는 이름으로 바꾸었다.

연결된 값들 중 하나가 변경되면 상대쪽 연결되어있는 곳의 값도 변경이 된다. (그래서 관계형 데이터베이스인가보다)


인터넷과 데이터베이스

MySQL은 내부적으로 인터넷을 활용할 수 있도록 고안된 시스템이다.
그외 내용은 기본적인 클라이언트나 서버에 관한 얘기라서 여기선 생략한다.


MySQL 클라이언트

MySQL monitor

MySQL monitor도 MySQL의 클라이언트다. MySQL을 설치하면 같이 설치되어있기때문에 언제든 사용할 수 있음. GUI 형태가 아닌 명렁어 기반의 프로그램

MySQL Workbench

MySQL monitor와 다르게 GUI 기능을 제공함

MySQL Workbench

번외로 MySQL Workbench를 설치하여 실습하는 영상이었다.
나중에 시간이 된다면 한번 설치하여 좀더 여기에 추가할 예정


수업을 마치며

데이터베이스 관련 전문가가 되기위해선 SELECT 문을 잘 다뤄야한다.

INDEX, Modeling, backup(mysqldump, binary log), cloud(네이버같은 대기업이 운영하고 있는 컴퓨터를 임대해서 사용한다는 느낌. 원격 제어를 통해 다루게 된다 : AWS RDS, Google Cloud SQL for MySQL, AZURE Database for MySQL..), Programming에 대해 강조하셨다.

프로그래밍 언어 뒤에 mysql.api를 구글링하면 쉽게 배울 수 있음


어쩌다보니 자기 전에 반절은 들어야지 하고 정리하다가 결국 완강을 하고말았다. 생활코딩 강의를 지나가다 대충 보긴했는데 이렇게 각잡고 보니까 정말 잘 가르쳐주신다. 큰 틀을 딱 잡아주시는 느낌.
이제 아침에 일어나면 바로 node.js를 시작해야지 ㅎㅎ

profile
https://source-coding.tistory.com/

0개의 댓글