SQL 간단 소개

yuns_u·2021년 9월 10일
0

⭐️ SQL(Structured Query Language)

  • SQL은 Structured Query Language 즉, '구조화된 쿼리 언어'의 약자이다.
  • SQL은 데이터베이스용 프로그래밍 언어이다.
  • SQL은 데이터베이스(DataBase) 언어의 기준으로 주로 관계형 데이터베이스에서 사용된다.
  • SQL은 데이터 구조가 고정되어 있는 데이터베이스에서 사용된다.
  • SQL은 MySQL, Oracle, SQLite, PostgreSQL 등 다양한 데이터베이스에서 볼 수 있다.
  • 데이터베이스의 종류를 SQL이라는 언어로 분류할 정도로 중요한 자리를 차지하고 있다.(NoSQL의 경우 데이터 구조가 고정되어 있지 않은 데이터베이스를 의미한다.)

데이터베이스(Data Base)와 그 필요성

데이터베이스는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다.

파이썬의 pandas나 numpy같은 라이브러리를 사용하거나 엑셀이나 CSV 등을 사용하는 대신 데이터베이스를 사용해야하는 이유는 무엇일까? 데이터베이스는 크게 두 측면에서 필요하다고 할 수 있다.


❗️ 데이터베이스의 필요성

1. In-Memory
파이썬에는 파이썬이 실행할 때에만 존재하는 데이터가 있다. 파이썬에서 변수를 만들어서 저장한다고해도 프로그램 실행이 종료가 되는 순간 해당 프로그램이 사용하던 데이터도 같이 없어진다. 이는 사용자가 원하는 데이터를 원하는 때에 꺼내오기 힘들어지고 데이터의 수명이 프로그램의 수명에 의존하게 된다는 단점이 있다.

2. File I/O (Input/Output)
파일을 읽어오는 방식으로 작동하는 엑셀이나 CSV같은 파일형태는 분명한 한계가 있다.

  • 파일을 매번 읽어와야한다. : 파일의 크기가 클수록 버거운 작업이 된다.
  • 파일이 복잡할수록 한계가 보인다. : 파일이 손상되거나 여러 파일을 동시에 다뤄야하는 등 복잡하고 데이터의 양이 많아질수록 버거운 작업이 된다.

또한 엑셀과 CSV 파일 등 특정 형태의 파일들은 대용량의 데이터를 저장하기 위한 목적이 있는 것이 아니기도 하다!

❗️ 관계형 데이터베이스의 장점

하지만 관계형 데이터베이스에서는 하나의 CSV 파일이나 엑셀 시트의 한 개의 테이블(Table)로 저장할 수 있으며 한 번에 여러 개의 테이블을 가질 수 있기 때문에 SQL을 통해 데이터를 가져오기 더 수월하다.


쿼리란? (Query) = 질의문

SQL은 데이터베이스용 프로그래밍 언어로 데이터베이스에 쿼리를 보내 원하는 데이터를 가져오는 언어이다.

또한 이름이세 유추할 수 있듯이 SQL은 Structured(구조화), 즉, relation이라고도 불리는, 데이터가 구조화된 테이블을 사용하는 데이터베이스에서 활용가능하다. 즉, 데이터베이스 중에서도 관계형 데이터베이스에서 주로 사용한다는 뜻이다.

반면 데이터 구조가 고정되어있지 않은 데이터베이스들은 NoSQL이라고 불린다.관계형 데이터베이스와는 달리 테이블을 사용하지 않고 다른 형태로 데이터를 저장한다. 예를 들자면 MongoDB와 같은 문서 지향 데이터베이스를 들 수 있다.

SQL의 종류

SQL은 데이터를 조회하고 테이블을 만드는 등의 다양한 문법이 존재한다. 그리고 쿼리에 따라 기능이나 작업이 달라진다. 즉, 역할에 따라 SQL의 종류가 나뉜다.

  • Data Definition Language (DDL) : 데이터를 정의하는 역할
  • Data MAnipulation Language (DML) : 데이터베이스에 데이터를 저장하는 역할
  • Data Control Language (DCL) : 데이터베이스에 대한 접근 권한
  • Data Query Language (DQL) : 정해진 스키마 내에서 쿼리를 할 수 있는 언어로 DML의 일부로 보기도 한다.
  • Transaction Control Language (TCL) : DML을 거친 데이터 변경사항을 수정

DDL (Data Definition Language)

데이터를 정할 때 사용되는 언어이다.
예를 들어 테이블을 만들 때 사용하는 CREATE나 테이블을 제거할 때 사용되는 DROP 등이 있다. 데이터베이스의 테이블과 같은 object를 정의할 때 사용된다.

DML (Data Manipulation Language)

데이터베이스에 데이터를 저장할 때 사용되는 언어이다.
예를들어 INSERT처럼 새로운 레코드를 추가할 때 사용되는 문접들이다.
데이터를 삭제하는 DELETE나 데이터를 변경하는 UPDATE등이 영기에 포함된다.

DCL (Data Controle Language)

데이터베이스에 대한 접근 권한과 관련된 문법이다.
어느 유저가 데이터베이스에 접근할 수 있는지 권한을 설정하거나 없애는 역할이다.
권한을 주는 GRANT와 권한을 가져가는 REVOKE 등이 포함된다.

DQL (Data Query Language)

정해진 스키마 내에서 쿼리를 할 수 있는 언어이다.
SELECT등이 대표적이며 언어로는 분류가 되지만 DQL을 DML의 일부분으로 말하고는 한다.

TCL (Transaction Control Language)

TCL은 DML을 거친 데이터 변경사항을 수정할 수 있다. 예를 들어 COMMIT처럼 DML이 작업한 애용을 데이터베이스에 커밋하거나 ROLLBACK처럼 커밋했던 내용을 다시 롤백하는 문법들이 있다.

profile
💛 공부 블로그 💛

0개의 댓글