[코드잇] SQL

silver0·2022년 9월 2일
0

코드잇

목록 보기
8/8

현대 사회에서 사람들은 매일 많은 양의 데이터를 만들어내고 있다.
데이터는 모두 관련 회사들의 데이터베이스에 저장된다.

데이터베이스란? 일정한 체계 속에 저장된 데이터의 집합이다.

데이터는 데이터베이스 안에서 테이블 단위로 저장된다.

데이터베이스 자체도 여러개를 만들면 아무리 방대한 데이터라도
체계적으로 저장할 수 있다.


데이터베이스에 저장된 데이터를 분석하는 방법

테이블의 row와 column

개체 하나를 나타내는 단위를 row(행)이라고 한다.

각 개체가 가지는 속성은 column(열)이라고 한다.

DBMS와 SQL

데이터베이스를 사용하려면 DBMS라는 프로그램이 필요하다.

  • DataBase Management System (데이터베이스 관리 시스템)

DBMS에도 다양한 종류가 있다.

  • MySQL, ORICLE, MS SQL Server, MariaDB, SQLite

각 DBMS마다 자신만의 특성을 갖고 있기 때문에 사용자는 자신의 상황에 알맞은 것을 골라서 쓰면된다.

데이터베이스를 처음 구축하는 것도 사용할 DBMS를 선택하는 것부터 시작한다.

DBMS가 내부적으로 알아서 미리 설계된 방식으로 데이터베이스를 생성한다.

모든 DBMS에는 SQL 언어로 명령을 내린다.

  • SQL : Structure Query Language

SQL은 국제 표준이 있어서 배워놓으면 어떤 DBMS를 사용할 수있지만
모든 DBMS가 이 표준을 완벽하게 지키지는 않는다는 것이다.

DBMS마다 표준과는 조금 다른 형식의 SQL문을 쓰거나
표준에 아예 없는 SQL문들을 지원하는 경우가 있다.

하지만 데이터를 다룰 때 필요한 대부분의 주요 기능들은 DBMS마다 큰 차이가 없다.

SQL의 역사

  • 1970년대 초, IBM은 System/R이라는 DBMS와, 이것을 사용하기 위해 필요한 언어인 SEQUEL을 만들었다.
  • SEQUEL은 structured English Query Language 의 줄임말로, '씨퀄'이라고 발음 되었다.
  • SEQUEL은 상표권 문제 때문에 SQL(Structured Query Language)로 변경되었다.
  • SQL은 그 뒤로 IBM, 오라클이라고 하는 회사 등에 의해 제각각 발전하기 시작했다.
  • 그러다가 1987년, 국제표준화기구(ISO)에서 SQL에 관한 국제표준(ISO 9075:1987)이 제정되었다.
  • 해당 표준은 기존 내용이 개정되고, 새로운 내용들이 추가됨으로써 발전해갔고, 2020년 6월 기준으로 2019년 개정안이 최신이다.

SQL은 공인된 국제 표준이 있지만 실제로 사용하는 SQL은 이 국제표준에 완벽히 부합하지 않는다.

  • Oracle, Microsoft SQL Server, MySQL 등의 DBMS에서 지원되는 SQL이 표준을 완벽히 준수하지는 않는다.
    각 DBMS의 SQL들은 SQL 국제 표준을 일부 준수하기는 하지만, 그 준수 정도가 각각 다르다.

예를 들어, 각 DBMS들은

  • 표준에 있는 기능을 지원하지 않거나
  • 표준에 있는 기능이더라도 다른 표현법을 사용하거나
  • 표준에는 없는 기능을 지원하는

등의 방식으로 표준을 조금씩 어기고 있고, 그 모습도 DBMS마다 다르다.

사람의 언어에 비유하자면, SQL 국제 표준이라는 '표준어'가 존재한다면 실제로 각 DBMS가 지원하는 SQL은 '사투리'처럼 조금씩 차이가 있는 것이다.

많은 DBMS 회사들이 '성능 향상'과 '더 다양한 기능 제공'을 위해서, 차라리 표준을 일부 벗어나는 것을 택하는 경우가 많기 때문이다.


MySQL

MySQL은 현재 페이스북, 유튜브 등을 비롯한 유명한 서비스에서도 활발히 사용되고 있는 DBMS이다.

MySQL은 가장 처음 MySQL AB라는 스웨덴 회사에서 개발되었다.
그뒤로 2008년, Sun Microsystems라는 회사에 인수되었는데,
Sun Microsystems는 지금 IT 분야에서 아주 중요한 프로그래밍 언어인 자바(Java)를 개발한 회사이다.
그리고 유닉스 계열의 솔라리스(Solaris)라고 하는 운영 체제를 만들기도 한 회사이다.

2010년에 Sun Microsystems는 Oracle이라는 회사에 인수되었고, 이에 따라 자연스럽게 MySQL 또한 Oracle의 소유가 되었다

그럼 Oracle은 어떤 회사일까?

Oracle은 회사명과 같은, 오라클이라는 DBMS를 서비스하고 있는 회사로, 오라클은 현재 기업용 데이터베이스 시장에서 압도적인 영향력을 발휘하고 있는 DBMS이다.

