데이터 사전 검색
생성된 테이블의 목록, 테이블의 구조와 제약 조건을 파악하기 위해 데이터 사전을 조회하는 명령문을 작성할 수 있다.
데이터 사전
1. 데이터 사전 개념
데이터 사전(Data Dictionary)에는 데이터베이스의 데이터를 제외한 모든 정보가 있다. 데 이터 사전의 내용을 변경하는 권한은 시스템이 가지며, 사용자에게는 읽기 전용 테이블 형태로 제공되므로 단순 조회만 가능하다. 데이터를 제외한(데이터를 구성하는) 모든 정보라는 것은 데이터의 데이터를 의미한다. 따 라서 데이터 사전은 메타데이터(Meta data)로 구성되어 있다고 할 수 있다.
2. 데이터 사전 내용
데이터 사전 안에 존재하는 메타데이터의 유형은 다음과 같다.
• 사용자 정보(아이디, 패스워드 및 권한 등)
• 데이터베이스 객체 정보(테이블, 뷰, 인덱스 등)
• 무결성 제약 정보
• 함수, 프로시저 및 트리거 등
데이터 사전 내용이 메타데이터라는 것은 모든 DBMS 제품에 공통이지만 데이터 사전을 구
현하는 방법, 관리하는 방법 등의 차이로 메타데이터의 구체적인 내용은 제품마다 다르다
3. 데이터 사전 용도
사용자에게 데이터 사전은 단순 조회의 대상일 뿐이다. 하지만 데이터베이스 엔진을 이루 는 컴파일러, 옵티마이저 등과 같은 구성 요소에 데이터 사전은 작업을 수행하는 데 필요 한 참조 정보일 뿐만 아니라 작업의 대상이기도 하다.
데이터 사전 검색
1. 오*에서 데이터 사전 검색
오* 사용자는 뷰로 데이터 사전에 접근할 수 있다. 오*에서 데이터 사전과 관련된 뷰는 세 가지 영역이 있으며, 이때 오브젝트에 접근할 수 있는 사용자 권한에 따라 다음과 같 이 구분된다.
DBA_ > ALL_ > USER_
오*에서는 이와 같은 영역 지시자 뒤에 오브젝트명을 붙이는 형태로 뷰의 이름이 결정된 다. 여기서 오브젝트는 테이블, 뷰, 인덱스와 같은 것을 의미하므로 다음과 같은 영역별 조회문 구성이 가능하다.
2. M*-SQL에서 데이터 사전 검색
데이터 사전은 테이블 형태로 구성되어 있다. 따라서 테이블의 내용을 검색하기 위해서는 해당 테이블의 위치와 이름을 정확히 알고 있어야 한다. 여기서 위치는 데이터베이스를 의미한다. M*-SQL에서 데이터 사전은 Information_schema라는 데이터베이스 안에 존재한다. 따라서 이 안의 테이블을 조회하기 위해서는, 우선 해당 데이터베이스로 이동해서 테이블 목록을 요청해야 한다.
• use Information_schema; -- 이동
• show tables; -- 테이블 목록 보기
테이블 목록으로 데이터 사전을 구성하는 테이블이름을 확인하고, SELECT 문을 통해 해 당 테이블의 내용을 조회할 수 있다
SQL 개요
이제까지 기본적인 SQL 활용 방법에 대해 알아보았다. DDL, DML DCL 각 용도에 따라 SQL 명령문의 사용법을 살펴보며, 데이터베이스 제품에 따라 구체적인 SQL 사용 방법에 차이가 있는 것을 역시 살펴보았다. 왜 이러한 현상이 발생하는지에 대한 이해를 위해 SQL에 대해 알아볼 필요가 있다. 또한 SQL 자체에 대한 이해는 향후 학습 과정에 도움이 되기에 이러한 과정은 반드시 필요하다.
1. SQL을 바라보는 관점
SQL을 바라보는 관점마다 SQL에 대한 다양한 정의가 가능하다. 우선 SQL을 바라보는 관 점에 대해 알아본다
다양한 관점 가운데 위 그림과 같은 3가지 관점에 따른 정의 내용은 다음과 같다
2. 용어 관점에서의 SQL
SQL은 Structured Query Language를 의미하며, 우리말로 옮기면 `구조적 질의어'가 된다, 구조적 질의어에 대한 다음과 같은 주장을 살펴보자.
• 구조적 질의어라는 용어를 직접 이해하기는 힘들다.
• 우선 분해해서 해석해 보자.
• 분해하면 `구조적'과 `질의어'라는 용어로 분리된다. • 상대적으로 `질의어'라는 용어는 이해가 용이하다.
• 물어본다는 뜻으로 단순화시킬 수 있다.
• 그런데 `구조적'으로 물어본다는 것이 무슨 말인지 이해가 어렵다. • 이 경우 반대 또는 상대 개념의 용어를 통해 이해하는 것이 적절하다.
• `구조적'의 상대되는 용어는 무엇일까?
• 비구조적은 아니다.
• 구조적의 상대되는 용어는 `절차적'이라는 용어가 적절하다.
즉, 구조적 질의어라는 말은 `非절차적 질의어'라는 것으로, 절차적으로 세세하게 묘사하 는 것이 아니라는 뜻이다. 그 어떤 절차가 아닌 수학식과 같은 하나의 표현으로 목적하는 대상을 표현하는 수단으로 이해하는 것이 적절하다.
3. 표준 관점에서의 SQL
SQL은 데이터베이스를 조작하는 언어의 표준이다. SQL에 대한 표준은 ANSI(America National Standard Institute)라는 기관이 최초로 만들었으며, 이후 국제 표준화 기구(ISO: International Standard Organization)를 통해 관리되고 있다. 지속적으로 SQL 표준은 갱신되고 있으며 다음과 같은 중요 표준 과정을 가지고 있다
표준 SQL:2003 이후에도 SQL2006, SQL2008 및 SQL2011 등이 추가되었으나, 현재 대부분 의 DBMS 제품은 SQL:2003 표준을 지원하고 있다. SQL2 표준을 구현한 제품은 관계형 데 이터베이스를 지원한다. 이러한 관점에서 SQL:2003 구현 제품은 SQL2 이후에 추가된 객 체 지향과 XML 기능을 지원하고 있으므로 `객체 관계형 데이터베이스' 제품이라고 한다. 즉, 현존하는 대부분의 DBMS는 객체를 지원하고 있다. 하지만 아직 객체의 사용은 활성 화되지 않은 상태이며, 객체 관계형 데이터베이스를 도입하고 객체를 뺀 관계형 데이터베 이스로 사용하고 있는 것이 지금의 현실이다. 따라서 본 학습모듈, SQL 활용의 내용은 SQL2를 기준으로 한다.
4. 용도 관점에서의 SQL
`SQL은 데이터베이스를 조작하는 언어다.'라고 SQL을 정의할 수 있다. 그렇다면 데이터베 이스와 데이터베이스관리시스템이 무엇인지 알아보도록 하자.
(1) 데이터베이스 개념
데이터베이스는 `연관된 데이터의 모음'이라 이해할 수 있으며, 보다 엄격하게 `데이터 를 일정한 형태로 저장해 놓은 것'을 의미한다. 이러한 데이터 모음을 조작하는 것이 SQL이다. 하지만 SQL이 직접 데이터를 조작하는 것이 아니라, SQL과 데이터베이스의 중간에 데이터베이스관리시스템을 통해 데이터베 이스를 조작하게 된다. 과거에는 데이터베이스 시스템 이전에 파일 시스템을 이용하여 데이터를 관리하였다. 파일 시스템을 통하여 데이터의 공유는 가능하였지만, 동시에 데이터의 입력, 수정 및 삭제와 같은 조작이 불가능하고 동일한 내용이 복사되어 사용, 관리되는 문제를 해결 할 수 없었다. 이와 같은 문제를 해결하기 위하여 파일 관리 시스템이 아닌 파일 시스 템을 개선한 데이터 관점의 데이터베이스관리시스템(DBMS)이 탄생하게 된 것이다.
(2) 데이터베이스 관리시스템
데이터베이스관리시스템은 다음과 같은 관점에서 이해할 수 있다.
이들 관점을 이용하여 DBMS를 정의하면, `조직의 목적을 위해 존재하는 운영 데이터 를 통합 저장하여 공동으로 사용 가능하도록 관리하는 시스템'이라고 할 수 있다.
(3) 데이터베이스 관리시스템 구조
DBMS는 대용량 공유 메모리와 프로세스로 구성된다. DBMS를 구성하는 메모리는 용도 별 공유 영역을 구분하며, 기능별 프로세스가 이들 메모리 영역을 이용하는 구조이다. 공유 메모리 영역이나 프로세스 이름은 제품별 또는 버전별 차이가 있을 수 있지만, 일반적인 구성으로 공유 메모리와 용도별 프로세스로 구성되어 있다는 사실을 알 수 있다. 이와 같이, 메모리와 프로세스로 구성된 DBMS의 모습은 실행 중에 형성되기에 DBMS `인스턴스'라는 용어가 사용된다. 즉, DBMS `인스턴스'는 메모리와 프로세스로 구성되어 있다. DBMS는 디스크에 저장된 데이터를 관리하는 시스템이다. 파일 또는 파일 시스템 자체 는 DBMS에 포함되지 않으나, 이를 관리하는 `저장 데이터 관리자'와 같은 기능을 통해 파일을 관리한다. 일반적인 DBMS의 구조는 다음과 같다.
앞서 SQL은 `데이터베이스를 조작하는 언어'라는 정의와 조작하는 과정에 개입하는 데이터베이스관리시스템에 대해 알아보았다. 다시 이 개념을 통합하여 SQL은 `DBMS 를 이용하여 DB를 조작하기 위한 그리고 언어 형태를 가진 수단이다.'라고 정의할 수 있다.
'스마트 웹개발 > SQL 활용' 카테고리의 다른 글
06. 뷰 활용 (0) | 2021.05.18 |
---|---|
05. 인덱스 활용 (0) | 2021.05.18 |
03. DCL 활용 (0) | 2021.05.11 |
02. DML 활용 (0) | 2021.05.11 |
01. 기본 SQL 작성하기 (0) | 2021.05.11 |