2022.09.19 경일 메타버스 25주차 1일 수업내용. Node.js - MySQL
p. 278 ~ 279
관련성을 가지며 중복이 없는 데이터들의 집합
DBMS (DataBase Management System; 데이터베이스 관리 시스템)
데이터베이스를 관리하는 시스템
서버의 저장 매체에 데이터를 저장하여 서버 종료 여부와 상관없이 데이터를 지속적으로 사용 가능
여러 사람이 동시에 사용 가능
RDBMS (Relational DBMS; 관계형 DBMS)
Oracles, MySQL, MSSQL 등
SQL이라는 언어로 데이터를 관리
p. 279 ~ 286
mysql -h localhost -u root -p
명령 프롬프트를 통해 MySQL에 접속
-h 뒤에 접속 주소
-u 뒤에 사용자명
-p : 비밀번호를 사용하겠다는 표시
p. 294 ~ 305
MySQL 기준
데이터베이스 생성 명령어
CREATE SCHEMA [데이터베이스명]
MySQL에서 데이터베이스와 스키마는 같은 개념
위 명령어와 같이 MySQL이 기본적으로 아는 구문을 예약어라 한다.
use [데이터베이스명];으로 앞으로 지정한 데이터베이스를 사용하겠다는 것을 알린다.
SQL 구문은 세미콜론(;)을 붙여야 실행
워크벤치 사용 : p. 295 ~ 296
테이블 : 데이터가 들어갈 수 있는 틀
테이블에 맞는 데이터만 들어갈 수 있다.
세로줄 - 컬럼 (Column)
가로줄 - 로우 (Row)
한 칸 - 필드 (Field)
미리 컬럼(종류)을 정의하고, 컬럼에 맞춰 데이터를 넣는다.
테이블 생성 명령어
CREATE TABLE [데이터베이스명.테이블명](컬럼1, 컬럼2, ... )
use [데이터베이스명]을 실행했다면 데이터베이스명.은 생략 가능
콤마(,)로 구분해 컬럼을 만든다.
컬럼의 자료형
INT
정수
INT(자릿수)
FLOAT, DOUBLE
CHAR(자릿수)
고정 길이 문자열
자릿수에 미달하는 문자열이면 부족한 자릿수만큼 스페이스로 채운다.
VARCHAR(자릿수)
가변 길이 문자열
보통 수백 자 이내의 문자열을 처리
TEXT
긴 글을 저장
VARCHAR 이상 길이의 문자열 (수백 자 이상) 처리
TINYINT
-128 ~ 127까지의 정수
1 또는 0만 저장한다면 불값(Boolean) 역할 가능
DATETIME
DATE
TIME
자료형 옵션
NULL / NOT NULL
AUTO_INCREMENT
UNSIGNED
숫자 자료형에 적용되는 옵션
음수 무시
FLOAT / DOUBLE 적용 불가ZEROFILL
숫자의 자릿수가 고정되어 있을 때 사용 가능
비어있는 자리를 0으로 채운다.
id INT(4) ZEROFILL, id = 1 ⇒ 0001DEFAULT
저장 시 해당 컬럼에 값이 없을 경우 기본값
now() / CURRENT_TIMESTAMP
PRIMARY KEY
사용 : PRIMARY KEY()
PRIMARY KEY(id)해당 컬럼이 기본 키
UNIQUE INDEX
사용 : UNIQUE INDEX [인덱스명] ([컬럼명] 옵션)
UNIQUE INDEX name_UNIQUE (name ASC)해당 값이 고유함
컬럼을 인덱스로, 옵션에 따라 기억
ASC (Ascending; 오름차순) / DESC (Descending; 내림차순)PRIMARY KEY는 UNIQUE INDEX를 포함
PRIMARY KEY와 UNIQUE INDEX는 데이터베이스가 별도로 컬럼을 관리
⇒ 조회 시 속도가 빨라진다.
테이블 설정
COMMENT
DEFAULT CHARACTER SET
utf8 등ENGINE
MyISAM, InnoDB 등
자료에서는 InnoDB 사용
테이블 확인 명령어
DESC [테이블명]테이블 제거 명령어
DROP TABLE [테이블명]워크벤치 사용 : p. 300 ~ 302
다른 테이블의 기본 키를 저장하는 컬럼
외래 키 지정 명령어
CONSTRAINT [제약조건명] FOREIGN KEY [컬럼명] REFERENCES [참고하는 컬럼명]ON UPDATE / ON DELETE
이벤트 - 수정 / 삭제
옵션 CASCADE
테이블 전체 리스트 표시 명령어
SHOW TABLES워크벤치 사용 : p. 304 ~ 305
p. 306 ~ 314
CRUD
Create / Read / Update / Delete의 첫 글자를 모은 두문자어
데이터베이스에서 많이 수행하는 네 가지 작업
데이터를 생성해서 데이터베이스에 넣는 작업
명령어
INSERT INTO [테이블명] ([컬럼1], [컬럼2], …) VALUES ([값1], [값2], …)워크벤치 사용 : p. 307 ~ 309
데이터베이스의 데이터를 조회하는 작업
명령어
모든 데이터를 조회
SELECT * FROM [테이블명]특정 컬럼만 조회
SELECT [컬럼명1], [컬럼명2], ... FROM [테이블명]특정 조건의 데이터만 조회
WHERE 절 사용 → SQL 끝
AND, OR로 조건을 묶을 수 있다.
SELECT [컬럼명1], [컬럼명2], ... FROM [테이블명] WHERE [조건]
SELECT name, age FROM nodejs.users WHERE married = 1 OR (age > 30 AND age < 45);데이터 정렬 후 조회
ORDER BY [컬럼명] [ASC | DESC] 키워드 → SQL 끝
ex. SELECT id, name FROM nodejs.users ORDER BY age DESC;
조회할 로우 개수 설정
LIMIT [숫자] 키워드 → SQL 끝
ex. SELECT id, name FROM nodejs.users ORDER BY age DESC LIMIT 1;
로우 개수 설정과 함께 몇 개를 건너뛸지 설정
게시판 등의 페이지네이션 기능 구현에 유용
OFFSET [건너뛸 숫자] 키워드 → SQL 끝
ex. SELECT id, name FROM nodejs.users ORDER BY age DESC LIMIT 1 OFFSET 1;
워크벤치 사용 : p. 312
데이터베이스에 있는 데이터를 수정하는 작업, 덮어쓰기
명령어
UPDATE [테이블명] SET [컬럼명=바꿀 값] WHERE [조건]워크벤치 사용 : p. 313
데이터베이스에 있는 테이터를 삭제하는 작업
명령어
DELETE FROM [테이블명] WHERE [조건]워크벤치 사용 : p. 314