Relational Database-MySQL(MariaDB)

Lee Soyeon·2022년 2월 22일
0

데이터베이스

목록 보기
2/3

ERD(DataGrip)으로 테이블들의 관계를 도식화

데이터는 가공해서 활용할 수 있고, 데이터를 저장하고 꺼내볼 수 있어야함
DataBase: file의 한계를 보완한 것
input : Create, Update, Delete
output : Read
(CRUD)

관계형 데이터베이스와 스프레드시트
공통점: 표로 나타낼 수 있음
차이점: 데이터베이스는 언어를 통해서 데이터를 다루고, 보안체계를 갖추고 있기 때문에 데이터를 함부로 수정할 수 없으며, 권한 설정 가능하다.
스프레드시트는 마우스 클릭을 통해서 데이터를 다루며, 파일은 누구나 수정할 수 있다.

Relational Database
: 데이터를 표로 나타내줌, 정리정돈, 정렬, 검색 기능 가능

MySQL(오픈소스)

SQL(Structured Query Language): 데이터를 구조화된 표로 만들기위해 명령하는 언어(쉽고, 중요한 언어)
(c.f. 데이터베이스에게 데이터를 CRUD명령을 요청하는것을 쿼리라고 함)

* 설치하기

  1. mysql community Edition 검색
    mysql community Edition 다운로드
    mysql community Server 클릭
    아래쪽에 Generally Available (GA) Releases 에서
    Operating System 선택후, 아래쪽에서 가장 위에있는것 다운로드

  2. bitnami를 이용한 설치방법 wampstack-8.1.2-0
    bitnami wamp 검색 > "WAMP Cloud Hosting, WAMP Installer, Docker Container ... " 링크 클릭 > 오른쪽에 Local Install 클릭, no thanks클릭 >
    다운로드 후 next누르다가 저장소 확인, 'root'비밀번호 입력창 나오면 입력 (다중사용자시스템, 'root'는 처음 사용자의 비밀번호를 의미, 아래위 똑같이 입력)> next 누르다가 bitnami 체크박스 해제, next > Windows Security Alert 뜨면 Allow access 클릭 > finish
    bitnami WAMP Stack창에서 Manage Servers탭에서 초록동그라미는 실행중, 빨간동그라미는 실행 안되고 있다는 의미라서 옆에 start눌러줘야 함 >
    만약 컴퓨터를 껐다 켜서 mysql꺼지면 c드라이브-로컬디스크-bitnami-wampstack-manager-windows더블클릭해서 실행시키면 됨
    터미널 창에서
    cd c:\Bitnami\wampstack-버전이름\mysql\bin
    또는 cd c:\Bitnami\wampstack-버전이름\mariadb\bin
    mysql -uroot -p 입력후, 비밀번호 입력하면
    Welcome to the MySQL monitor. 뜨면 성공.

* 데이터베이스 서버, 스키마 생성하기

-u : user
mysql -uroot : 비밀번호 없이 사용(위험)
mysql -uroot -p비밀번호 : 비밀번호 노출(위험)
mysql -uroot -p : 비밀번호 안전하게 입력 가능
> 여기까지 데이터베이스 서버 생성

> 데이터베이스 (스키마) 생성
CREATE DATABASE 데이터베이스이름; : 데이터베이스(스키마)생성
DROP DATABASE 데이터베이스이름; : 데이터베이스(스키마) 삭제
SHOW DATABASES; : 데이터베이스들(스키마)의 전체목록이 나옴
USE 데이터베이스이름; : 해당 데이터베이스(스키마)에 있는 표를 대상으로 실행됨

* 테이블 생성하기

> Table 생성
CREATE TABLE 테이블명(
[ex)column명 type(column자릿수)]
id INT(11) NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
description TEXT NULL,
created DATETIME NOT NULL,
author VARCHAR(15) NULL,
profile VARCHAR(200) NULL,
PRIMARY KEY(id)
);

