File I/O로 구현이 힘든 관리를 위한 기능들을 가지고 있는 Data에 특화된 서버
database가 왜 나왔을까?
- In-memory : 서버끄면 데이터가 사라짐
- File-I/O : 원하는 데이터를 필터링하여 가져올 수 없기 때문에 항상 모든 데이터를 가져온 뒤 서버에서 필터링한다.
데이터의 영속성을 유지하고, 편리하게 꺼내다 쓸 수 있으며 필요에 따라 데이터를 알맞게 필터링할 수 있는 기능이 필요했기 때문에 Database가 나왔느니라
설치고 실행이 잘 안되거나, 오류 발생하면 👉 클릭
HomeBrew 설치
터미널에서 HomeBrew 설치하기 :
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
MySQL 설치
$ brew install mysql
$ brew info mysql
MySQL 서비스 시작
설치 후에 MySQL 서비스를 실행해야 MySQL을 사용할 수 있다.
$ brew services start mysql
$ mysql -V
(mysql version 잘 나오면 잘 된 것임!)
MySQL 접속
- 아래의 명령어로 MySQL에 접속할 수 있다.
- 오류가 발생하거나, 존재하지 않는 명령어라는 결과가 나온다면, 설치에 문제가 있거나, 혹은 MySQL이 실행되지 않은 상태
$ mysql -u [계정명] -p [비밀번호 입력]
$ mysql -u root -p
설치했을 때 따로 계정을 추가하거나 비밀번호를 설정하지 않았다면, 초기 MySQL의 기본 root의 암호는 비어 있으므로 "ENTER"를 누르면 된다.
MySQL root 계정 비밀번호 세팅 터미널 접속 후 명령어 입력
yourPassword 부분만 고쳐 적자
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourPassword';
SQL (Structured Query Language)
: 구조화된 Query 언어
Query 란?
질문 또는 질의어
👉 즉, Database는 질문에 대한 답을 줘야 한다.
Database Query
1. 생성
CREATE DATABASE '데이터베이스 이름'
2. 삭제
DROP DATABASE '데이터베이스 이름'
3. 열람
SHOW DATABASES
4. 선택
USE '데이터베이스 이름'
Table Query
1. 생성
CREATE TABLE '테이블 이름 ('name' char(4) NOT NULL, ...)'
2. 삭제
DROP TABLE '테이블 이름'
3. 열람
테이블 전체 열람 :SHOW TABLES
테이블 스키마 열람 :DESC '테이블 이름'
삽입
INSERT INTO '테이블 이름' (컬럼1, 컬럼2, ...) VALUES (값1, 값2 ...)
수정
UPDATE '테이블 이름' SET [컬럼1=수정할 값] WHERE [조건문]
삭제
✔️ 특정 Data 삭제
DELETE FROM '테이블 이름' (WHERE [조건문])
✔️ Table의 Data 전체 삭제
TRUNCATE '테이블 이름'
✔️ Table을 삭제
DROP TABLE '테이블 이름'
조회
✔️ 기본 문법 :SELECT 컬럼명1, 컬럼명2, ... [FROM '테이블 이름']
✔️ORDER BY
,GROUP bY
,LIMIT
,CASE
,WHEN
,JOIN ~ ON ~.
등의 옵션과 붙여서 많이 사용한다.
Primary Key
: 테이블에서 데이터가 중복되지 않는 유일한 키 Normal Key
: 중복을 허용하는 인덱스Unique Key
: 테이블에서 여러개의 키가 있을수 있지만, Data가 중복되는 것은 허락하지 않는 키Foreign Key
: 다른 테이블과의 관계성을 부여하는 키Full text
: 자연어 검색, myisam에서만 지원👉 자주 조회하고, 조회가 오래걸리며, 데이터가 긴 경우는 인덱스를 사용하지 않는다고 한다!