데이터베이스와 데이터베이스를 활용하기위한 SQL에 대해서 이해해보고 client program을 설치해보자.
✏️ 학습내용 정리
#Database란?
익숙한 듯 설명하기 어려운 Database. 일단 먼저 데이터와 데이터베이스?.. 비슷한 감이 든다. 정확한 차이는 무엇일까?
데이터가 더 먼저 있었던 개념이다. 데이터베이스라는 용어가 있기 전부터 우리는 데이터를 다루고 있었다.
(파일을 각각의 디스크에 저장해서 이용했던 과거)
그러나 개별적으로 파일을 관리하다보니 (별도로 디스크를 보관/관리) 파일을 다루는 관리실(EX. 부서)이 나뉘게 되면 통합적인 데이터 처리를 할 수 없어서 어려움을 겪는 경우가 많았다.
💡 어려움을 겪었던 예시(EX)
휴학중인 학생인지 재학중인 학생인지 도서관에서 분간이 필요할 때 행정실에서 처리한 내용을 도서관에서 바로 확인할 수 없었다.
학적상태에 대한 디스크 파일을 행정실이 갖고 있다보니 도서관에서는 파일에 접근해서 처리할 방법이 없었던 것
출처: 뉴렉처(https://www.youtube.com/@newlec1)
실시간으로 데이터를 확인할 수 없다는 불편함이 있었고, 또 데이터를 복사해서 가져갔었기 때문에, 한 곳에서 데이터를 수정하면 서로 다른 데이터값을 가지게 되는 경우가 생겼다. (결함이 있는 데이터를 가지고 처리를 하는 리스크 발생)
그래서 데이터를 base화하였고 이것을 관리하는 시스템을 사용하는 단계로 발전하기 시작했다.
(데이터를 base화 하여 중복이 되는 데이터를 없애는 방법으로 데이터를 관리하기 시작한 것.)
각자 가지고 있었던 데이터에서 중복되는 부분을 분리해서 공유해서 관리했다.
💡 중복이 있다는 뜻은 결함이 생길 리스크가 커진다는 뜻
#DBMS의 등장
중복을 제거한 뒤에 결함이 생길 리스크를 줄일 수 있었지만, 데이터를 추출할 때 어려운 상황이 생기게 되었다.
이전에는 한 파일에 모든 정보가 다 있었기 때문에 쉽게 읽어올 수 있었지만 데이터를 쪼개놓다 보니 쉽게 확인하기가 어려워진 것이다. (어떤 학생이 어떤 도서를 빌렸는지를 연결해서 확인 필요)
때문에 서로 연관있는 데이터들을 연결할 필요가 생기게 되었다.
출처: 뉴렉처(https://www.youtube.com/@newlec1)
또한 동시에 사용하게 될 경우(동시성)에 대한 처리 방법과 이 경우 누군가는 기다려야 하는 문제가 발생(성능)하는데 이런 것들을 처리해야 하는 방법도 필요하게 되었고, 여러 명이 데이터에 접근할 수 있게 되다 보니 보안에 대한 문제도 발생하게 되었다.
따라서 데이터를 각자 알아서 쓰자는 더 이상 불가능한 것이 되었고, 이를 관리해줄 시스템이 필요하게 되었다.
이것이 바로 database를 관리하는 시스템, 즉 DBMS가 등장하게 된 배경이 되겠다.
DBMS는 데이터베이스를 사용하기 위해서 무조건 필요한 시스템이다.
(동시성, 성능, 보안의 문제를 해결하기 위해서 무조건 필요)
그래서 우리는 더 이상 데이터를 각자 직접 관리하지 않는다.
DBMS에 부탁하는 방법으로 데이터에 CRUD하는데 이렇게 부탁하는 방법을 질의한다(Query)고 한다.
그러러면 질의하는 방법과 규칙화된 명령어가 필요하게 되는데 이때 사용되는 것이 바로 SQL이다.
#SQL(Structured Query Language)이란?
다시 정리하자면 SQL이란 DBMS(데이터베이스 관리시스템)에 질의를 하기위한 명령어(집합, 즉 언어)이다.
데이터베이스에 접근하기 위해서 다루어야 할 또 다른 형식의 언어가 되겠다.
💡 [참고] Query(질의)란?
"Query"는데이터베이스나 정보 시스템에서 데이터를 검색하거나 필터링하는 데 사용되는 요청 또는 질문을 나타내는 용어이다. 즉, 사용자가 원하는 정보를 얻기 위해 데이터베이스나 시스템에 보내는 명령어나 문장을 말한다.
예를 들어,웹 검색 엔진을 사용할 때 사용자가 검색 창에 입력한 검색어가 query가 된다. 데이터베이스 관리 시스템에서 특정 조건에 맞는 레코드를 검색하려면 적절한 query를 작성하여 실행해야 하는데, Query는 데이터를 정확하게 필터링하고 검색하여 사용자에게 필요한 정보를 제공하는 데 도움이 된다.
Query는 데이터베이스 쿼리 언어(SQL)와 같은 특정 언어를 사용하여 작성되며, 이 언어를 사용하여 데이터베이스와 상호작용하고 원하는 정보를 추출하거나 조작할 수 있다.