Oracle은 저작권을 매우 중요시하고, 기술을 상업화해서 이윤을 창출하는 능력으로도 유명한 회사이다.
Oracle은 구글이 자사의 자바 API를 무단으로 베껴서 안드로이드를 만들었고 이것은 '저작권 위반'이라고 주장하며 소송을 제기하기도 했다.
사실 Sun Microsystems가 Oracle에 인수될 때, 많은 사람들이 Oracle이 자사의 DBMS인 오라클의 영향력을 더 넓히기 위해 MySQL을 시장에서 퇴출시키지 않을까하는 걱정을 하기도 했다.
그래서 MySQL을 만들었던 초기 개발자들은 회사에서 나와 MariaDB라고 하는 오픈소스 프로젝트를 시작하기도 했고, 이 MariaDB 또한 오늘날 인기가 많은 DBMS 중 하나이다.

MySQL은 아직 오픈 소스 소프트웨어로 누구나 자유롭게 사용할 수 있다.

그런데 MySQL의 특이한 점은 Oracle의 상업용 라이센스로도 제공된다는 점이다. 보통의 경우에는 MySQL을 오픈 소스 소프트웨어로 생각하고 별다른 제한 없이 사용해도 되지만, 만약 오라클에서 제공하는 MySQL에 관한 추가 서비스, 상시 기술 지원 등을 원한다면 상업용 라이센스를 사야된다.

  • 만약 MySQL의 소스 코드를 가져다가 일부를 수정하고
  • 자신의 제품의 일부로 만들어서 재배포하는 상황에서
  • 그 소스코드를 공개하지 않으려는 기업이 있다면
    이 경우에도 상업용 라이센스가 필요하다.

Oracle은 자사의 기존 DBMS인 오라클과 기업 인수를 통해 얻게 된 MySQL을 둘다 잘 서비스하고 있다. 알려진 바에 따르면, 오라클과 MySQL 둘다 기술적으로 장단점이 다르고, 어떤 면에서는 상호보완적인 관계의 DBMS이기 때문에 Oracle에서 둘다 잘 관리해나갈 것으로 보인다는 이야기가 많다.

실제로 두 DBMS의 시장에서의 쓰임새를 보면 약간의 차이가 있다.
은행, 거래소 등과 같이 데이터 처리의 정확성, 운영의 안정성 등이 엄격하게 요구되는 분야에서는 오라클이 주로 사용되고 있고, 우리가 흔히 쓰는 앱, 웹 사이트 같은 서비스를 만들 때는 MySQL을 쓰는 경우가 많다.
이는 아무래도 오라클이 애초에 신뢰도가 중요한 비즈니스 분야에 적합하게 설계되어 있고, 해당 영역에서의 역사도 길기 때문이다.
대신 MySQL은 무료로 사용할 수 있고 좀더 가볍다는 점이 장점이다.

MySQL은 여러 DBMS 중에서도 특히 일반 사용자가 사용하기 편하다는 평가를 받는데 간단히 사용해볼 때 요구하는 컴퓨터 성능도 작은 편이라 부담이 덜하다. 게다가 IT 세계에서는 LAMP(Linux + Apache + MySQL + PHP/Perl/Python)라고 하는 개발 플랫폼의 조합이 이미 관용어가 됐을 정도로, 많은 개발자들이 보편적으로 쓰는 DBMS이기도 하다.


client(클라이언트 프로그램)

사용자가 server에 접속해서 원하는 데이터베이스 관련 작업을 할 수 있도록, SQL을 입력할 수 있는 화면 등을 제공하는 프로그램

server(서버 프로그램)

client로부터 SQL 문 등을 전달받아 데이터베이스 관련 작업을 직접 처리하는 프로그램


대부분의 DBMS가 client를 통해 server에 접속하는 구조
결국 DBMS를 사용한다는 것은,
실행되고 있는 server에 client를 이용해서 접속한 후, 원하는 명령을 내린다는 뜻

MySQL에서 서버 프로그램의 이름은 ‘mysqld’입니다. 이 프로그램이 실행되고 있을 때 사용자가 클라이언트 프로그램을 사용해서 접속하면 된다.

MySQL의 클라이언트 프로그램 이름은 ‘mysql’입니다.
mysql은 보통 CLI 환경에서 사용한다.

GUI와 CLI의 차이점

컴퓨터 사용 방식은 GUI와 CLI로 나눌 수 있다.

우리가 흔히 보는 윈도우 화면들은 Graphical User Interface(GUI) 환경이라고 한다.

유닉스와 리눅스 같이 키보드로 커맨드를 입력해서 사용하는 방식이다.
Command Line Interface(CLI) 환경이라고 한다.

초창기 컴퓨터는 그래픽을 표현하기 어려워서 텍스트로 그래픽을 대신하기도 했다.
그래픽이 생기기 전에 CLI만 있었고, GUI 환경이 생기고 컴퓨터가 본격적으로 대중화 되었다.

CLI 장점을 부각하고 싶을 때 CLI환경을 사용한다.
1. 성능
2. 명확성


  • 위 이미지는 CLI 환경에서 mysql(client)을 사용해서 server에 접속한 후, 데이터베이스 관련 작업을 하는 모습이다

CLI 환경이 아니라 GUI 환경에서 mysql을 사용하는 것도 가능하다.
mysql을 GUI 환경에서 사용할 수 있도록 해주는 프로그램을 사용하면 된다.
프로그램에는 여러가지가 있지만 그 중에서도 Oracle이 공식적으로 제공하는 MySQL Workbench라는 좋은 프로그램이 있다.

  • 위 이미지는 MySQL Workbench를 사용해서 server에 접속한 후, 원하는 데이터베이스 관련 작업을 하는 모습이다.


코드잇에서 무료 수강하며 학습한 내용을 정리한 글입니다.

profile
작은 일이라도 꾸준히 노력하면 큰 뜻을 이룰 수 있다

0개의 댓글

관련 채용 정보