brunch

You can make anything
by writing

C.S.Lewis

by 채은 Jun 17. 2024

SQL 도전!기초개념 총정리

PM의 별책부록 007

지난 주에 도서 [그로스해킹]을 읽으며 진정한 데이터 드리븐이 무엇인지 다시 한 번 깨닫게 되었다.

데이터의 중요성이야 알고는 있었지만, 관습적으로 이해하고 있는 것보다 데이터의 세계는 깊고 넓고 심오했다.

그래서 더 넓고 깊이 공부해 그 심오한 파도를 타보고 싶다는 생각이 들어 SQL 공부를 시작했다.

오늘은 실무를 위한 기본지식을 정리해보았다.

비전공자들을 위한 베이직한 용어 정의에 가까운 내용이니 SQL이 뭔지나 알고 싶다, 는 마음이라면 읽어볼만 할 것이다.




| SQL(Structured Query Language)이란?


관계형 데이터베이스 조작을 위해 만들어진 표준 언어이다.

데이터 베이스 시스템과 통신하기 위한 언어라고 정의할 수 있다.

데이터베이스에서 원하는 조건으로 데이터를 추출/조작하기 위한 명령문을 쿼리(Query)이라고 한다.

즉, 쿼리를 작성한다는 말의 의미는 '데이터베이스에서 데이터를 추출/조작하기 위한 조건'을 작성한다는 말과 같다.



| 데이터베이스(DB) 종류


흔히 DB라 부르는 데이터베이스는 어떠한 형태의 자료 구조를 사용하는지에 따라 종류가 다르다.

계층형 구조, 네트워크형 구조, 관계형 구조들이 있는데, 앞서 말했다시피 SQL은 '관계형 데이터베이스'를 조작하기 위한 언어이다보니 SQL을 공부하면서는 관계형 구조의 DB를 다루게 된다.


관계형 구조의 DB를 줄여서 RDB(Relational Data Base)라고 하는데,

이를 매니징하는 시스템 중 흔히 쓰는 것이 오라클, MySQL, 클라우드 기반의 구글 빅쿼리 등이 있다.

차차 알아가겠지만 툴이란 게 다 그렇듯이 모든 툴을 다 알아야할 필요는 없다. 

내 손에 익어서 잘 쓸 수 있는 툴 하나가 있으면 베리에이션은 쉽다.



| RDB의 구조


관계형 데이터베이스라는 말이 어려웠다면 안심해도 된다.

우리가 가장 흔히 아는 '엑셀/스프레드시트'가 대표적인 관계형 DB이기 때문이다.

(그래서 엑셀을 잘 쓰는 사람에게 그나마 SQL이 쉽다고 한다)

행(로우)과 열(컬럼)이 있고, 필드에 값이 입력되어있는 테이블의 형태이다.


출처 : https://bitnine.net/


테이블의 고유성을 대표하며 고유의 값을 쌓는 컬럼을 Primary Key (PK)라고 하고,

다른 테이블의 PK와 연결되어 있는 외래키를 Foreign Key (FK)라고 한다.

위의 이미지를 참고하자면 Passengers 테이블의 PK는 'ID'이고, Users 테이블의 Email과 연결되는 FK가 DB에 포함되어 있는 관계임을 알 수 있다.



| SQL의 종류


이러한 SQL의 종류에도 몇 가지가 있는데, 크게 DML, DDL, DCL, TCL 네가지로 구분한다.

벌써 머리가 아프고 숨이 막혀오겠지만 일단 안심해도 된다.

PM이 주로 사용하는 SQL은 DML이 대부분이라고 할 수 있기 때문이다.

그래도 어디에 쓰는건지 간단히 훑고 넘어가보자.


DML

데이터를 조작하는 언어. 데이터를 조회하거나 수정, 삭제할 때 쓰인다.
(Select, Inesert, Update, Delete등의 구문)

DDL

데이터 테이블의 구조를 정의하기 위한 언어. 새로운 행을 삽입하거나 테이블을 수정, 삭제할 때 사용한다.
(Create, Alter, Drop, Rename 등의 구문)

DCL

데이터베이스에 대한 접근 권한 제어에 사용하는 언어로 시스템 보안에 관여하는 한정적인 사람들만 사용한다.
(Grant, Reboke 등)

TCL

DCL 중에서도 트랜젝션을 제어하는 언어이다. 따로 나누지 않고 DCL로 구분하기도 한다.
(Commit, Rollback, Savepoint 등)




| 마지막으로.. 엔터티와 인스턴스 그리고 어트리뷰트


위의 내용까지는 고개를 끄덕이다가 순간 멈칫하게 되는 구간이 바로 엔터티의 등장이다.

하지만 용어는 생소해도 개념은 그리 어렵지 않으니 익숙해지면 금방 이해가 되는 내용이다.

우선 아래 이미지를 보고 놀란 가슴을 쓸어내리자. 우리가 모르는 개념이 아니다.

이미지출처 : 본인


엔터티와 인스턴스 (Entity - Instance)

엔터티는 업무에서 필요하고 유용한 정보를 저장하고 관리하기 위한 그룹이다.

인스턴스는 엔터티 하의 각 항목, 그리고 그 항목의 집합이라고 할 수 있다.

엔터티는 다음과 같이 다섯가지의 특징을 가지고 있다.

① 업무에 필요한 개념이어야 하며, 실제로 업무에서 사용되어야 의미가 있음
② 식별자로 식별이 가능해야 함 (동일한 식별 코드 사용할 수 없음)
③ 두 개 이상의 인스턴스의 집합 (하나라면 엔터티로 구성할 필요가 없음)
④ 세부 인스턴스, 속성을 포함해야 함
⑤ 반드시 관계가 필요함 (연관있는 타 엔터티와의 관계가 중요)


속성 (Attribute)

인스턴스로 관리하고자 하는 의미상 더이상 분절되지 않는 최소의 데이터 단위이다.

① 업무에 필요한 개념이어야 함
② 의미상 더 이상 분리되지 않아야 함
③ 엔터티를 설명하며 인스턴스의 구성요소가 됨


다소 복합해보이는 이 관계의 조건을 정리하면 다음과 같다.

ERD를 그릴 때 주로 사용하는 까마귀발 표기법(IE/Crow's Foot)을 사용했다.

( 이건 다음 시간에 더 자세히 알아볼 예정이다 )


투비 컨티뉴우우 >


SQL의 가장 기본이 되는 기초지식은 이정도가 끝이다.

각 항목에 대한 디테일한 내용들이 잔뜩 남아있지만, 일단 여기까지 알았다면 첫 발은 뗀 것이다.

해볼만 하다는 생각이 들었다면 망설이지 말고 시작하기를!

나도 열심히 공부해서 더 심화된 SQL 별책부록을 들고 올테니 모두모두 화이팅!

작가의 이전글 그로스해킹, 정말 알고 계신가요?
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari