배움터  
  HOME > 배움터 > 무료강좌
무료강좌
 
액세스 2000, 김규경님의 데이터베이스 기초 다지기 - 제20강. 액세스 쿼리 #1, Access 2000
  


제20강. 액세스 쿼리 #1


지금까지 테이블과 테이블에 자료를 저장하기 위해 필요한 여러 개념들과 기능들에 대해서 알아 보았습니다.
가장 기본적인 다음 내용을 잊어서는 안됩니다.

관계형 데이터베이스 테이블의 조건 – 고유 그리고 최소

1. 레코드는 고유해야 한다.
   하나의 레코드를 다른 레코드와 구별할 수 있는 키(고유키)를 가져야 한다.

2. 필드도 고유해야 한다.
   필드들은 각각 다른 필드의 내용과 중복되지 않고 고유한 정보를 담아야 한다.

3. 테이블(주제)을 최소화 한다.
  1) 테이블에는 같은 주제의 필드만 포함시킨다.
   - 입력된 자료가 테이블의 주제와 관련이 없으면 주제별로 독립시켜 또 하나의 테이블을 만든다.
  2) 테이블 내에서 같은 정보가 여러 레코드에 반복되어 나타나지 않도록 한다.
   - 반복되는 정보를 가진 필드가 있으면 하나의 독립된 테이블로 만들도록 고려한다
  3) 다중 필드 키를 사용해야 한다면 따로 테이블로 만들 수 있는가 분석한다.

4. 필드(정보단위)를 최소화 한다.
   정보단위를 가능하면 최소 크기로 쪼개어서(원자화) 필드의 크기를 최소화하고 반복되는 자료의 요소는 제거한다.

주제별로 각각의 테이블에 저장된 정보는 완전히 독립된 정보들이 아니라 서로 연관성을 가지는 정보들입니다. 이러한 정보들은 작업에 따라 일부 필드의 내용만 필요하기도 하고 일부 레코드만 필요하기도 합니다. 이러한 일을 해주는 것이 바로 쿼리입니다. 쿼리는 관계형 데이터베이스의 핵심입니다. 쿼리는 특정 필드의 내용만 보여주기도 하고 여러 테이블에서 관련된 자료를 수집하여 주고, 또 조건에 맞는 자료만을 모아 보여 주기도 하고 관련 정보들을 한꺼번에 업데이트하거나 삭제할 수도 있으며 데이터에서 미리 정의된 계산이나 사용자 지정 계산을 수행할 수도 있습니다.

쿼리의 분류

눈으로 볼 수 있는 쿼리:
결과물은 당연히 테이블로 보여주며 따라서 질의테이블(Query Table)이라고도 합니다.
선택질의(Select Query), 매개변수질의(Parameter Query), 크로스탭질의(Crosstab Query) 등이 있습니다.

눈으로 결과를 볼 수 없는 쿼리:
데이터정의질의, 실행질의 등이 있습니다.
실행질의는 테이블생성질의(Table Create Query), 추가질의(Insert Query), 삭제질의(Delete Query), 업데이트질의(Update Query) 등이 있습니다.

오피스튜터 질의란에 올라 온 질문 중에 하나…

Q> Update 쿼리는 폼에서 데이터로 사용할 수 없나요?

A> 눈으로 결과를 테이블로 볼 수 있는 쿼리는 폼이나 보고서 등의 데이터 원본으로 사용될 수 있습니다. 그러나 실행쿼리는 결과를 눈으로 볼 수 없어 폼이나 보고서 등의 데이터 원본으로 사용될 수 없습니다.


질의 테이블(Query Table)

선택질의(Select Query)와 같이 조건에 해당되는 여러 정보를 모아서 테이블로 보여주는 쿼리를 ‘질의테이블’이라고 합니다. 실제 데이터가 저장되어 있는 테이블이 아닙니다. 단지 자료를 모으는 방법만 정의되어 있는 가상테이블입니다.

질의테이블은 다음과 같은 역할을 합니다.

1) 조건에 맞는 자료를 검색하고 여러 테이블의 자료를 연결하여 하나의 테이블로 구성하여 보여줍니다.

2) 데이터 원본으로 사용됩니다.
질의테이블은 일반 테이블과 동일하게 폼이나 보고서, 데이터 액세스 페이지 등의 데이터 원본으로 사용됩니다.

3) 계산필드를 만들 수 있습니다.
엑셀에서 셀에 계산식을 적용하는 것과 같은 작업을 질의에서 계산필드를 사용하여 할 수 있습니다.

4) 자료를 요약 할 수 있습니다.

5) 자료의 변경에 관한 부분을 제어할 수 있습니다.
질의테이블은 속성을 설정하여 자료의 변경에 관한 부분을 제어할 수 있습니다. 따라서 자료를 원치 않게 삭제/변경되는 것을 방지할 수 있어 테이블 보다는 안전합니다.
따라서 테이블을 직접 열어보지 마시고 항상 쿼리를 만들어 사용하도록 하십시오.

<테이블: 자료변경을 제어할 방법이 없다>

<질의테이블: 레코드 잠금과 레코드 집합 종류 속성을 이용하여 자료의 변경을 제어한다>

 

RecordLocks 속성
RecordLocks 속성을 사용해 두 사용자가 동시에 같은 레코드를 편집하려고 할 때 레코드를 잠그는 방법을 결정할 수 있습니다.
 
‘모든 레코드’로 설정해 두면 다른 사용자들은 원본테이블이나 해당 쿼리를 읽을 수는 있지만, 폼을 닫거나, 보고서 인쇄가 끝나거나, 쿼리 실행이 끝날 때까지 레코드를 편집, 추가, 삭제할 수 없습니다.

RecordsetType 속성
RecordsetType 속성을 사용해 폼에서 사용할 수 있는 레코드 집합의 종류를 지정할 수 있습니다.
 
스냅샷으로 설정해두면 필드를 편집할 수 없습니다.


Microsoft Jet SQL

SQL은 Structured Query Language 즉, 구조화된 질의언어의 약자입니다. ‘에스큐엘’이라고 읽는 것도 길어서 ‘씨퀄’이라고 읽습니다. 이것은 S/Q/L 영어 자음이 가지는 음가를 그대로 발음하면 그렇게 들립니다. 액세스 쿼리는 마이크로소프트 제트 SQL을 사용합니다. 배우기는 그렇게 어렵지 않습니다. 더군다나 일부 쿼리 유형을 제외하고는 Query By Example(QBE)이라는 질의디자인 창을 지원함으로써 마이크로소프트 제트 SQL을 이용하기 쉽도록 합니다. 흔히 사용하는 쿼리는 쿼리 마법사를 이용하여 작성할 수 있습니다. 당연한 얘기지만 모든 쿼리는 SQL문으로 저장됩니다.

SQL 질의언어는 은 데이터를 조작하는 데이터 조작언어(DML)와 데이터를 정의하는 데이터 정의언어(DDL)로 구분합니다. 다음은 액세스 도움말 목차에 있는 Microsoft Jet SQL의 내용입니다. 많지 않습니다. 한번 숙독을 하실 수 있도록 하십시오.

 

 

  목차 | 이전 | 다음