|
| 참고] QBE 창 대신 쿼리의 SQL 내용을 보시려면 SQL 입력창을 열어야 합니다. SQL 입력창을 여는 것에 대해서는 이 강좌의 제일 마지막 부분을 참고 하십시오. |
- 선택 쿼리
- 매개변수 쿼리
- 크로스탭 쿼리
- 실행 쿼리
- SQL 쿼리
선택 쿼리
선택 쿼리는 가장 일반적인 유형의 쿼리입니다. 질의문이 SELECT로 시작하기 때문에 SELECT Query라고
부릅니다.
- 지정한 조건을 사용하여 하나 이상의 테이블에서 데이터를 검색한 다음 원하는 순서대로 데이터를 표시합니다.
- 약간의 제한이 있지만 선택 쿼리의 데이터시트에서 레코드를 업데이트합니다. 이것은 흔히 초보자 분들이 당황하여 질문하는 내용 중에
하나입니다. 이 부분은 따로 설명을 드리겠습니다.
- 레코드를 그룹화하고 합계, 개수, 평균, 기타 요약 계산을 수행할 수 있습니다.따라서 이것을 요약질의라고 부르기도 합니다. 또
질의문에 GROUP BY 키워드가 쓰이므로 GROUP-BY 질의라고도 합니다.
예] 다음 질의문은 단종되지 않은 제품만 뽑아보는 선택질의의 내용입니다.
SELECT [Product List].ProductID, [Product
List].ProductName
FROM Products AS [Product List]
WHERE ((([Product List].Discontinued)=No))
ORDER BY [Product List].ProductName;
요약질의는 QBE 질의디자인 창에서는 시그마 표시를 가지는 [요약]이라는 메뉴 버튼을 누르면 작성할 수 있습니다.
Sum(), Avg(), Min(), Max(), Std() 등 질의계산 함수는 질의에서만 사용됩니다. 그리고 Group By 쿼리나
CrossTab 쿼리에서만 사용됩니다.
예] 다음은 주문별 소계를 내는 합계질의입니다. SELECT로 시작하기 때문에 선택질의에 속합니다. GROUP BY 키워드가
대상을 구분해주고 Sum() 질의계산함수가 합계를 내줍니다.
SELECT [Order Details].OrderID,
Sum(CCur([UnitPrice]*[Quantity]*(1-[Discount])/100)*100) AS Subtotal
FROM [Order Details]
GROUP BY [Order Details].OrderID;
매개 변수 쿼리
쿼리를 열 때 레코드 검색 조건이나 필드에 삽입할 값과 같은 정보를 입력할 수 있는 대화 상자를 표시하는 쿼리입니다. 질의문이
PARAMETERS로 시작하기 때문에 PARAMETER Query라고 부릅니다.
매개변수 쿼리는 조건만 다른 여러 작업을 반복적으로
할 때 유용합니다. 예를 들어, 월별 자료 검색이나 월별 소득 계산 등을 하고자 할 때 편리합니다.

