[DB] 관계형 데이터베이스 SQL

kai6666·2022년 6월 10일
0

TIL.DB

목록 보기
1/3

😲 데이터베이스의 필요성

일반적으로 데이터를 조회하거나 어떤 형태로 표현하고 싶을 때 엑셀 시트나 CSV 파일 등을 사용한다. 이런 형태도 데이터를 저장하고 사용할 수 있는데 굳이 데이터베이스를 써야 하는 이유는 다음과 같다.

In-Memory

JavaScript에서 데이터를 다룰 때는 프로그램이 실행될 때만 존재하는 데이터가 있다. 이런 데이터는 프로그램이 종료될 때 사라진다. 데이터가 프로그램의 실행과 종료에 좌지우지 되기 때문에 예기치 못하게 종료할 때는 데이터를 보호할 수 없다.

File I/O

File I/O는 파일을 읽는 방식으로 작동하는 형태를 의미한다. 엑셀이나 CSV는 어느정도의 데이터를 저장하기에는 적합하지만, 데이터가 필요할 때마다 전체 파일을 매번 읽어야 한다. 데이터가 많을수록 이 작업은 컴퓨터에게 버겁고, 비효율적이다.

관계형 데이터베이스에서는 하나의 CSV 파일이나 엑셀 시트를 한 개의 테이블로 저장할 수 있고, 한 번에 여러 개의 테이블을 가질 수 있어 데이터를 불러오기 수월하다. 또한 엑셀 시트와 CSV 같은 특정한 파일 형태는 대용량의 데이터를 저장하기 위한 목적이 아니다. 따라서 대용량의 데이터를 다룰 때는 그에 맞게 만들어진 데이터베이스를 사용하는 것이 중요하다.

💁‍♀️ SQL (Structured Query Language)


SQL은 '구조화된 쿼리 언어'이자 데이터베이스 언어로, 주로 관계형 데이터베이스에서 사용한다. 대표적으로 MySQL, Oracle, SQLite 등 데이터베이스에서 SQL 구문을 사용할 수 있다.

쿼리 (Query)

쿼리는 질의문이라는 뜻을 가지고 있다. 구글 검색창에 넣는 검색어도 쿼리의 한 종류라 할 수 있다. 검색어는 전체 자료에서 검색어로 데이터를 필터링한다.

SQL이 구조화된 쿼리 언어이기 때문에, 데이터베이스에 SQL 구문을 통해 원하는 데이터를 필터링하거나 수정할 수 있다. 단, "구조화된" 쿼리 언어이기 때문에 구조화된 테이블을 사용하는 데이터베이스에서 쓸 수 있다. (구조가 고정되지 않은 데이터베이스인 NoSQL도 있다.)

✨ 쿼리문 살펴보기

데이터베이스 생성

CREATE DATABASE 데이터베이스명;

데이터베이스 사용

데이터베이스를 사용하기 앞서 사용하겠다는 명령을 전달해야 한다.

USE 데이터베이스명;

테이블 생성

customer라는 테이블을 생성하는 예시이다. id는 기본키이면서 자동 증가하도록 설정했다.

CREATE TABLE customer (
	id int PRIMARY KEY AUTO_INCREMENT,
    name varchar(255),
    email varchar(255)
    );

테이블 정보 확인

DESCRIBE라는 명령어로 생성한 테이블의 정보를 확인할 수 있다.

DESCRIBE customer;

----- 이제부터 MySQL에서 자주 사용하는 명령어를 간단하게 살펴본다. -----

SELECT

데이터셋에 포함될 특성을 특정하는 명령어다. 아래와 같이 와일드카드 표시 * 를 붙이면 전부 선택한다는 의미다.

SELECT *

FROM

테이블 관련 작업을 할 때 반드시 입력해야 한다. 이 명령어로 결과를 도출해낼 데이터베이스 테이블을 명시한다. 아래의 구문은 테이블의 모든 특성을 선택한다는 의미이다.

SELECT *
FROM 테이블명

WHERE

필터 역할을 하는 선택적으로 사용할 수 있는 명령어다. 일치하는 값을 찾고자 할 때는 =를, 값을 제외하고 찾고자 할 때는 <> 연산자를 쓰면 된다.

SELECT *
FROM 테이블명
WHERE 특성1 = "값"
SELECT *
FROM 테이블명
WHERE 특성1 <> "값"

값과 비슷한 값들을 필터링할 때는 LIKE% 혹은 *를 사용한다.

SELECT *
FROM 테이블명
WHERE 특성1 LIKE "%특정 문자열%"

두 개 이상의 값과 일치하는 데이터를 필터할 때는 IN을 사용한다.

SELECT *
FROM 테이블명
WHERE 특성1 IN ("값1", "값2")

값이 없는 경우를 찾을 때는 IS NULL을, 없는 경우를 제외할 때는 IS NOT NULL을 쓴다.

SELECT *
FROM 테이블명
WHERE 특성1 IS NULL
SELECT *
FROM 테이블명
WHERE 특성1 IS NOT NULL

ORDER BY

데이터를 어떤 기준으로 정렬해서 출력할지 정하는 명령어다. 디폴트는 오름차순인데, DESC로 내림차순 정렬도 할 수 있다.

SELECT *
FROM 테이블명
ORDER BY 특성1 DESC

DISTINCT

유니크(unique)한 값을 받고 싶을 때 쓰는 명령어다. 아래는 특성1을 기준으로 유니크한 값들만 선택하는 구문이다.

SELECT DISTINCT 특성1
FROM 테이블명
profile
성장 아카이브

0개의 댓글