y.developer
[TIL] Day 56 SQL이란 무엇인가? 본문
2023.12.21 목
1. SQL은 언어이다
SQL (Structured Query Language)
SQL을 이해하기만 한다면 프로젝트를 할 때 큰 도움이 될 수 있다.
단지 이해만 하더라더도 말이다!
이력서를 작성할 때뿐만 아리라 기술 인터뷰에서도 큰 도움이 될 것이다.
신기한 사실은 SQL은 프로그래밍 언어가 아니다는 것이다.
그리고 자바, 파이썬 등 다양한 언어들보다 유명하다는 것이다.
그럼에도 불구하고 사람들이 공부를 많이 하지 않는 부분이기에
어떤 풀스택 개발자는 단 1줄의 SQL코드도 써보지 않았다는 사람도 있다.
깊게는 아니더라고 이해만 할 수 있다면 높은 경쟁력을 가질 수 있을 것이다!
2. 데이터베이스와의 대화
데이터베이스와 대화하기 위해서 특별히 디자인된 언어이다.
데이터에는 2가지 종류가 있다.
Relational = SQL
ex) MySQL, PostgreSQL, Splite 등
Non-Relational = Non-SQL(NoSQL)
ex) MongoDB, DynamoDB, CouchDB 등
대다수의 회사, 정부 기관, 은행 등이 SQL을 사용한다.
그렇기 때문에 SQL이 업계 표준이 되는 것이다.
3. 작동 원리 및 작성 방법
SQL 데이터베이스는 어떻게 생겼고, 어떻게 작동하는 것인가?
SQL은 엑셀 문서와 똑같이 생겼다.
SQL 데이터 베이스에는 테이블이 있고,
엑셀 문서에는 시트가 있다.
SQL 테이블에는 행(row)과 열(column)이 있고,
엑셀 문서에서도 똑같이 행(row)과 열(column)이 있다.
ID | name | age | |
1 | Reo | 1@gmail.com | 35 |
2 | Lynn | a@naver.com | 22 |
3 | Flynn | f1@gmail.com | 28 |
4 | Amie | aa@naver.com | 18 |
5 | Corini | cc@gmail.com | 24 |
아주 간단한 SQL 커맨드로는 select가 있다.
예를 들어 위의 Student 테이블 유저의 모든 이메일을 가져오고 싶다면 이렇게 작성하면 된다.
SELECT email FROM students
그렇다면 21살보다 많은 학생의 이메일을 가져오고 싶다면 이렇개 작성하면 된다.
SELECT email FROM students WHERE age>21
학생의 이메일이 naver인 경우의 나이를 찾아보자.
% 싸인을 사용했는데, 이는 naver.com으로 끝나는 경우라는 특정값을 찾으려고 할 때 사용된다.
SELECT age FROM students WHERE email LIKE "%naver.com"
ID가 2인 경우의 학생을 지우고 싶다면 이렇게 작성하면 된다.
DELETE FROM students WHERE id=2
15~18세 사이에 해당하는 학생의 이메일을 찾고 싶다면 이렇게 작성하면 된다.
SELECT email FROM students WHERE age BETWEEN 15 AND 18
여러 커맨드의 예시를 보다시피 보통 영어와 똑같고 굉장히 직관적이여서 매우 이해하기 쉽다.
프로그래밍 언어가 아니라 쿼리용 언어이기 때문이다.
4. ORM
이렇게 쉬운데 왜 수많은 개발자들은 SQL을 모르는 걸까?
그 이유는 ORM에 있다.
ORM이란 예를 들어 파이썬을 가져와서 SQL코드로 바꿔주는 일을 한다.
그러니까 파이썬으로 코딩을 하면 ORM을 통해서 SQL 코드를 얻을 수 있는 것이다.
파이썬의 경우 장고 ORM이 있고,
라라벨의 경우 Eloquent ORM이 있고,
Node.js의 경우 Sequelize 또는 Type ORM이 있다.
5. SQL을 배워야하는 궁극적인 이유
ORM은 자주 쓰이며, 시간을 많이 절약해준다.
그러나 문제가 있다면 개발자들로 하여금 ORM에 너무 의존하게 만든다는 것이다.
왜냐하면 개발자들은 SQL이라는 다른 언어보다 작업하고 있는 하나의 언어만으로 계속해서 작업 하는 것을 선호하기 때문이다.
ORM을 사용하는 것은 나쁜 것이 아니다. 시간을 절약할 수 있기 때문이다.
시간을 절약한다는 것은 매우 효율적이란 것이다.
그러나 문제는 이럴 때 발생하게 된다.
ORM에 너무 의존한 나머지 뭔가 작동이 안되거나, 더 빠르게 작업을 해야 할 때, ORM에 이슈가 생겼을 때 어떻게 대처할지 모른다는 것이 문제다.
ORM에 문제가 발생했을 때 즉각 SQL 코드를 쓸 수 있는 것이 좋다.
그렇기 때문에 데이터베이스를 다루게 되는 개발자라면 SQL을 배워야한다고 생각한다.
물론 데이터베이스에 직접적인 영향력을 미치지 않는 개발자라도 SQL의 개념은 알고 있어야한다.
적어도 ORM이 하는 작업이 무엇인지 이해하고, 알아두면 데이터베이스를 이해할 수 있고, 데이터를 어떻게 모델할지에도 도움이 될 것이다.
아주 약간의 SQL의 원리와 개념만 알고 있어도 개발자 인생에 있어서 굉장히 큰 도움이 될 것이다.
하루를 마치며
백엔드는 지금의 나로서는 너무 어렵게 느껴진다.하지만 벡엔드와는 계속 통신을 해야하고, 이해해야 한다.그리고 언젠가는 풀스택 개발자로 거듭나기 위해서 지금부터라도 공부를 해야할 것 같다.이렇게 하나씩 배워가면 된다!ORM에 대해서 적다보니 개발자의 숙명이라고 생각되는 한 줄이 떠올랐다.
오늘의 한 줄
Time Save is Money Save