회사 과제로 교육 자료 비슷한걸 만들면서 블로그에 연재하는 글로, 아아아아주 쉽게 설명하기 위해서 생략과 과장이 많으니 전문가들은 skip을 권장한다.
왜 SQL을 알아아 하는가? 정확히 말하면 기획자가 왜 데이터베이스를 알아야 하는가?다. 이건 검색해도 많이 나오겠지만, 우선 웹에 대해서 잠깐 짚고 넘어가자.
서버와 클라이언트
흔히 client와 server라는 개념이 있는데, 난 과거에 이 두개가 진짜 엄청 이해가 안되었다. 누군가 설명은 해주는데 명확하게 이해하는게 아니라 그런가보다 하고 넘어갔었고, 매번 다시 찾아봐야 했었으며 항상 그래서 서버가 뭔데라는 질문만 갖고 마무리했었다.
Client는 고객이라는 영어 단어로 우리가 보는 웹/앱 서비스의 화면 또는 기기라고 이해하면 좋다. 여기서 "고객은 요청"을 한다. 우리가 식당에서 메뉴판을 보고 음식을 주문하듯이 고객은 주문을 한다.
Server는 Serve를 하는 사람으로 고객의 요청을 "수행"한다. 고객이 주문을 하면, 서버는 음료 주문이라면 bar로, 음식 주문이라면 주방으로, 계산 요청이라면 계산대로 가서 "고객의 요청을 처리"한다. 그래서 웹 서버/앱 서버는 이런 다수의 client의 요청을 수행/처리하는 거대한 컴퓨터라고 이해해도 좋다.
데이터베이스와 DBMS
Database는 거대한 자료의 집합으로 지금의 예시에서는 재료 창고라고 보면 된다. 음료 창고도 있고, 음식 창고도 있고, 식당을 관리하기 위한 기타 자재들이 있는 창고도 있는데 이 모든 창고를 데이터베이스라고 할 수 있다. 음료 창고, 음식 창고, 기타 자재 창고를 모두 데이터베이스 1개로 칭할 수도 있고, 각각을 데이터베이스로 칭할 수 있기도 한데 이는 데이터 설계자가 어떻게 하느냐에 따라 다르다.(중요한 얘긴 아니다)
식당에 메뉴가 단일 메뉴라면 백종원씨가 참 좋아하겠지만, 자녀가 있는 어른들을 위해 콩나물국밥 집에서 돈까스를 팔 듯이 식당은 다양한 메뉴를 가지고 있다. 메뉴가 많아지면 많아질 수록 관리해야 하는 재료들도 많아진다. 그러면 이제 재료를 관리하기 위한 냉장/냉동/상온 보관을 분류하고 유통기한과 재고량을 관리할 시스템이 필요할 것이다.
관리하는 데이터가 적으면 엑셀에 때려박고 관리하면 되지만 조금 더 체계적인 관리가 필요해지는 순간이 온다. 그래서 우리는 DBMS를 쓴다. DBMS는 Database Management System의 약자로 그 이름 자체로 정보를 저장하고 관리하는 컴퓨터 시스템이다.
오라클이니, MySQL이니 MariaDB, MongoDB 이런 아이들 모두 DBMS를 제공하는 엔진들이다.
DBMS는 계층형(Hierarchical), 망형(Network), 관계형(Relational), 객체지향형(Object-Oriented), 객체관계형(Object-Relational) 등으로 분류할 수 있는데 가장 많이 사용하는 건 관계형 데이터베이스 시스템으로 RDBMS라고 부른다. RDBMS는 DBMS 중 가장 많은 비중을 차지하고 있으며 가장 많이 들어봤을 오라클 데이터베이스, MySQL, MariaDB, SQLite 등도 RDBMS이다.
RDBMS에 대해서는 to be continued.....
SQL
SQL은 Structured Query Language의 약자로 구조화 질의어라고 한다. RDBMS에 있는 방대한 자료를 원하는 목적에 맞춰 찾아오는 개발 언어다. SQL도 java나 python과 같이 사용방법과 문법이 있는 프로그래밍 언어에 해당한다. RDMBS가 아닌 데이터베이스 관리 시스템을 통칭하여 NoSQL이라고 하기도 한다.
-- 연봉이 7,000 이상인 사람
SELECT
ename,
(sal*12 + NVL(comm,0)) AS "annual salary“
FROM emp
WHERE (sal*12 + NVL(comm,0)) >= 7000;
개인적으로 그 어떤 프로그래밍 언어보다 배우기 쉬운 편인 것 같긴 하다. 그리고 사용해보기 좋기도 하고. 깊게 들어가면 어렵고 전문적인 분야긴 하지만, 접근성이 좋달까.
SQL을 통해
데이터를 추가/수정/삭제하거나
데이터를 관리하기 위해서 테이블을 추가/수정/삭제하거나
데이터 관리 시스템의 트랜젝션을 제어하거나 사용자 권한을 관리할 수 있다.
그렇게 하기 위해서는 다음과 같은 명령어가 필요하다.--skip해도 무방
명령어의 유형 | 명령어 | 설명 |
데이터 조작어 (DML, Data Manipulation Language) |
- Select - Insert - Update - Delete |
테이블에 있는 데이터를 조회하거나 조작하는 명령어 |
데이터 정의어 (DDL, Data Definition Language) |
- Create - Alter - Drop - Rename |
테이블을 생성/수정/삭제 등 조작하는 명령어 |
데이터 제어어 (DCL, Data Control Language) |
- Grant - Revoke |
데이터베이스에 접근하고 사용할 수 있도록 권한을 주고 회수하는 명령어 |
트랜잭션 제어어 (TCL, Transaction Control Language) |
- Commit - Rollback |
DML 조작된 결과를 트랜잭션 별로 제어하는 명령어 * TCL은 DCL에 포함되기도 하지면, 별도로 구분해서 설명 |
뭐 그 외에대 view나 index나 등등등이 있지만
여기까지 이해했다면 웹은 다 알았다고 뻥치고 다닐 수 있다.
다음엔 본격적으로 기획자가 왜 데이터베이스를 알아야 하는가?를 끄적여보겠다.
'얕은 개발 이야기 > SQL' 카테고리의 다른 글
[기획자의 SQL] RDMBS 관계형 데이터베이스를 알아보자 (0) | 2023.10.16 |
---|---|
[기획자의 SQL] 기획자가 왜 SQL을 알아야 하는가? (0) | 2023.10.12 |
DB 설치없이 웹으로 SQL 연습하는 2가지 방법 (0) | 2023.05.24 |