이 글이 필요한 사람
용어는 익숙하지만 문제에서 어느 것을 골라야 할지 멈추는 수험생에게 필요한 글입니다.
컴활 1급 RunSQL OpenQuery 차이를 검색한 사람은 단순 정의보다 실제 문제에서 무엇을 먼저 확인할지가 필요합니다.
이 글은 RunSQL·OpenQuery·선택 쿼리의 차이와 문제 풀이 순서만 다루며, 과목 전체 요약이나 시험 일정 정보까지 범위를 넓히지 않는다. 이미 발행된 글이 맡은 범위는 반복하지 않습니다.
컴활 1급 · 컴활 1급 실전 판단
두음 암기는 `문즉·저열`입니다. RunSQL은 SQL문을 즉시 실행하고, OpenQuery는 저장된 쿼리를 엽니다.
SQL 문자열을 바로 실행하려면 RunSQL, 이름이 있는 저장 쿼리를 열거나 실행하려면 OpenQuery를 사용합니다.
검색자가 헷갈리는 항목(RunSQL·OpenQuery·선택 쿼리)을 한 화면에서 비교하고, 바로 문제에 적용할 수 있도록 판단 순서를 붙였습니다. 문제를 읽자마자 핵심 대상과 동작을 나누면 보기의 절반을 먼저 지울 수 있습니다.
핵심 포인트
본문
용어는 익숙하지만 문제에서 어느 것을 골라야 할지 멈추는 수험생에게 필요한 글입니다.
컴활 1급 RunSQL OpenQuery 차이를 검색한 사람은 단순 정의보다 실제 문제에서 무엇을 먼저 확인할지가 필요합니다.
이 글은 RunSQL·OpenQuery·선택 쿼리의 차이와 문제 풀이 순서만 다루며, 과목 전체 요약이나 시험 일정 정보까지 범위를 넓히지 않는다. 이미 발행된 글이 맡은 범위는 반복하지 않습니다.
RunSQL은 SQL문을 즉시 실행하고, OpenQuery는 저장된 쿼리를 엽니다.
두음의 각 부분은 RunSQL · OpenQuery · 선택 쿼리 · 실행 경고 · CurrentDb.Execute 순서로 연결됩니다.
암기 문장을 말한 뒤 실제 용어와 판단 기준을 다시 말할 수 있어야 문제에서 사용할 수 있습니다.
SQL 문자열을 바로 실행하려면 RunSQL, 이름이 있는 저장 쿼리를 열거나 실행하려면 OpenQuery를 사용합니다.
가장 먼저 볼 단서는 SQL 문장을 직접 넣는지이고, 다음으로 저장 쿼리 이름인지를 확인합니다.
마지막에는 DAO 실행 방식인지까지 대조해 처음 고른 답이 예외에 걸리지 않는지 점검하세요.
RunSQL은 유효한 SQL 문장을 문자열로 직접 받아 실행하는 DoCmd 메서드입니다. 추가·수정·삭제 같은 실행 쿼리나 테이블·인덱스 관련 DDL 문장이 단서로 나오면 먼저 떠올립니다.
예를 들어 `DoCmd.RunSQL "UPDATE Employees SET Active = True WHERE Department = 'Sales'"`처럼 SQL 문장 자체가 인수에 들어갑니다. 저장된 쿼리 이름만 넣는 방식으로 외우면 안 됩니다.
문제에서는 SQL 문장을 직접 넣는지, DoCmd 방식인지, 데이터가 바뀌는 문장인지 순서대로 확인합니다. 실행 쿼리라면 실제 데이터가 변할 수 있으므로 대상과 조건을 먼저 검토해야 합니다.
OpenQuery는 데이터베이스에 저장된 쿼리 개체를 `QueryName`으로 여는 DoCmd 메서드입니다. 선택 쿼리의 결과를 데이터시트에서 확인하거나 저장된 실행 쿼리를 호출하는 상황에 쓰입니다.
예를 들어 `DoCmd.OpenQuery "qrySalesTotals"`처럼 저장된 쿼리 이름이 들어갑니다. 필요하면 `DoCmd.OpenQuery "qrySalesTotals", , acReadOnly`처럼 보기와 데이터 모드 인수를 이어서 지정할 수 있지만, 그 인수들의 상세 비교는 별도 글에서 다룹니다.
문제에서는 SQL 문자열이 새로 들어가는지보다 저장 쿼리 이름을 호출하는지가 핵심입니다. OpenQuery가 선택 쿼리에만 한정된다고 단정하지 말고, 쿼리의 종류와 실제 동작을 함께 확인하세요.
선택 쿼리는 조건에 맞는 레코드를 검색해 결과를 보여 주는 쿼리입니다. 일반적으로 데이터를 추가·수정·삭제하지 않으므로 결과 표를 확인하는 단서와 연결됩니다.
저장된 선택 쿼리 `qrySalesTotals`를 화면에서 열어 결과를 확인하는 예는 `DoCmd.OpenQuery "qrySalesTotals"`입니다. 여기서 선택 쿼리라는 분류와 OpenQuery라는 호출 방법은 서로 다른 층위의 개념입니다.
즉, '선택 쿼리라서 무조건 OpenQuery'가 아니라 저장된 쿼리 개체를 열어 결과를 보려는 상황인지까지 확인합니다. SELECT 문 자체를 작성해 실행하는 문제라면 SQL 문자열과 실행 경로도 함께 봅니다.
실행 쿼리는 레코드를 추가·수정·삭제하거나 테이블을 만드는 등 데이터를 변경할 수 있습니다. 그래서 Access에서 실행할 때 확인 메시지나 경고 흐름이 문제의 단서가 될 수 있습니다.
`DoCmd.SetWarnings False`는 사용자에게 표시되는 경고를 끄는 흐름과 연결되지만, 경고를 껐다고 SQL의 대상·조건 검토가 필요 없어지는 것은 아닙니다. 문제에서는 경고를 끄고 작업한 뒤 다시 켜는 순서까지 확인합니다.
선택 쿼리는 결과를 조회하는 쪽이고 실행 쿼리는 데이터를 바꾸는 쪽이라는 큰 분류를 먼저 세운 뒤, RunSQL·OpenQuery·DAO Execute 중 어떤 호출 경로인지 대조하세요.
`CurrentDb.Execute`는 현재 데이터베이스를 가리키는 DAO `Database` 개체의 `Execute` 메서드로 SQL 문장이나 실행 쿼리를 수행하는 별도 경로입니다. RunSQL과 마찬가지로 SQL 문자열이 보일 수 있지만, 문제에서 DAO Database 개체가 강조되면 Execute 쪽으로 분리합니다.
대표적인 형태는 `CurrentDb.Execute "UPDATE Employees SET Active = True WHERE Department = 'Sales'", dbFailOnError`입니다. `dbFailOnError`처럼 오류 처리 옵션이 함께 나오는지 확인하면 DoCmd.RunSQL과 구분하는 데 도움이 됩니다.
이 글에서 기억할 핵심은 'SQL 문자열이 있다'만으로 RunSQL을 고르는 것이 아니라 호출 주체까지 보는 것입니다. DoCmd 메서드인지 DAO Database 메서드인지 마지막에 대조하세요.
1. RunSQL에 저장 쿼리 이름만 넣어 실행한다고 보지 않는다. RunSQL의 대표 단서는 SQL 문장 문자열입니다.
2. OpenQuery가 선택 쿼리에만 제한된다고 단정하지 않는다. 저장된 쿼리 개체를 여는 메서드라는 먼저 큰 기준을 잡습니다.
3. SQL 문자열이 보인다는 이유만으로 RunSQL을 고르지 않는다. DAO `Database.Execute`인지 확인하고, 실행 쿼리라면 데이터 변경 여부와 오류 처리 옵션까지 봅니다.
1단계. 직접 SQL 문자열인지 저장된 쿼리 이름인지 찾는다
2단계. DoCmd.RunSQL·DoCmd.OpenQuery·DAO Database.Execute 중 호출 주체를 확인한다
3단계. 선택 쿼리인지 실행 쿼리인지, 데이터가 바뀌는지 확인한다
4단계. 경고·오류 처리와 보기 인수가 문장에 맞는지 대조한다
5단계. 틀린 선지는 반대 개념으로 고쳐 한 문장으로 다시 말한다
1. RunSQL: SQL 문장을 문자열로 직접 받아 실행하는 DoCmd 메서드입니다.
2. OpenQuery: 저장된 쿼리 개체를 이름으로 여는 DoCmd 메서드입니다.
3. 선택 쿼리: 결과를 조회하고 보여 주며, 저장된 선택 쿼리를 열 때 OpenQuery와 연결됩니다.
4. 실행 쿼리: 추가·수정·삭제·테이블 만들기처럼 데이터나 구조를 변경할 수 있습니다.
5. CurrentDb.Execute: DAO Database 개체의 Execute 메서드이며, `dbFailOnError` 같은 오류 처리 옵션과 함께 나올 수 있습니다.
1. 질문: SQL 문장을 직접 넣고 DoCmd로 실행하는가? 정답: RunSQL. 답을 보기 전에 기준어를 먼저 말한 뒤 문장과 대조합니다.
2. 질문: 저장된 쿼리 이름을 열고 있는가? 정답: OpenQuery. 답을 보기 전에 기준어를 먼저 말한 뒤 문장과 대조합니다.
3. 질문: 결과 표를 조회하는 쿼리인가? 정답: 선택 쿼리. 저장된 개체를 화면에서 열면 OpenQuery와 연결합니다.
4. 질문: 레코드나 테이블이 바뀌는가? 정답: 실행 쿼리. 대상·조건·경고 흐름을 함께 점검합니다.
5. 질문: DAO Database 개체의 Execute인가? 정답: CurrentDb.Execute. `dbFailOnError` 같은 오류 처리 옵션이 있는지도 확인합니다.
DoCmd.RunSQL은 SQL 문장을 실행하는 Microsoft Learn 문서, DoCmd.OpenQuery는 저장된 쿼리를 여는 Microsoft Learn 문서, Database.Execute는 DAO Database 개체에서 SQL을 실행하는 Microsoft Learn 문서를 기준으로 확인했습니다.
선택 쿼리와 실행 쿼리의 역할은 Microsoft 지원의 쿼리 안내 및 간단한 선택 쿼리 문서와 대조했습니다. 글의 범위는 이 세 실행 경로와 시험용 구분 기준으로 한정합니다.
실제 발행일에는 공식 링크의 접근 여부와 표현 변경을 다시 확인하고, 확인되지 않은 수치나 제도는 공개하지 않습니다.
FAQ
SQL 문자열을 바로 실행하려면 RunSQL, 이름이 있는 저장 쿼리를 열거나 실행하려면 OpenQuery를 사용합니다. 시험장에서는 정의를 길게 떠올리기보다 SQL 문장을 직접 넣는지부터 확인하면 판단 시간이 줄어듭니다.
RunSQL은 SQL 문장을 문자열로 직접 받아 실행하는 DoCmd 메서드이고, OpenQuery는 저장된 쿼리 개체를 이름으로 여는 DoCmd 메서드입니다. SQL 문자열이 있다는 사실만 보지 말고 호출 주체와 저장 쿼리 이름 여부를 함께 확인하세요.
SQL 문장을 직접 넣는지, 저장 쿼리 이름을 호출하는지, DAO Database 개체의 Execute인지 순서대로 보고, 이어서 선택 쿼리인지 실행 쿼리인지 확인하세요. 이 순서가 맞으면 세부 표현이 길어도 답의 범위를 빠르게 줄일 수 있습니다.
직접 SQL인지 저장 쿼리인지 찾고, DoCmd인지 DAO Execute인지 확인한 다음, 틀린 선지는 반대 개념으로 고쳐 한 문장으로 다시 말하세요. 틀린 항목만 두 번 더 회상하면 전체 설명을 다시 읽는 것보다 효율적입니다.