지난 주차에는 인 메모리(In-Memory) 방식으로 데이터를 저장하거나, NoSQL 데이터베이스인 MongoDB를 사용하여 “해야할 일” 데이터를 저장하였습니다.
하지만 이런 저장 방식은 정형화된 데이터를 관리하거나 복잡한 비즈니스 로직을 구현하기에는 적합하지 않습니다.
그래서 관계형 데이터 베이스가 나왔다.
(RDB, Relational DataBase)
테이블(표) 들 간에 관계를 통해 더욱 복잡한 쿼리를 작성할 수 있다
테이블이란, 여러개의 ‘열(column)’과 ‘행(row)’
관계형 데이터베이스는
엑셀의 표랑 비슷하다~!
SQL과 MySQL의 유사점은 무엇인가요?
MySQL과 SQL은 이름만 비슷하고 관계형 데이터베이스 시스템에서 둘 다 사용됩니다. 관계형 데이터베이스는 행과 일련의 테이블에 정보를 저장하므로 효율적으로 쿼리할 수 있습니다.
SQL과 MySQL은 모두 수십 년 동안 사용되어 왔습니다. 1970년대에 에드거 프랭크 코드(Edgar Frank Codd)는 “대규모 공유 데이터 뱅크를 위한 데이터의 관계형 모델”이라는 논문을 발표했습니다. 이 백서를 바탕으로 레이몬드 보이스(Raymond Boyce)와 도널드 체임벌린(Donald Chamberlin)은 SQL을 만들었습니다. 1995년 몬티 위데니우스(Monty Widenius)는 MySQL을 공동 개발하여 딸 마이(My)의 이름을 따서 명명했습니다.
SQL과 MySQL은 오늘날에도 여전히 데이터 관리 및 관계형 데이터베이스 관리 시스템에서 자주 사용됩니다.
SQL과 MySQL 비교 - 데이터베이스 관리 시스템의 차이 - AWS
SQL은 관계형 데이터베이스에서 정보를 저장하고 처리하는 데 사용할 수 있는 프로그래밍 언어입니다. MySQL은 가장 널리 채택된 오픈 소스 관계형 데이터베이스입니다. 이는 많은 유명 웹 사이트
aws.amazon.com
MySQL 은 오픈소스 관계형 데이터 베이스.
오픈소스라 라이센스 비용이 안든다.
가장 대표적인 언어 SQL을 사용
트랜잭션의 특징..인 ACID를 준수하여
구현 된 데이터베이스로써, 트랜잭션 안전하게 처리함.
갑자기 RDS랑 EC2랑 다 어디갔지?
미국 동부 버지니아 북부로 체크가 되어있었다.
어휴;
MySQL 다운받을 때
Jun Han 그거 다운받으면 되고
+ 좌측 하단에서 누르고
host : 엔드포인트
user : RDS 계정 사용할 때 root 쓰기로 함
비밀번호 : 비밀번호
포트번호 : 3306(Mysql 기본 포트번호)
인증어떻게 할 거냐? : 그냥 엔터로 넘어가기
https://dev.mysql.com/doc/refman/8.0/en/create-database.html
MySQL :: MySQL 8.0 Reference Manual :: 13.1.12 CREATE DATABASE Statement
13.1.12 CREATE DATABASE Statement CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_option] ... create_option: [DEFAULT] { CHARACTER SET [=] charset_name | COLLATE [=] collation_name | ENCRYPTION [=] {'Y' | 'N'} } CREATE DATABASE creates a databa
dev.mysql.com
CREATE 가 뭔지 뭐가 뭔지 등등 알 수 있는 링크
파란색 원통 안에
회색원통 NodeJS 라는
데이터베이스 생성
데이터베이스를 눌러 우클릭해서 리프레쉬를 계속해주면 된다 그냥
테이블 생성 했으면 테이블 상위의 것을, 컬럼 생성했으면 컬럼 위에 테이블을.
CREATE TABLE IF NOT EXISTS courses (
id bigint(5) NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
tutor varchar(255) NOT NULL,
PRIMARY KEY (id)
);
NodeJS 라는 db에 우클릭해서 뉴 쿼리를 누른다.
courses 라는 테이블을 만들고
그 안에 3개의 컬럼이 들어가게 된다.
이러한 모양으로 나오게 된다.
코드 입력하는 창에서 우클릭
(커멘드 S, 컨트롤 S 하면 파일로 내용 저장하는 것 같음)
우클릭해서 run mysql 쿼리 해주면 된다.
정해진 데이터를 넣을 수 있다는 것을 볼 수 있음.
정의가 되어져있다. 빅인트나 바쳐 라는 타입으로
3개의 컬럼에
고유의 키를 가지고 있는 것은 id 라는 컬럼이다.
데이터베이스 관련 코드 창 그냥 저장안하고 꺼도 된다.
Node.JS 우클릭
INSERT INTO courses (title, tutor) VALUES
('Spring 기초반', '최원빈'),
('Spring 숙련반', '최원빈'),
('React 기초반', '김예지'),
('React 숙련반', '김예지'),
('Node.js 기초반', '이용우'),
('Node.js 숙련반', '이용우'),
('웹개발 종합반', '이범규'),
('웹개발 종합반 플러스', '이범규');
이렇게 입력하고 런 마이에스큐엘 쿼리.
하고 그냥 지우고 그 위에
SELECT * FROM courses;
이렇게 적고 런 마이에스큐엘 쿼리 하면
이렇게 값이 등장한다.
셀렉트라는 것으로
조회할 것이다.
* (모든 것을)
courses 테이블의
SELECT * FROM courses WHERE tutor='이용우';
라고하면
튜터가 이용우인 경우에만, (WHERE 가 있어서 동작함)
조회가 됨.
직접 연습
CREATE DATABASE NodeJS_prac; :db 조회
생성 된 db 우클릭 후 뉴쿼리
CREATE TABLE IF NOT EXISTS user (
id bigint(5) NOT NULL AUTO_INCREMENT,
youngWoo varchar(255) NOT NULL,
age int(255) NOT NULL,
PRIMARY KEY (id)
);
다른 테이블에 name이라는 컬럼이 있어서 생성에 문제가 있었음.
youngWoo 로 생성
INSERT INTO user (younWoo, age) VALUES
('영구스밥버거', '18'),
: 각 컬럼에 데이터 입력
SELECT * FROM user; : 유저 테이블 조회