데이터 베이스
정의
ㄴ 데이터 저장소
ㄴ 코드에서 값을 일시적으로 저장해두기 위해 사용되는 문법 ( 변수 )
ㄴ 변수는 어디에 저장되는가?(RAM)
ㄴ 우리가 반 영구적으로 값을 보관하고 싶을 때도 있다
ㄴ 이때 사용하는게 데이터베이스(보조메모리)
데이터베이스의 종류
1. Relational Database(RDB)
ㄴ 전체 데이터베이스 사용에서 80% 이상 차지
2. NoSQL Database(NoSQL)
NoSQL 은 RDB 보다 유연적이지만 체계성이 떨어진다!!
RDB의 종류
1. Mysql : 가장 보편적으로 사용됨.
2. Oracle : 가장 좋은 성능을 냄, 근데 유료임
3. PostgreSQL : 독특한 기능이 많으며 , MySQL 과 비교했을 때 데이터가 많아질 수록 좋아진다.
4. SQLite : 가장 기능이 적으면서 , 가장 가벼움 / 로컬 데이터베이스 전용(팔라독, 앵그리버드 )
5. MariaDB
6. 등등...
MariaDB
-소개
ㄴ MySQL을 그대로 똑같이 클론한 데이터베이스
ㄴ MySQL은 부분 유료임
데이터베이스 하나 만들기
table 은 데이터가 저장되는 단위이다!!
표형태 여러개가 겹쳐져 있다
2가지 기억하면 된다
column 과 row
column 은 소제목이다!
id password name
Row 는 각각의 데이터를 의미한다
한줄이 데이터이다
Row 는 한개의 데이터를 의미한다!
SQL
ㄴ Relational Database 전용 언어이다!
ㄴ 데이터로 전송을 할때 서버가 데이터에 하는 언어이다!
ㄴ 대부분의 RDB가 SQL 을 그대로 사용함
ㄴ 한번 배워두면 다른 db에도 응용할 수 있음.
백엔드 개발자한테 사실상 가장 중요한 언어이다
ㄴ 프로그램의 성능을 담당하는 건 백엔드 개발자이기 때문
ㄴ 프로그램에서 가장 오래 걸리는 작업이 db통신
ㄴ 알아야 하는 개념들이 굉장히 많다
서버- 데이터 연결과정이 백엔드 개발자가 하는 일임!
모든 데이터베이스는 2개를 설치 해줘야한다
1. 라이브 서버 => 서버 안에서 돌아가는 또 다른 작은 서버를 의미함.
집안에 금고 넣어 놓는 느낌
2. 서버가 오직 통신을 통해서만 데이터를 가지고 올 수 있다.
처음 들어올 때 아이디가 아무것도 없으니까
sudo mysql 을 통해서 들어간다!
sudo는 관리자이기에 사용할 수 있다!
root 는 가장 기본!! 힘이 너무 쎄서 root로는 아무것도 안하고 유저 + 관리자 권한 계정으로만 사용한다!!
CRUD
소개
ㄴ 데이터베이스가 해줘야 할 기본적인 4가지의 기능을 의미하는 단어
Create ( 값 생성 )
Read( 값 읽기 )
Update ( 값 수정 )
Delete ( 값 삭제 )
데이터베이스는 기본적으로 대소문자 구분 x
SQL 문법자체가 평소문이기에 어떤게 명령어인지 모르기에
명령어는 대문자로 써준다!
다양한 SQL 문법 배워보자!!!
어차피 SQL 문을 계속 배울테니까
테이블 설계를 열심히 해야한다!
로그인 / 게시판 / 등등... 테이블을 어떻게 나눌 것인가?
등등..
아래는 수업중 사용한 내용들이다!
MariaDB [web]> sudo apt install mariadb-server
sudo mysql
my
CREATE DATABASE web;
CREATE USER 'stageus'@'%' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON web.* TO 'stageus'@'%';
quit
mysql -u stageus -p
SHOW DATABASES;
USE web;
CREATE TABLE account;
CREATE TABLE account (id TEXT , pw TEXT);
SELECT * FROM account;
SELECT * FROM account WHERE id='test';
INSERT INTO account (id, pw) VALUES ('test2','1234');
SELECT * FROM account;
SELECT * FROM account WHERE id='test' AND pw='1234';
UPDATE account SET pw='1111' WHERE id='test';
DELETE FROM account WHERE id='test2';