MySQL과 커넥션 만들기

로그인의 의미

  • DB를 조작하려면 먼저 로그인을 해야함
  • 명령프롬프트 창에 mysql>이 표시되면 로그인 성공
    • mysql>프롬프트(Prompt)라고 함
    • MySQL이라는 DBMS에 사용자가 로그인해서 조작할 수 있는 상태

커넥션이란

  • 커넥션(Connection) : 사용자와 MySQL이 접속, 연결된 상태

Prompt의 의미

  • (사람에게) 무언가를 하라고 재촉할 때 사용하는 말
    • mysql>이란 MySQL이 사용자에게 명령을 입력하고 재촉하는 것

데이터베이스에 전화 걸기

커넥션의 이미지는 전화

  • 커넥션은 전화와 비슷함
1.상대방의 전화번호를 입력 -> 2.전화 연결 -> 3.상대방이 전화를 받음
  • 위에 3단계를 통해서 만들어진 연결이 커넥션
    • 커넥션이 유지되는 한 사용자는 DB와 무언가를 주고 받을 수 있음
  • 로그인은 상대방을 호출하는 행위와 같음

  • MySQL에 커넥션이 성립되었음을 표시하는 문장
Your MySQL connction id is 11
  • connection id는 MySQL이 커넥션에 붙인 번호
  • MySQL은 동시에 여러 개의 커넥션 유지 가능(동시에 복수의 사용자와 연결 가능)
  • 커넥션의 시작과 종료 사이에 DBMS와 다양한 교환을 하게됨
    • 교환의 시작과 종료까지의 단위를 세션(Session)이라고 함
    • 커넥션이 확립된 후 세션이 만들어짐

커넥션과 전화의 유사점

  • 전화는 잘못된 번호로 상대방에게 전화를 걸면 연결이 안됨
  • DB에서 로그인할 때 패스워드 틀리면 MySQL과 연결할 수 없음 -> 입력 오류

커넥션과 전화의 차이점

  • 전화는 1:1 연결만 가능하고 통화 중이면 다른 사람이 전화연결 불가능
  • DB는 동시에 복수의 사용자와 커넥션 해서 병행처리 가능

커넥션 상태를 조사하는 명령

  • 거의 모든 DBMS에는 커넥션의 상태 or 수를 조사하는 명령어(커맨드) 있음
    • MySQL의 경우 show status
mysql> show status like 'Threads_connected';

전화를 끊다 - 로그오프

  • 전화를 거는 것이 로그인, 전화를 끊는 것이 로그오프
  • 로그오프를 하면 MySQL과 커넥션이 끊김
    • 프롬프트에서 quit을 입력하면 로그오프됨
mysql> quit
Bye

SQL과 관리 명령의 차이

관리 명령이란

  • DBMS는 SQL 이외에 다양한 용도의 명령어를 준비해 두고 있음
    • 이 명령어를 관리 명령이라고 함
    • ex) show status
ex) MySQL 가동된 시점부터 경과시간()
mysql> show status like 'Uptime';

ex) MySQL 실행한 SQL 문의 
mysql> show status like 'Queries';

관리 명령에서 기억해야 할 점

  • 관리 명령은 DBMS이 정상 동작하는지 or 이상한 동작 발생하면 문제 해결을 위한 정보수집 등의 용도로 사용됨

관리 명령에서 중요한 점 2가지

  • DBMS는 SQL 문 이외에도 관리 명령이 있음
  • 관리 명령의 종류나 문법은 DBMS에 따라 다름
    • SQL 문은 표준 구문으로 MySQL 이외의 DBMS에서 공통적으로 사용 가능

SQL 문과 관리 명령 구분 방법

  • SQL 문은 반드시 SELECT, INSERT, DELETE, UPDATE 중 하나의 단어로 시작
  • 이 외의 단어로 시작하면 관리 명령

관계형 데이터베이스의 계층

데이터베이스는 계층으로 나뉘어 있다

  • DB를 사용한다는 것은 DBMS에 저장된 테이블을 SQL로 조작하는 것
  • DB 내부의 테이블은 몇 개의 그룹으로 나뉘어서 관리됨
    • PC의 파일을 분류하기 위해 사용하는 폴더(디렉터리)와 같음

폴더에 해당하는 스키마

  • DB에서 이 폴더에 해당하는 것이 스키마(Schema)
    • 스키마는 이라는 의미
  • 테이블은 몇 개의 스키마 속에 저장되는 형식
  • 스키마는 폴더처럼 사용자가 자유롭게 생성할 수 있고 용도별로 나누거나 특정 사용자가 접근할 수 없도록 권한 관리 수행 가능
  • 스키마의 상위 계층으로 데이터베이스(DB, Database)가 있음

최상위에 있는 인스턴스

  • DB보다 한 층 더 위에 있는 인스턴스(Instance)
    • DBMS에 따라서는 이것을 서버 프로세스 or 서버라고 부름
    • 메모리나 CPU를 사용하는 존재로 OS에 존재하는 실체
    • OS 입장에서 프로세스라고 부름

4계층에 있는 것

  • 최하위 계층인 4계층에는 테이블 이외에 인덱스(Index), 다양한 함수나 처리를 일괄로 다루는 저장 프로시저(Stored Procedure) 등
    • 이런 DB에 보존된 것들을 총칭해서 오브젝트(Object)라고 함
      • 테이블도 오브젝트의 일종
  • 인스턴스도 복수로 존재할 수 있음 -> 멀티 인스턴스

계층 구조가 이해하기 어려운 이유

  • 4계층의 원칙을 충실히 지키는 DBMS는 PostgreSQL, SQL Server, DB2
  • 스키마와 DB 한 계층을 생략해 3계층이 MySQL, Oracle

MySQL과 Oracle의 계층 구조

  • MySQL은 DB와 스키마를 동일한 것으로 간주함
    • DB와 스키마는 MySQL에서는 동의어
    • MySQL의 계층은 3계층 구조

  • Oracle은 4계층 구조이지만 인스턴스 아래에 DB를 한 개만 만들 수 있다는 제약이 있음
    • 실질적으로 인스턴스 아래에 DB없이 스키마 층이 존재하는 듯한 인상을 줌

  • 3계층 : Oracle, MySQL
  • 4계층 : SQL Server, DB2, PostgreSQL

3계층과 4계층 어느 쪽이 맞는가

  • 4계층이 ANSI가 정한 표준 SQL로 결정되어 있음
  • 3계층 사양에도 특별한 불편함 없음
  • DBMS를 변경할 경우 혼란이 올 수 있음
    • ex) Oracle -> SQL Server로 변경 (왜 DB가 생겼지?)
    • ex) PostgreSQL -> MySQL로 변경 (왜 스키마와 DB가 같지?)

느낀점

  • 커넥션과 세션이라는 용어를 알게되었고, 관계형 데이터베이스 계층 구조로 나눠져있고 계층 구조에 따른 DBMS의 분류를 알 수 있었다. 그리고 SQL과 관리 명령의 차이를 알 수 있어서 다음부터는 헷갈리는 없을 것 같다.

reference

데이터베이스 첫걸음