5장. DBMS를 조작할 때 필요한 기본 지식 - 조작하기 전에 알아두어야 할 것
MySQL 설치
MySQL과 커넥션 만들기
로그인
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
...
mysql>
- 위는 '로그인 성공' 상태
- MySQL이라는 DBMS에 사용자가 로그인해서 조작할 수 있게 된 상황
- 로그인에 성공하여 커넥션과 세션이 성립되면 프롬프트(Prompt)가 표시됨
- 프롬프트(
mysql>
): 사용자로부터 명령을 입력받을 수 있는 상태
커넥션(Connection)
세션(Session)
- 커넥션의 시작과 종료 사이에 DBMS와 다양한 교환을 진행하는데, 그 교환의 시작과 종료까지의 단위가 세션(Session)
- 기본적으로 커넥션과 섹션은 1:1 대응되어 커넥션 성립 시 암묵적으로 세션이 시작되고, 세션을 끊으면 커넥션도 끊어지는 경우가 많으므로 세션과 커넥션을 잘 구분하지 않음
커넥션 상태 확인
mysql> show status like 'Threads_connected';
Thread_connected
의 값 = 사용자의 수
로그오프
- 커넥션 끊기
```sql
mysql> quit
```
SQL과 관리명령
- 데이터베이스를 조작하는 수단은 SQL 외에도 관리 명령이 있음
- SQL: 관계형 데이터베이스의 데이터를 조작하는 도구
- 관리 명령: SQL 이외 다양한 용도의 명령어
- DBMS가 정상적으로 동작하는지 감시 또는 DBMS가 이상한 동작을 할 때 문제 해결을 위한 정보수집 등의 용도
- 관리 명령의 종류나 문법은 DBMS에 따라 다름
관계형 데이터베이스의 계층
- 인스턴스 > 데이터베이스 > 스키마 > 오브젝트(테이블, 인덱스, 저장 프로시저 등)
- 트리 구조
인스턴스(Instance)
- 물리적 개념. DBMS의 동작 단위
- 메모리나 CPU를 사용하는 존재로 OS에 존재하는 '실체'
- OS 입장에서는 프로세스라고도 부름
- DBMS에 따라 서버 프로세스, 서버라고 부르기도 함
- 인스턴스 아래에 여러 개의 데이터베이스 존재 가능
- 한 개의 OS에서 인스턴스가 복수로 존재 하는 멀티 인스턴스 구성 가능
- 원칙적으로 (물리 자원이 충분하다면) 가능
- DBMS는 일반적으로 기동 시에 최저 한계의 메모리 공간을 확보하려고 하기 때문
- 1대의 인스턴스 내에 여러 데이터베이스를 만들거나, 가상화 환경을 사용하면 되므로 잘 사용하지 않음
데이터베이스(Database)
- '데이터베이스'는 데이터를 관리하는 기능의 집합체라는 의미 뿐만 아니라 '계층'을 표시하는 의미도 가짐
- 데이터베이스 아래에 여러 스키마 존재 가능
스키마(Schema)
- 스키마를 통해 테이블을 용도별로 나누거나 권한 관리 수행 가능
- 스키마 아래에 여러 테이블 존재 가능
오브젝트(Object)
- 최하위 계층
- 테이블(Table), 인덱스(Index), 저장 프로시저(Stored Procedure) 등
DBMS별 계층 구조
- 4계층 구조
- PostgreSQL, SQL Server, SB2
- 3계층 구조 : 스키마와 데이터베이스의 한 계층을 생략
- MySQL: 데이터베이스와 스키마를 동일한 것으로 간주 (동의어)
- Oracle: 4계층 구조로 되어있긴 하지만 인스턴스 아래에 데이터베이스를 한 개만 만들 수 있어 실질적으로 3계층 구조
- ANSI 표준으로 정해진 것은 4계층 구조
- 개발사의 의향에 따라 바뀔 수 있음