- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프로그래머스
- TIL
- java
- 아고라스테이츠
- sql
- Git
- 리팩터링 2판
- 에러핸들링
- CSS
- First Project
- Err-Handling
- TMIL
- 배포
- MariaDB
- LEVEL 1
- javascript
- LEVEL 2
- 면접을 위한 cs 전공지식 노트
- Docker
- 알고리즘
- react
- typescript
- TWIL
- 코딩테스트
- 코어 자바스크립트
- 오늘도 개발자가 안된다고 말했다
- LEVEL1
- CRUD
- Refactoring
- mongodb
성장에 목마른 코린이
[DB] 데이터베이스의 필요성, 관련 명령어 본문
데이터베이스의 필요성
파일에 데이터를 저장하거나, 인메모리 형태로 데이터를 임시 저장하는 방법을 이용할 수 있지만
굳이 데이터베이스를 사용할 필요가 있는 이유
- 데이터가 필요할 때마다 전체 파일을 매번 읽어야 합니다.
- 파일의 크기가 커질수록 이 작업은 버겁고, 비효율적이어서 File I/O 방식의 큰 단점입니다.
- 파일이 손상되거나 여러 개의 파일들을 동시에 다뤄야 하는 등 복잡하고 데이터량이 많아질수록 데이터를 불러들이는 작업이 점점 힘들어집니다.
1. In-Memory
JavaScript에서 변수를 만들어 저장한 경우, 프로그램이 종료될 때 해당 프로그램이 사용하던 데이터도 사라집니다.
예기치 못한 상황으로부터 데이터를 보호할 수 없고, 프로그램이 종료된 상태라면 데이터를 원하는 시간에 받아올 수 없으며, 데이터의 수명이 프로그램의 수명에 의존하게 됩니다.
2. File I/O
파일을 읽는 방식으로 작동하는 형태를 말합니다. 엑셀 시트나 CSV 같은 파일의 형태는 In-Memory에 비해 데이터를 저장하는 방식으로 적절해 보입니다. 그러나 한계가 분명히 존재합니다.
반면에 관계형 데이터베이스에서는 하나의 CSV 파일이나 엑셀 시트를 한 개의 테이블로 저장할 수 있습니다. 한 번에 여러 개의 테이블을 가질 수 있기 때문에 SQL 을 활용해 데이터를 불러오기 수월합니다. 또한, 엑셀 시트와 CSV 파일 등처럼 특정 형태의 파일은 대용량의 데이터를 저장하기 위한 목적이 아닙니다.
데이터베이스 관련 명령어
데이터베이스 생성
CREATE DATABASE 데이터베이스_이름;
데이터베이스 사용
데이터베이스를 이용해 테이블을 만들거나 수정하거나 삭제하는 등의 작업을 하려면,
먼저 데이터베이스를 사용하겠다는 명령을 전달해야 합니다.
USE 데이터베이스_이름;
테이블 생성
USE 를 이용해 데이터베이스를 선택했다면, 이제 테이블을 만들 수 있습니다. 다음은 user라는 테이블을 만드는 예제입니다. 테이블은 필드(표의 열)와 함께 만들어야 합니다. 다음과 같은 필드 조건이 있다고 가정합니다.
필드 이름필드 타입그 외의 속성
id | 숫자 | Primary key이면서 자동 증가하도록 설정 |
name | 문자열 (최대 255개의 문자) | |
문자열 (최대 255개의 문자) |
CREATE TABLE user (
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(255),
email varchar(255)
);
SQL 콘솔에서 Enter 키를 이용해 여러 줄의 코드를 입력할 수 있습니다. 위와 같이 입력하고, 다음에서 설명할 DESCRIBE 명령어를 이용해 테이블 정보를 확인합니다.
테이블 정보 확인
다음의 명령어를 통해 테이블 정보를 확인할 수 있습니다.
DESCRIBE user;
다음과 같이 user 테이블의 정보를 확인할 수 있습니다.
mysql> describe user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| email | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
'데이터베이스' 카테고리의 다른 글
[DB] 생성, 기본 문법 (CREATE, SHOW, DESC, DROP, ALTER) (0) | 2022.04.09 |
---|---|
[DB] SQL 내장함수 (0) | 2022.04.09 |
[DB] 헷갈리는 DB 조작 (INSERT, UPDATE, JOIN) (0) | 2022.04.09 |
[DB] DB 조작 (SELECT, WHERE, LIKE, IN, ORDER BY) (0) | 2022.04.09 |
[DB] SQL(구조화 쿼리 언어) vs. NoSQL(비구조화 쿼리 언어) (0) | 2022.04.07 |