SQL 프로그램 종류 - SQL peulogeulaem jonglyu

⭐️ 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처럼 커밋했던 내용을 다시 롤백하는 문법들이 있다.

  •  업무를 하는 데 이용할 수 있는 일반적인 RDBMS은 많습니다. 이 안내서는 가장 널리 쓰이는 몇 가지 RDBMS의 짤막한 개요를 제공합니다. 앞으로 언급할 RDBMS들의 기본 특징을 비교하는 것은 여러분에게 도움이 될 것입니다.

    1. MySQL
       MySQL은 스위스 회사인 MySQL AB에서 개발한 오픈소스 SQL 데이터베이스의 하나입니다. MySQL은 "sequel"(시퀄)이라고 발음하는 것과 다르게 "my ess-que-ell."(마이 에스큐엘)이라고 발음합니다.

       MySQL은 마이크로소프트 윈도우, 주로 쓰이는 리눅스 배포판, 유닉스, Mac OS 등을 포함한 수많은 다양한 플랫폼들을 지원하고 있습니다.

       MySQL은 특성과 용도(상업적/비상업적)에 따라 무료 버전과 유료 버전을 가지고 있습니다. MySQL은 매우 빠른 속도, 멀티스레드, 다중 사용자 지원, 튼튼한 데이터베이스 서버 등의 특징이 있습니다.

      MySQL의 역사:
       * 1994년 Michael Widenius와 David Axmark에 의해서 개발 시작
       * 1995년 5월 23일 첫번째 내부 출시
       * 1998년 1월 8일 윈도우 95와 NT를 위한 윈도우 버전 출시
       * 3.23 버전: 2000년 6월 베타 버전이 나오고, 2001년 1월 정식 출시
       * 4.0 버전: 2002년 8월 베타 버전 출시, 2003년 3월 정식 출시(통합)
       * 4.01 버전: 2003년 8월 베타 버전 출시, 데이터베이스 추적(Tracking)을 위해 Jyoti가 MySQL을 채택함
       * 4.1 버전: 2004년 6월 베타 버전 출시, 2004년 10월 정식 출시
       * 5.0 버전: 2005년 3월 베타 버전 출시, 2005년 10월 정식 출시
       * 2008년 1월 26일 Sun Microsytems에서 MySQL AB를 매입
       * 5.1 버전: 2008년 11월 27일 출시

      MySQL의 특징
       * 높은 업무 수행 능력
       * 높은 사용 가능성
       * 어떤 것이든 실행할 수 있는 확장성과 유연성
       * 튼튼한 트랜잭션 지원
       * 웹과 데이터 웨어하우스의 견고함
       * 강력한 데이터 보호
       * 포괄적인 어플리케이션 개발
       * 관리에 용이함
       * 오픈소스의 자유도와 24시간 지원
       * 저렴한 비용

    2. MS SQL Server
       MS SQL 서버는 마이크로소프트 사에서 개발한 관계 데이터베이스 관리시스템입니다. MS SQL에서 주로 사용하는 질의어는 다음과 같습니다.
       * T-SQL
       * ANSI SQL

      MS SQL의 역사:
       * 1987 - 유닉스를 위한 Sybase SQL Server 출시
       * 1988 - 마이크로소프트, Sybase와 Aston-Tate에서 SQL Server를 OS/2로 복사
       * 1989 - 마이크로소프트, Sybase와 Aston-Tate에서 OS/2를 위한 SQL Server 1.0을 출시
       * 1990 - SQL Server 1.1이 윈도우 3.0 클라이언트를 위한 지원 기능으로 출시
       * Aston-Tate가 SQL Server 개발에서 나옴
       * 2000 - 마이크로소프트에서 SQL Server 2000 출시
       * 2001 - 마이크로소프트에서 SQL Server Web Release 1(다운로드용)을 위한 XML 출시 
       * 2002 - 마이크로소프트에서 SQLXML 2.0 출시 (SQL Server를 위한 XML에서 명칭 변경)
       * 2002 - 마이크로소프트에서 SQLXML 3.0 출시
       * 2005 - 2005년 11월 7일 마이크로소프트에서 SQL Server 2005 출시

      MS SQL의 특징
       * 높은 업무 수행 능력
       * 높은 사용 가능성
       * 데이터베이스 미러링 (Database Mirroring)
       * 데이터베이스 스냅샷 (Database Snapshots)
       * CLR 통합 (integration)
       * 서비스 브로커
       * DDL 트리거
       * Ranking 함수
       * 행 버전 기반의 독립 레벨 (Row version-based isolation levels)
       * XML 통합
       * TRY .. CATCH 문
       * 데이터베이스 메일 (Database Mail)

    3. ORACLE
      오라클은 규모가 매우 크며, 다중 사용자가 사용할 수 있는 데이터베이스 관리 시스템입니다. 오라클은 'Oarcle Corporation'에서 개발한 관계 데이터베이스 관리 시스템입니다. 

       오라클은 여러 클라이언트가 네트워크의 데이터를 요청하고 전송하는 정보 데이터베이스 자원을 효율적으로 관리하는 일을 합니다.

       오라클은 클라이언트/서버 컴퓨팅을 위한 데이터베이스 서버로서 탁월한 선택입니다. 오라클은 MSDOS, NetWare, UnixWere, OS/2와 대부분의 UNIX 기반 운영체제를 포함한 클라이언트와 서버로 사용하는 모든 주요 운영체제를 지원합니다.

      ORACLE의 역사
       오라클은 1977에 시작되었고, 기업에서 32주년(1977년부터 2009년까지)을 기념했습니다.

      * 1977 - Larry Ellison, Bob Miner와 Ed Oates는 오라클 개발에 착수하기 위해 Software Development Laboratories를 설립했습니다.
      * 1979 - 오라클의 2.0 버전이 출시되었고, 오라클은 최초의 금융 관계 데이터베이스이자 최초의 SQL 데이터베이스가 되었습니다. 이 회사는 Relational Software Inc. (이하 RSI)로 이름을 변경했습니다.
      * 1981 - RSI는 오라클을 위한 툴을 개발하기 시작했습니다.
      * 1982 - RSI는 Oracle Corporation으로 개명했습니다.
      * 1983 - 오라클은 여러 플랫폼에서 실행할 수 있도록 C 언어로 다시 쓴 3.0 버전을 출시했습니다.
      * 1984 - 오라클은 동시 실행 제어 - 다중 버전 읽기 일관성 등과 같은 특징을 포함한 4.0 버전을 출시했습니다.
      * 2007 - 오라클은 보다 쉬운 파티셔닝, 쉬운 마이그레이션 등에 중점을 둔 새로운 버전인 Oracle 11g를 출시했습니다.

      Oracle의 특징
      * 동시성
      * 읽기 일관성
      * Locking Mechanism
      * 작업 거부(Quiesce) 데이터베이스
      * 이식성
      * 자기관리 데이터베이스
      * SQL*Plus
      * ASM
      * 스케줄러
      * 자원 관리자
      * 데이터 웨어하우징 (Data Warehousing)
      * 구체화된 뷰
      * 비트맵 인덱스
      * 테이블 압축
      * 병렬 실행
      * Analytic SQL
      * 데이터 마이닝
      * 파티셔닝

    4. MS ACCESS
       MS ACCESS는 가장 대중적인 마이크로소프트 제품 중 하나입니다. 마이크로스프트 엑세스는 초보자용 데이터베이스 관리 소프트웨어입니다. MS ACCESS 데이터베이스는 저렴할 뿐 아니라 작은 규모의 프로젝트를 위한 강력한 데이터베이스입니다.

       MS ACCESS는 Jet 데이터베이스 엔진을 사용합니다. 이 엔진은 특정 SQL 언어 방언(Jet SQL이라고도 함)을 사용합니다.

       MS ACCESS는 MS Office 패키지의 Professional edition에 딸려 있습니다. MS ACCESS는 사용하기 쉬운 직관적인 그래픽 인터페이스를 가지고 있습니다.

      MS ACCESS의 역사

       * 1992 - 1.0 버전 출시
       * 1993 - ACCESS Basic 프로그래밍 언어를 포함한 호환성 향상을 위한 1.1 버전 출시
       * Access 97에서 Access 2000으로 넘어가는 과정에서 눈에 띄는 변화가 있었습니다.
       * 2007 - Access 2007, 다중 값을 가지는 부가 필드와 같은 복합적인 데이터 형식 지원하는 새로운 데이터베이스 포맷인 ACCDB를 소개했습니다.

      MS ACCESS의 특징

        * 사용자는 보고서, 양식, 질의, 테이블을 생성할 수 있고 이것들을 매크로로 만들 수 있습니다.
       * 엑셀, 아웃룩, ASCII, dBASE, Paradox, FoxPro, SQL 서버, 오라클, ODBC 등을 포함한 다양한 형식의 데이터 삽입 및 추출이 가능합니다.
       * 또 MS ACCESS에는 응용 프로그램과 데이터를 하나의 파일에 담을 수 있는 Jet 데이터베이스 포맷(ACCESS 2007의 MDB 또는 ACCDB)이 있습니다. 이는 전체 응용 프로그램이 연결되지 않은 환경에서 실행하는 다른 사용자에게 배포하는데 매우 편리합니다.
       * 마이크로소프트 엑세스는 매개 변수화한(parameterized) 쿼리를 제공합니다. 이 쿼리와 Access 테이블은 VB6(비주얼베이직)과 .NET(닷넷)과 같은 다른 프로그램에서 DAO 또는 ADO로 참조할 수 있습니다. 
       * Microsoft SQL Server의 데스크탑 에디션에서는 Access를 Jet Database 엔진의 대체제로 사용할 수 있습니다.
       * 마이크로소프트 Access는 서버 기반의 데이터베이스 파일입니다. 클라이언트 - 서버 관계 데이터베이스 관리 시스템(RDBMS)와는 다르게 마이크로소프트 Access는 데이터베이스 트리거, 저장 프로시저(stored procedure) 또는 트랜잭션 로깅(transaction logging)를 실행할 수 없습니다.