My SQL

김경식·2022년 2월 14일
1
post-thumbnail

My SQL을 알아보기전 SQL에 대해 먼저 알아보자.

1. What is SQL?

SQL이란 Structured Query Language의 약어로 Database용 프로그래밍 언어이다.
데이터베이스에 쿼리를 보내 원하는 데이터를 가져오거나 삽입할 수 있다. 정리하면 SQL은 구조적 쿼리 언어를 의미함을 알 수 있다.

Query?

쿼리(query)란 질의하다 라는 뜻을 가지고있다. 따라서, 쿼리는 저장되어 있는 데이터를 필터하기 위한 질의문으로 이해하면 이해가 쉽다.

2. What is RDBMS?

RDBMS는 관계형 데이터베이스 관리 시스템의 약어이다.
RDBMS의 데이터는 테이블이라는 데이터베이스의 개체에 저장되며, 테이블은 관련 데이터 항목의 모음이라고 볼 수 있으며, 열과 행으로 구성된다.
대표적인 RDBMS는 My SQL, Oracle, IBM DB2등이 있다.

3. SQL 문법

모든 문법을 설명하기엔 양이 많아 기본적인 문법 몇가지만 다루고 나머지는 W3chools을 참고 하면 된다.

1) SELECT

SELECT 명령문은 데이터베이스에서 데이터를 선택하는데 사용되며, 반환된 데이터는 Result 테이블이 저장된다.

SELECT column1, column2, ... FROM table_name

여기서 column1, column2, ...은 선택하고자 하는 데이터이고, 테이블의 모든 데이터를 선택하고자 한다면 *을 사용하면 된다.

2) FROM

테이블과 관련된 작업을 할 경우 반드시 입력해야 하며, FROM 뒤에는 결과를 도출해낼 테이블을 명시해야한다.

3) WHERE

필터 역할을 하는 쿼리문으로, 선택적으로 사용할 수 있다.

SELECT column1, column2, ...
FROM table_name,
WHERE condition;

WHERE 조건

술어연산자사용예시
비교=, <>, <, <=, >, >=price < 100 //<>는 not Equal을 의미
범위BETWEENprice BETWEEN 100 AND 200
집합IN, NOT INprice IN (10, 20, 30)
패턴LIKELIKE "%특정 문자열%"
NULLIS NULL, IS NOT NULLprice IS NULL
복합조건AND, OR, NOT(price < 100) AND ( ... LIKE "%특정문자열")

4) ORDER BY

ORDER BY는 결과를 오름차순 또는 내림차순으로 정렬하는데 사용된다. (Default는 오름차순이다)

SELECT * FROM Customers
ORDER BY Country;

위의 예제는 Costomers테이블에서Country열을 기준으로 오름차순으로 정렬된 모든 데이터를 가져온다. 내림차순으로 정렬시엔 아래의 예제처럼 사용하면된다.

SELECT * FROM Customers
ORDER BY Country DESC;

5) INNER JOIN

INNER JOINJOIN 은 같다. JOIN은 둘이상의 테이블 사이에 관련된 열을 기반으로 데이터를 결합하는데 사용된다.

아래의 예제를 보면 이해하기 쉽다.
(아래의 예제는 w3school에서 가져왔다)

Orders, Customer 테이블에 다음과 같이 데이터가 있다고 가정해보자. 자세히보면 Orders 테이블의 CustomerID열은 Customer 테이블의 CustomerID를 참조하는것을 볼 수 있다.
따라서 Orders, Customer 테이블의 관계는 CustomerID 임을 알 수 있다.

JOIN은 위의 두 테이블에서 일치하는 값을 가진 데이터를 가져올 수 있다.

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

Orders 테이블의 CustomerIDCustomers 테이블의 CustomerID가 일치하는 데이터 중 OrderID, CustomerName, OrderDate열만 가져왔음을 알 수 있다.

4. SQL vs NoSQL

데이터베이스는 크게 관계형 데이터베이스와 비관계형 데이터베이스로 구분한다. 관계형 데이터베이스는 SQL을 기반으로 하고, 비관계형 데이터 베이스는 NoSQL로 데이터를 다루는데, 둘의 차이는 만들어진 방식, 저장하는 정보의 종류, 저장하는 방법이 있다.

1) 관계형 데이터베이스

관계형 데이터베이스에서는 테이블의 구조와 데이터 타입등을 사전에 정의해야하며, 정의된 내용에 맞는 데이터만 삽입할 수 있다. 데이터베이스는 행과 열로 구성된 테이블에 데이터를 저장하며, 각열은 하나의 속성에 대한 정보를 저장하고, 행에는 각 열의 데이터 형식에 맞는 데이터가 저장한다. 특정한 형식을 지키기 때문에 관계형 데이터 베이스는 테이블 간의 관계를 직관적으로 파악할 수 있다.

2) 비관계형 데이터베이스

NoSQL은 주로 데이터가 고정되어 있지 않은 데이터베이스를 가르킨다. 관계형 데이터베이스는 데이터를 입력할때 스키마에 맞게 입력해야 하지만, NoSQL에서는 데이터를 읽어올 때 스키마에 따라 데이터를 읽어온다는 차이점이 있다.

비관계형 데이터베이스의 구성

  • Key-Value : 속성을 Key-Value의 쌍으로 나타내는 데이터를 배열의 형태로 저장하며, Key는 속성의 이름을 뜻하고, Value는 속성에 연결된 데이터값을 의미한다
    (Redis, Dynamo 등이 대표적인 데이터베이스이다)

  • Document : 데이터를 테이블이 아닌 문서처럼 저장하는 데이터베이스를 의미한다. 각각의 문서는 하나의 속성에 대한 데이터를 가지고 있고, 컬렉션이라고 하는 그룹으로 묶어서 관리한다.
    (MongoDB가 대표적인 데이터베이스이다)

  • Wide-Column : 데이터베이스의 Column에 대한 데이터를 집중적으로 관리하는 데이터베이스로, 각 열에는 key-value 형식으로 데이터가 저장되거, 컬럼 패밀리라고 하는 열의 집합체 단위로 데이터를 처리할 수 있다. 데이터 처리에 필요한 열을 유연하게 선택할 수 있다는 점에서 규모가 큰 데이터 분석에 주로 사용된다.
    (Cassandra, HBase 등이 대표적인 데이터베이스 이다)

  • Graph : 자료구조의 그래프와 비슷한 형식으로 데이터 간의 관계를 구성하는 데이터베이스로, 노드에 속성별로 데이터를 저장하며, 각 노드간 관계는 선으로 표현한다.
    (Neo4J, InfiniteGraph 등이 대표적인 데이터베이스이다)

글을 마치며

자바스크립트를 배우기전 My SQL을 사용해본적이 있다. 정말 기본적인 문법만 몇가지 사용해봤기에 잘할수 있다고 말할수는 없지만 이번 과제를 풀기위해 다시 공부해 봤을때 도움이 많이 되었던거 같다. 아직은 정확하게 SQL - NoSQL의 차이점과 어떤것을 사용해야하는지 정확하게 알 수 없지만 NoSQL을 공부하고 이후에 다시금 정리 해봐야겠다.

0개의 댓글