| 매개변수 매개변수는 될 수 있으면 미리 정의를 한 다음 사용하십시오. 매개변수를 정의하려면 메뉴에서 [쿼리]-[매개변수…]를 실행하면 데이터 형식까지 정의를 할 수 있습니다. 그러나 매개변수를 명시적으로 정의하지 않았더라도 쿼리에 없는 이름(필드명)을 사용하면 쿼리는 매개변수라 여기고 처리합니다. 단, 크로스탭 질의에서는 반드시 매개변수를 명시적으로 정의한 다음에 사용하셔야 합니다. |
PARAMETERS 시작일 DateTime, 종료일 DateTime;
SELECT Employees.Country, Employees.LastName, Employees.FirstName,
Orders.ShippedDate,
Orders.OrderID, [Order Subtotals].Subtotal AS
SaleAmount
FROM Employees INNER JOIN (Orders INNER JOIN [Order Subtotals] ON
Orders.OrderID = [Order Subtotals].OrderID) ON Employees.EmployeeID =
Orders.EmployeeID
WHERE (((Orders.ShippedDate) Between [시작일] And [종료일]));
크로스탭 쿼리
크로스탭 쿼리를 사용하면 데이터를 계산하고 재구성할 수 있으므로 데이터를 쉽게 분석할 수 있습니다. 크로스탭 쿼리는 데이터시트의 왼쪽에 있는 정보를 세로로 그룹화하거나 맨 위에 있는 정보를 가로로 그룹화한 데이터에 대해 합계, 평균, 개수, 기타 요약 등을 계산합니다.
요약질의와 비슷하지만 크로스탭이란 그리드가 하나 더 생겼습니다. 크로스탭에는 행과 열 머리글이 있고 두 [행]과 [열]이 서로 교차하는 부분에 적을 [요약값]이 존재해야 합니다.
TRANSFORM Sum(CCur([Order Details].UnitPrice*[Quantity]*(1-[Discount])/100)*100)
AS ProductAmount
SELECT Products.ProductName, Orders.CustomerID, Year([OrderDate])
AS OrderYear
FROM Products INNER JOIN (Orders INNER JOIN [Order Details] ON
Orders.OrderID =
[Order Details].OrderID) ON Products.ProductID = [Order
Details].ProductID
WHERE (((Orders.OrderDate) Between #1/1/1997# And #12/31/1997#))
GROUP BY Products.ProductName, Orders.CustomerID,
Year([OrderDate])
PIVOT DatePart("q",[OrderDate],1,0) & "/4 분기" In ("1/4 분기","2/4
분기","3/4 분기","4/4 분기");
질의계산함수나 구간을 정하기 위한 함수, 특히 날짜 필드에서 구간을 정하기 위한 날짜 함수들이 많이 사용되므로 날짜 관련 함수들은 도움말을 보시고 꼭 익혀 두십시오.
이렇게 함수들이 사용되는 것뿐만 아니라 크로스탭질의는 쓰이는 키워드도 많아서 구문이 복잡하게 느껴져 초보자 분들에게는 상당히 부담스러운 쿼리에 해당됩니다. 크로스탭 쿼리 마법사를 이용하여 만드는 것도 초보자 분들에게는 그렇게 쉽지가 않습니다.
| 크로스탭 쿼리를 만들 때 다음과 같이 생각을 정리하게 되면 어렵지 않습니다. 위 예제는 [제품별]로 어떤 [고객]이 [해]마다 쓴 금액을 [분기]별로 구분해서 알아보고자 하는 질의문입니다. 이것을 정리하면 [제품별]-[고객별]-[연도별]-[분기별]-[구매금액]으로 되고 TRNSFORM 제일 뒤의 항목이 TRNSFORM, 그 앞에 있는 세부조건이 PIVOT, 그리고 나머지 조건들이 GROUP BY에 관련됩니다. 이것을 다시 구분해보면, 알고자 하는 값을 항상 마지막에 배치를 하고 이 앞에는 그 기준들을 적는데 [기준들(순서대로)]-[마지막 세부기준]-[요약계산 할 것] 순서로 배치합니다. 이것은 [Group By]-[Pivot]-[Transform]에 해당됩니다. 크로스탭쿼리 마법사를 이용할 때 이 순서대로 값을 설정해 주면 원하는 쿼리가 만들어 질 겁니다. |
1. GROUP BY 다음에 놓인 것은 개별적인 레코드(행)를
그룹으로 만들어진 내용으로 여전히 행에 남아 있게 되고 따라서 행 머리글이 된다.
2. PIVOT 다음에 쓰여진 세부 조건은 열 머리글이 된다.
3. TRANSFORM 다음에 질의계산함수를 사용하여 계산한 값을
나타낼 값 필드로 테이블을 채우는 값이 된다.
실행 쿼리
실행 쿼리는 여러 레코드를 한꺼번에 변경하거나 이동할 수 있는 쿼리입니다. 실행 쿼리에는 네 가지 유형이 있습니다. 실행 쿼리는
데이터를 변경하므로 항상 조심해서 사용하도록 합니다. 초보자 분들은 이런 게 있구나 하는 정도로만 알아 두십시오.
▪ 삭제 쿼리 테이블 하나 이상에서 레코드 그룹을 삭제합니다. 예를
들어 단종제품만 일괄 삭제할 수 있습니다.
DELETE Employees.*
FROM Employees
WHERE Title = “Trainee”;
▪ 업데이트 쿼리 업데이트 쿼리는 테이블 하나 이상에서 레코드
그룹을 전체적으로 변경합니다. 예를 들어, 제품의 가격이나 임금 등을 일괄해서 10%씩 올리고자 하는 경우에 사용됩니다.
UPDATE Employees
SET ReportsTo = 5
WHERE ReportsTo = 2;
▪ 추가 쿼리 추가 쿼리는 테이블 하나 이상에서 레코드 그룹을
가져다 테이블 하나 이상의 끝에 추가합니다. 예를 들어, 새 고객들과 그 고객들에 대한 데이터가 포함된 테이블이 있는 데이터베이스가
생긴 경우, 모든 관련 정보를 데이터베이스에 일일이 입력하는 대신 Customers 테이블에 추가하기만 하면 됩니다.
다중 레코드 추가 쿼리:
INSERT INTO Customers
SELECT *
FROM [New Customers];
단일 레코드 추가 쿼리:
INSERT INTO Employees (FirstName,LastName,
Title)
VALUES ('Harry', 'Washington', 'Trainee');
▪ 테이블 만들기 쿼리 테이블 만들기 쿼리는 테이블 하나
이상에서 데이터의 일부나 전체를 가져와 새 테이블을 만듭니다. 이 쿼리는 다른 액세스 데이터베이스나 이전 레코드가 들어 있는 기록
테이블로 내보낼 테이블을 만들 때 유용합니다.
SELECT Products.*
INTO 단종품목테이블
FROM Products
WHERE ((( Products.Discontuned) = True));
SQL 쿼리
통과 쿼리, 데이터 정의 쿼리, 통합 쿼리는 QBE 디자인 창을 이용할 수 없고 메뉴에서 [보기]-[SQL 보기]로 SQL
입력창을 연 다음 직접 SQL 문을 작성해야 합니다.
또 하위 쿼리는 쿼리 디자인 눈금의 필드 행이나 조건 행에 SQL을 입력합니다.
| [SQL 입력창 보기] 액세스 쿼리를 디자인보기로 열면 그래픽인터페이스인 QBE 디자인 창만 보입니다. 실제 작성된 SQL문을 확인하시려면 쿼리를 디자인 보기로 열고 메뉴에서 [보기]-[SQL 보기]를 클릭하십시오.
|
지금까지 많이 사용하는 쿼리에 대해 설명을 하였습니다. 간단하게 설명을 했지만 SQL문을 처음 접하신 분들에게는 상당히 어려운 내용이었을 겁니다. 그렇지만 실망하지 마시고 ‘보고 또 보고’ 하시면 익숙해지시리라 믿습니다.
오피스 튜터의 무료강좌 섹션에서 QBE(Query By Example) 창에서 각각의 쿼리를 만들고 필드를 추가하고, 정렬하고, 조건에 따라 레코드를 질의하고, 계산필드를 만드는 것 등에 대해서 반드시 공부를 하시도록 하십시오. 그리고 SQL창을 열어 항상 QBE로 만든 쿼리의 내용을 확인하는 습관을 가지시면 SQL문에 대해서는 조만간 익숙해지실 겁니다.
액세스2000 무료강좌 :
www.officetutor.co.kr/tutor_new/access/daily/index.asp