*NOT NULL: 무조건 데이터가 있어야하는 Type
* NULL: 비어있어도 허용되는 Type
* AUTO INCREMENT: 자동으로 번호를 열마다 1씩 증가시키면서 입력해주는 것(순번 매기기)
* CHAR(size): Maximum size가 255, 고정길이
* VARCHAR(size): Maximum size가 255, 가변길이
* VARCHAR(100): string데이터의 길이가 100자리까지만 저장이 되고, 100자리가 넘어가는 부분들은 저장이 안되게 하는 명령 (데이터 길이 조절)
*TEXT: size(길이)가 65,535 (MEDIUMTEXT, LONGTEXT도 있음)
* DATETIME: '0000-00-00 00:00:00'형식의 날짜, 시간 표시(날짜 시간 관련 Type으로 DATE, TIME, YEAR, TIMESTAMP도 있음)
* PRIMARY KEY(colum명): 가장 중요하고 식별을 위해 고유한 값을 지정, 중복되면 안됨

Query OK 뜨면 잘 생성된 것

SHOW TABLES; : table의 전체목록이 나옴
DROP TABLE 테이블명; : table 삭제
DESC table명; : 해당 table의 구조 확인 가능
RENAME TABLE 기존 테이블명 TO 새 테이블명; : table명 바꾸기
NOW() : 현재 날짜, 시간 나타내주는 함수

* mysql 구조

구조: 데이터베이스 서버 - 데이터베이스(스키마) - 표(table)

회원정보 표, 게시글 표, 댓글 표 등 다양한 표(table)들을 연관되어 있는 표끼리 묶는 것을 데이터베이스라고 한다. (보통 스키마(schema)라고 표현)
이 스키마들을 저장하는 곳이 데이터베이스 서버
mySQL은 데이터베이스 서버(database server)

* table의 구조

column은 데이터의 type, 데이터의 구조를 나타냄
row는 데이터 자체

* CRUD

Create

  1. INSERT INTO table명(column1, column2, ...) VALUES('value1', 'value2', ...);

Read

  1. SELECT * FROM table명; : 해당 table 전체를 가져옴
  2. SELECT column1,column2,column5 FROM table명; : 해당 table의 column1,column2,column5만 가져옴
  3. SELECT column1,column2,column5 FROM table명 WHERE column5='value'; : 해당 table의 column5가 'value'값으로 이루어져 있는 row중에 column이 column1,column2,column5인 것들의 목록을 가져옴
  4. SELECT column1,column2,column5 FROM table명 WHERE column5='value' ORDER BY colomn1 DESC; : 3번과 같지만 정렬순서가 colomn1을 기준으로 내림차순으로 보여줌
  5. SELECT column1,column2,column5 FROM table명 WHERE column5='value' ORDER BY colomn1 DESC LIMIT 2; : 4번과 같지만 2번째 열까지만 보여줌

Update

  1. UPDATE table명 SET colomn1='value수정값' colomn2='value수정값' WHERE PRIMARY KEY인 colomn명=해당 column에서 수정할 row의 데이터;

Delete

  1. DELETE FROM table명 WHERE PRIMARY KEY인 colomn명=해당 column에서 삭제할 row의 데이터;
  2. ALTER TABLE table명 DROP COLUMN colomn명; (열 전체 삭제)

* 관계형 데이터베이스(Relational Database)

정의: 하나의 table을 어떤 기준을 가지고 두개 이상의 table로 나누는 것

  1. 관계형 데이터베이스 table을 불러오는 방법(여러 table을 한번에 불러오는 방법)
    : SELECT * FROM table명 LEFT JOIN 다른table명 ON table명.연결column명 = 다른table명.연결column명;

  2. SELECT table명.id, column1, column2 FROM table명 LEFT JOIN 다른table명 ON table명.연결column명 = 다른table명.연결column명;
    : 나오게 하고싶은 column을 나열하여 table을 불러올 수 있음, 두 테이블 모두 동일한 명칭의 column이 있으면 'table명.column' 으로 불러올 수 있음

내용출처: 생활코딩 및 각종 블로그 참조
사진출처: 생활코딩 database2-mysql강좌

Node.js & MySQL

Node.js & MySQL모듈의 기본 사용법

  1. npm i --save mysql

  2. 이 코드를 js파일에 넣고, 알맞게 수정 셋팅하기
profile
프론트엔드 개발자가 되기 위해 공부하고 있습니다.

0개의 댓글