컴퓨터활용능력1급/컴활1급 실기

취성패_컴활1급_20일차 <쿼리>

삼토 2016. 12. 19. 18:08

161219 필기내용.txt



 <4> 처리기능구현
 section1 쿼리작성



* 쿼리란?
 : 테이블이나 쿼리에서 필요한 필드만 가져와 새롭게 재작성한 테이블을 쿼리라 부른다.


- 필드 등을 삭제하면 복구하기 어려우므로
지우지 않고 자유롭게 편집하고 싶을 때.

- 이 테이블 저 테이블에서 각각 필드를 뽑아오고 싶을 때.
 cf) "관계" - 두 개 이상의 테이블을 이어 붙일 때 반드시 관계가 설정되어 있어야 두 테이블의 데이터 순서가 뒤죽박죽이라도 알맞게 가져온다.
     --> 두 테이블로 쿼리 만들 때는 반드시 관계설정이 되어있어야 쿼리 만드는게 가능



* 쿼리 만들기
1.필요데이터 파악
2. 쿼리 만들기 : [만들기] - [기타그룹] - 쿼리마법사(x) 쿼리디자인(o)


[tip]

만들 땐 무조건 디자인으로 간다
 


* 쿼리에서도 필드 생성 가능
         ★★★ 계산필드 만들기 ★★★
         1. 디자인보기
         2. 필드(첫줄)에서 우클릭
         3. 작성 클릭 
         4. 계산공식 쓴다
            필드명 : 식 (반드시 : 쓸 때 띄어쓰기 잘 지켜주기)


※ 형식 등이 적용 안 될 때는 저장하고 닫았다가 다시한번 똑같이 설정해주면 됨



* 쿼리 내 기존 필드의 이름을 바꿀 때 : [작성]을 이용하자                                                  

새로바꿀이름 : [예전필드이름]





* ★★★
요약쿼리 (쿼리 내 그룹) 만들기 :  

언제? : "~별 합계" , "~별 평균" 등등 일 때.

어떻게? : [요약](시그마) 이용 - 요약행이 생성됨

※ 요약 행의 묶는 방법 바꾸지 않으면 그룹화 되지 않을수도 있다



* (세번째 행) 정렬 하기 

 

* (네번째 행) 그림에 없는 애를 정렬하려면 일단 끌어다둔 뒤, '표시' 체크박스를 체크해제
 

* (다섯번째 행) 조건에 만족하는 애만 보기
제시값만 해당필드의 '조건'행에 쓰면 됨!
(원래는 대상값, 기호, 제시값이라서 [감독]="강제규" 인데, 감독 필드의 조건행에 "강제규"만 쓰면 됨)


* 매개변수 쿼리 

: 조건이 변수일 때 그때 그때 사용자에게 조건을 입력받아 출력하는 것. 

- '조건'행에 [] 쓰기
- "매개변수 값 입력" 말고 다른 말을 메시지상자에 쓰고 싶다면?
        : 빈 대괄호 내에 띄울 말을 쓰면 된다.

- 검색어가 '포함'된 매개변수 쿼리 만들고 싶을 땐
        : Like "*[]*" 를 조건에 쓴다 (x)
         쌍따옴표 안에 매개변수를 써서 문자로 인지해버림
         따라서, Like "*" & [] & "*"


[헷갈려서 정리]
예전에 배운 것:    정보공유용 "" 안에 컨트롤을 넣으면 인식 못한다
                        정보공유용 "" 안의 문자표시는 ''로 한다


오늘 배운 것: 문자용 "" 안에 매개변수 넣으면 인식 못한다


총정리: "" 안에 매개변수나 컨트롤을 넣으면 인식 못한다


기본쿼리를 선택쿼리라고 함 (선택적으로 가져와서)



[TIP]

쓰지 않는 테이블을 쿼리에서 띄워두면 에러가 날 수 있으므로 사용 안하면 제거할 것



* 일치/불일치 검색 쿼리
고객 테이블의 고객ID 필드와 대여 테이블의 전화번호 필드를 이용하여
대여실적이 한번도 없는 고객조회 쿼리를 만들자
: 다른 필드에서 제시값 가져올 땐 SQL문 써야함
  그런데 SQL문에서는 같다, 같지않다가 =, <> 가 아님


         같다 : in
         같지않다: not in


 in (select 필드명 from 개체명) : 일치 검색쿼리
 not in (select 필드명 from 개체명) : 불일치 검색쿼리


(ex) 따라서 고객 ID필드의 '조건'행에
<>(select 전화번호 from 대여) (x)
not in (select 전화번호 from 대여) (o)




* 크로스탭 쿼리 (≒엑셀의 피벗테이블)
엑세스에서는 엑셀과 달리,
열레이블이 아니라 열머리글
행레이블 아니라 행머리글

1. 쿼리 유형을 크로스탭으로 선택
2. 끌어오는 순서를 가급적 지킬 것
   : 행 ->열 ->값 (-> 두번째 행 -> 세번째 행)

3. 엑세스에서 행머리글은 3, 열머리글은 1, 값은 1이 최대.

그림(p.143)으로 파악해야 함
열머리글 : 1개 (남,여는 관련이 있다. 따라서 성별 1개)
행머리글 : 2개 (영화제목, 전체대여수)
값: 아무개 필드에 대한 개수
<질문> 값은 뭘 기준?

성별필드를 다이렉트로 넣어서 열레이블 값 형태로 -1,0으로 나온 것
따라서 '필드'행에서 '작성'간 뒤,
IIF 함수를 사용
여기선 필드명 자체를 바꾸는 것이므로 필드명 : 식써줌 (x)
세미콜론 없이 바로 식을 써주면 됨
iif([성별]=-1,"남","여")



* 업데이트 쿼리 : 실행 쿼리의 일종.
 ※ 실행쿼리 : 마지막 단계에서 '실행'을 눌러줘야 작동.
  이 쿼리를 실행함으로 인해 쿼리 만들 때 사용된 테이블이 변경됨.
  쿼리 자체의 목록을 보려고 만드는 게 아님.
  (업데이트쿼리, 추가쿼리, 삭제쿼리)

[디자인] - [쿼리유형]그룹 - [업데이트]

비어있는 : 조건에 is null 쓰기

(반납일자 필드) 조건행에는 조건을,
(연체료 필드) 업데이트 행에는 조건 시 업데이트가 될 내용(식)을 써주면 됨.

실행할 때는 디자인보기에서 누르기

실행 확인은 업데이트 대상되는 테이블에서 확인할 것.

버튼과 연계되어 쓰일 수 있다.

조건 쓰는 필드와 업데이트 쓰는 필드의 순서는 서로 바뀌어도 상관없음





<지룸ㄴ>
select 할 때 왜 필드에는 [필드명] 안해줌?









- p.142 쿼리작성

- 기출문제 풀이