SQL ?

JINBOK LEE·2022년 9월 26일
0

DataBase

목록 보기
1/1
post-thumbnail

❗해당 글은 '노마드 코더 Nomad Coders' 의 영상을 보며 정리 한 글 입니다.
모든 내용과 이미지는 해당 영상에서 가져온 것임을 알립니다.


❓ SQL

SQL은 Structured Query Language의 준말로, 'DB에 정보를 요청하는(query) 구조화된 언어' 이다.
즉, DB와의 통신을 위해 특별히 디자인 된 언어라는 뜻이다.

거의 모든 서비스에는 DB가 필요하고, 개발자로서 이 DB를 구성하거나 / 구성되어 있는 DB와 어떻게 통신하는지 알아야 한다. 바로 이때 SQL이 필요한 것이다.

DB에는 크게 2종류가 있다.

  1. Relational (a.k.a. SQL)
    ex) MySql, PostgreSQL, SQLite

대다수의 회사, 정부기관, 은행 등에서 사용한다. 따라서 SQL이 업계 표준인 것이다.

  1. Non-Relational (a.k.a. Non-SQL)
    ex) mongoDB, DynamoDB, CouchDB

SQL은 사실 Microsoft의 Excel과 똑같이 생겼다. Excel처럼 행(Row)과 열(Colum) 으로 구성되어 있다.

간단한 예로, 위와 같은 DB에서 학생들의 email 주소를 가져오는 SQL 커맨드는 아래와 같다.

SELECT email FROM students;

21살 이상의 학생들에 대한 email 주소를 가져오는 SQL 커맨드는 아래와 같다.

SELECT email FROM students WHERE age >= 21;

커맨드가 단순 영어 구조와 똑같아 이해가 쉽다.

한편, 유저의 email 중 naver를 사용하는 학생의 나이를 선택하는 경우 아래와 같이 작성할 수 있다.

SELECT age FROM students WHERE email LIKE "%naver.com";

이때 % sign은 naver.com으로 끝나는 경우와 같이 특정값을 찾을때 사용한다.

다음으로는 ID가 2인 유저의 데이터를 삭제하고 싶을때의 경우이다.

DELETE FROM students WHERE id=2;

마지막으로, 15~18세 사이의 학생들의 이메일만 찾는 경우는 아래와 같다.

SELECT email FROM students WHERE age BETWEEN 15 AND 18;

다양한 예시로 보았듯이 SQL은 영어 문법과 상당히 비슷하여 이해하기가 쉽다.
그러나 많은 개발자들이 SQL을 잘 모른다고 한다. 바로 ORM 때문이라고 하는데, ORM이 무엇일까?


❓ ORM

ORM은 Object Relational Mapping의 준말로, '객체-관계-맵핑'을 뜻한다.
단편적인 예로, python을 가져와서 SQL 코드로 바꿔주는 일을 한다.

즉, python으로 코딩을 하면 ORM 덕분에 SQL 코드를 얻는 것이다.
그래서 ORM은 정말 자주 쓰인다.
python의 경우 django ORM이 있고,
Laravel의 경우 eloquent ORM이 있고,
nodeJS의 경우 Sequelize / type ORM 이 있다.

모두 개발자의 시간을 상당히 절약해준다는 장점이 있지만, 동시에 개발자들로 하여금 ORM 의존도를 높여버린다는 단점 또한 존재한다.

ORM에 너무 의존한 나머지, 무언가 issue가 발생했거나 ORM이 느려져서 더욱 빠른 작업을 요할때 어떻게 대처해야 할 지 모른다는 것이다.

그렇기 때문에 모든 Full-stack 개발자들은 SQL을 배워야 한다.
ORM의 사용을 지양하는 것은 아니지만, 어느 순간에는 ORM만으로는 부족할 때가 올 수 있기 때문이다.
SQL을 몰라 이리저리 헤매이지 말고, 문제가 생긴 부분을 찾아 즉각 SQL 코드를 쓸 줄 아는 개발자가 되어야 한다.
SQL의 전문가가 되는 정도가 아니어도, SQL의 원리와 개념 정도는 충분히 숙지하고 ORM을 이용하여 개발을 하도록 해야한다.

profile
깔끔한 비즈니스 로직 설계를 위해 공부하는 FE 개발자

0개의 댓글