혼자 공부하는 SQL (01-1,2)

Sea Panda·2022년 9월 23일
0

혼자 공부하는 SQL

목록 보기
1/5

SQL공부도 시작했다. 이거는 아이패드로 안할거다. 너무 힘들다. 적는 거...파이썬 책이 끝나면 아이패드로 정리할 수 있을 거 같다.

01-1 데이터베이스 알아보기

  • 핵심 키워드: 데이터 베이스 DBMS 테이블 SQL

1. 데이터베이스(DB, Database)

'데이터의 집합'이라고 할 수 있다. 일상생활 대부분의 정보가 저장되고 관리되는 곳이다.

2. DBMS(Datbase Mangement System)

데이터를 운영/관리하는 프로그램을 통칭한다. DBMS는 2가지의 조건이 있다. 첫 번째는 대용량의 데이터를 관리할 수 있어야한다. 두 번째는 여러 사용자와 공유할 수 있어야한다. 따라서 엑셀은 DBMS라고 할 수 없다.

DBMS에는 여러 종류가 있으며 다음과 같다. 소프트웨어 각각의 사용 방법과 특징이 다르지만 어떤 것을 사용해도 무방하다.

3. DBMS의 발생과정

  • 컴퓨터 발명 이전: 종이에 펜으로 기록

  • 컴퓨터 발명 이후: 엑셀과 같은 스프레드시트 프로그램을 사용. 파일(file)이라는 형태로 저장해 필요할 때마다 열어서 사용할 수 있었다. 하지만 엑셀의 경우 저장한 파일은 한 번에 한 명의 사용자만 열어서 작업할 수 있고, 대용량 데이터를 다루기에는 문제가 있다. 이 때문에 여러명이 각자의 파일을 만들어서 작업할 수 밖에 없었다.

  • DBMS의 대두와 보급: 앞에 언급한 파일의 단점을 보완하면서 대량의 데이터를 효율적으로 관리하고 운영하기 위해서 등장한 것이 DBMS이다. 1973년에 에드거 프랭크 커드(E.F Codd)라는 학자가 최초로 DBMS의 이론을 정립했다. 그 후 많은 DBMS 제품이 만들어졌다.

    DBMS에서 사용되는 언어를 SQL(Structured Query Language,구조화된 질의언어)라고 한다. 이 SQL을 통하여 DBMS의 중요한 정보를 입력, 관리하고 추출할 수 있다.

4. DBMS의 분류

1. 계층형 DBMS


계층형 DBMS(Hierarchical DBMS)는 가장 먼저 등장한 DBMS개념이다. 각 계층은 트리(tree)형태를 가진다. 이 계층형DBMS의 문제는 처음 구성을 완료한 후 이를 변경하기가 상당히 까다롭다는 문제가 있다. 또한 다른 구성원을 찾아가는 것이 비효율적이다. 지금은 사용하지 않는 형태이다.

2. 망형 DBMS


망형 DBMS(Network DBMS)는 계층형 DBMS의 문제점을 개선하기 위해 등장했다. 하위에 있는 구성원들끼리도 연결된 유연한 구조이다. 하지만 망형 DBMS를 잘 활용하려면 프로그래머가 모든 구조를 이해해야만 프로그램이 작성 가능다하는 단점이 존재한다. 이 역시 지금은 거의 사용하지 않는 형태다.

3. 관계형 DBMS


관계형 DBMS(Relational DBMS)는 줄여서 RDBMS라고 부른다. RDBMS의 데이터베이스는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 하나 이상의 열(column)행(row)으로 이루어져있다. RDBMS에서는 모든 데이터가 테이블에 저장된다. 현재 사용하는 대다수의 DBMS가 이 RDBMS이기 때문에 DBMS라하면 보통 RDBMS를 의미한다.

5. DBMS에서 사용되는 언어:SQL

SQL(Structured Query Language,구조화된 질의언어)은 관계형 데이터베이스에서 사용되는 언어로, '에스큐엘' 또는 '시퀄'로 읽는다.

SQL은 국제표준화기구에서 SQL에 대한 표준을 정해서 발표하며 이를 표준SQL이라고 한다. DBMS를 만드느 회사에서는 되도록 표준SQL을 준수하되, 각 제품의 특성을 반영한 SQL을 사용한다.

각 회사마다 변경된 SQL을 오라클은 PL/SQL,SQL Sever는 T-SQL, MySQL은 SQL로 부른다.

이 책에서는 표준 SQL위주로 설명한다.

01-2 MySQL설치하기

설치의 경우 따로 내용을 정리할 정도는 아닌것 같다. 혹시 나중에 다시 다 지우고 깔일이 있을지도 모르니, 주소를 남긴다.

❗ 추가내용

  • SQL은 programing language가 아닌 domain-specific language이다.

  • domain-specific language: 도메인 특화 언어로 특정한 도메인을 적용하는데 특화된 컴퓨터 언어를 의미한다. SQL이나 CSound등이 있으며, 내부 DSL과 외부 DSL로 구분 가능하다.

    내부 DSL: 특수한 목적을 위해 제한된 방법으로 호스트 언어를 사용하는 방식으로, 사용하던 도구를 그대로 이용할 수 있고 처리 결과를 쉽게 예측할 수 있다.

    외부 DSL: 호스트 언어가 아닌 다른 언어에서 생성된 DSL이다. 대부분 자체적인 문법을 가지지만 기존 언어의 문법을 쓰는 예도 있다. 또한, 외부 DSL개발자는 DSL의 형식을 자유롭게 정할 수 있다.

    즉 DSL은 특정 영역의 문제 해결을 위하여 그 영역에 맞는 특화된 도구라고 할 수 있다. Programing laguage처럼 시스템이나 소프트웨어를 구동시키기 위한 언어가 아닌 것이다.

0개의 댓글