• 검색 결과가 없습니다.

관계형 데이터 모델

N/A
N/A
Protected

Academic year: 2022

Share "관계형 데이터 모델"

Copied!
38
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

관계형 데이터 모델

데이터베이스 저장을 위해 관계나 테이블 형태로 작성되는 대표적인 논리적 데이터베이스 모델 1. SQL(Structured Query Language)

(1) 정의 : 관계형 데이터베이스를 사용하기 위해 ANSI에서 책정한 표준 언어

(2) 특징 : 비절차적인 언어 구체적 방법 제시보다는 원하는 데이터가 무엇인지를 제시하는 고급 데이터 언어( ) 명령의 마지막 행에는 세미콜론(;) 처리

(3) 종류

1) 데이터 정의어(DDL) : CREATE(스키마 테이블 도메인 인덱스 뷰 등을 생성, , , , 새로운 필드 추가 필드 속성 변경 필드 삭제

ALTER( , , )

스키마 테이블 도메인 인덱스 뷰 등을 제거

DROP( , , , , )

데이터 정의어는 컴퓨터활용능력 시험의 특성상 생략한 점 양해 바랍니다

[ .]

2) 데이터 조작어(DML) : SELECT(검색), INSERT(삽입), UPDATE(갱신), DELETE(삭제) 3) 데이터 제어어(DCL - 보안이나 권한 부여) : GRANT(사용자에게 권한 부여)

사용자에게 권한 해제

REVOKE( )

2. SQL 사용법 (1) SELECT

테이블에 접근해서 원하는 튜플 행 이나 속성 열 을 검색하는 명령문이다( ) ( ) . 속성리스트

SELECT [ ALL/DISTINCT ] 테이블명 FROM

조건식 [ WHERE ]

속성 [ GROUP BY ]

조건식 [ HAVING ]

속성

[ ORDER BY [ASC/DESC] ];

학생 테이블 일쪽- ( )

학번 이름 성별 학과 학년 나이 A01 이장 남 전자공학 4 28 A02 이나라 여 전기통신 3 22 A03 홍길동 남 전자공학 4 24 A04 장길산 남 통신공학 4 27 A05 강한돌 여 전기공학 4 A06 유이슬 여 통신공학 2 20

성적 테이블 다쪽- ( ) 학번 이름 과목코드 점수

A01 이장 C100 85 A01 이장 C200 53 A03 홍길동 C100 76 A03 홍길동 C300 48 A05 강한돌 C200 65 A06 유이슬 C300 91

과목 테이블 일쪽- ( ) 과목코드 과목명

C100 전자기학 C200 제어계측 C300 데이터통신 C400 프로그래밍 C500 전기학

하나의 테이블로부터 검색

[ ]

샘플 : SELECT * FROM 학생; --> 모든 필드를 검색 모든 속성을 검색( ) 학번 이름 성별 학과 학년 나이 학생

SELECT , , , , , FROM ; --> 동일함

SELECT DISTINCT 학년 FROM 학생; --> 중복을 제거하고 검색 전자공학 전기통신 전기공학 통신공학( , , , ) 학과

전자공학 전기통신 통신공학 전기공학

(2)

SELECT DISTINCT 학년 학과, FROM 학생; --> 중복을 제거 두개의 속성에 동시에 적용되는 행 제거( ) 학과 학년

전자공학 4 전기통신 3 전자공학 4 통신공학 4 전기공학 4 통신공학 2

학과 학년 전자공학 4 전기통신 3 전자공학 4 통신공학 4 전기공학 4 통신공학 2

학과 학년 전자공학 4 전기통신 3 통신공학 4 전기공학 4 통신공학 2 비교 연산자 : 일반적인 비교 연산자를 이용하여 행을 검색

학생 성별 여

SELECT * FROM WHERE = ‘ ’; --> 학생테이블로부터 성별이 여자인 학생만 검색 학생 학년 학생테이블로부터 학년이 학년이상인 학생만 검색 SELECT * FROM WHERE >= 3; --> 3

학생 학년 학과 통신공학 학년이 학년

SELECT * FROM WHERE = 4 AND = ' '; --> 4 이고 학과가 통신공 학인 학생 검색

학생 학년 학과 통신공학 학년이 학년

SELECT * FROM WHERE = 4 OR = ' '; --> 4 이거나 학과가 통신공 학인 학생 검색

학생 입학일 날짜는 처리 입학일이 있다고 가정한다

SELECT * FROM WHERE >= ‘1998-03-02’; --> ‘ ’ ( 면 입학일이 1998년 3월 2일 이후에 해당하는 학생만 검색 연산자 두 값의 범위에 해당하는 행을 검색

BETWEEN :

학생

SELECT * FROM BETWEEN 학년 >= 2 AND 학년 <= 4; --> 학년이 2학년부터 4학년까지 학생 학생

SELECT * FROM NOT BETWEEN 학년 >= 2 AND 학년 <= 4; --> 부정

연산자 만능문자를 포함한 부분검색 글자 이상 대응 반드시 글자 대응

LIKE : (% : 0 , _ : 1 )

학생 이름

SELECT * FROM WHERE LIKE ‘ %’ ; --> 이씨로 시작하는 모든 학생을 검색

학생 이름

SELECT * FROM WHERE LIKE ‘ _’ ; --> 이씨로 시작하는 총글자수가 2글자인 학생을 검색

학생 학과

SELECT * FROM WHERE LIKE ‘% %’ ; --> ‘ ’통 글자가 들어있는 모든 학과

학생 이름

SELECT * FROM WHERE NOT LIKE ‘ %’ ; --> 이씨로 시작하는 모든 학생을 제외한 검색 연산자

IN :

나열된 목록에 있는 리스트만 검색

학생 학과

SELECT * FROM WHERE IN('전기공학‘, ’전자공학‘); --> 전기공학 또는 전자공학인 학생

학생 학과 전기공학 학과 전자공학

SELECT * FROM WHERE = ' ‘, OR = ’ ‘; --> 동일함

학생 학과

SELECT * FROM WHERE NOT IN('전기공학‘, ’전자공학‘); --> 부정은 NOT IN 연산자 값이 없거나 알 수 없는 값을 검색

IS NULL : , NULL

학생 나이

SELECT * FROM WHERE IS NULL; --> 나이가 NULL인 학생 검색

학생 나이

SELECT * FROM WHERE IS NOT NULL; --> 부정은 IS NOT NULL 정렬 : ASC(오름차순 생략하면 기본적으로 적용- ), DESC(내림차순)

학과 이름 학생

SELECT , FROM ORDER BY 학년 DESC; --> 학년 별로 오름차순 정렬

학과 이름 학생

SELECT , FROM ORDER BY 학과 ASC, 이름 DESC; --> 학과가 동차순이 있으면 이름을 내림차순으로 정렬

속성에 별칭 사용 : 기존필드명 또는 연산식 AS “별칭이름

SELECT 학과 AS 학과이름 성별, AS 성별구분 FROM 학생 SELECT 나이+10 AS “10년후 나이 FROM 학생

그룹함수 사용

함수 설명

속성

COUNT( ) 해당 열이 있는 총 튜플 행 의 개수( )

필드 는 모든 필드를 받을 수 있다

COUNT( ) .

의 형태는 값을 포함하여 계산된다

COUNT(*) NULL .

속성

SUM( ) 합 열은 숫자형 데이터( ) 속성

AVG( ) 평균 열은 숫자형 데이터( ) 속성

MAX( ) 최대값 속성

MIN( ) 최소값

(3)

SELECT COUNT(*) AS 인원수 FROM 학생; --> 6명 SELECT COUNT(이름) AS 인원수 FROM 학생; --> 6명 SELECT COUNT(나이) AS 인원수 FROM 학생; --> 5명 SELECT SUM(점수) AS 전체합 FROM 성적; --> 418점 SELECT AVG(점수) AS 전체평균 FROM 성적; --> 69.67

행의 그룹 생성 : GROUP BY 사용 --> 속성 열 을 두개 이상 사용하게되면 먼저 나온 필드가 선그룹이( )

되고 나중에 나오는 그룹이 후그룹이 된다 아래와 같은 테이블을 잠시 보면. 개인정보 테이블

부서 취미 이름 나이

영업 낚시 갑 25

영업 바둑 을 26

영업 낚시 병 37

인사 게임 정 41

영업 바둑 무 42

인사 바둑 기 28

인사 낚시 경 45

부서 나이 나이합계 개인정보

SELECT , Sum( ) AS FROM GROUP BY 부서; 부서 나이합계

영업 130 인사 114

부서 취미 나이 나이합계 개인정보

SELECT , , Sum( ) AS FROM GROUP BY 부서 취미, ;

부서 취미 나이합계

영업 낚시 62

영업 바둑 68

인사 게임 41

인사 낚시 45

인사 바둑 28

과목코드 점수 과목합계 과목인원 성적

SELECT , SUM( ) AS , COUNT(*) AS FROM GROUP BY 과목코드; 과목코드 과목합계 과목인원

C100 161 2 C200 118 2 C300 139 2

부서 나이 나이합계 개인정보

SELECT , Sum( ) AS FROM GROUP BY 부서 HAVING COUNT(*)> 3; --> 개 인정보 테이블로부터 부서별로 그룹을 한 후 부서별 그룹의 인원수가 3보다 큰 부서와 부서별 나이합계를 검색(그룹에 대한 조건을 제시할 때는 HAVING절을 사용한다.)

문에 또 다른 서브쿼리 서브쿼리를 이용하여 다른 테이블로부터 검색한 단일 행 또는 SELECT SELECT( ) :

여러 행을 검색할 수 있다.

(2) INSERT

원하는 테이블에 원하는 행 즉 레코드 튜플 을 삽입시키는 연산으로 하나의 테이블만 대상으로 연산하여야 한다( ) . INSERT

원하는 테이블 삽입시킬 속성들

INTO [( )]

삽입시킬 속성에 삽입될 실제 내용 문 { VALUES ( ) | SELECT }

과목 과목코드 과목명

INSERT INTO ( , ) VALUES('C500', '전자계산기구조'); --> VALUES절을 가지고 있으면 오직 하나의 행만 추가한다 해당 필드가 여러 개인데 하나의 필드만을 추가하면 나머지는 자동으로. NULL 값이 들어간다.

서브쿼리 절과는 달리 서브쿼리를 이용하여 다른 테이블로부터 검색 INSERT INTO ~ (SELECT ) : VALUES

(4)

한 여러 행을 한꺼번에 삽입이 가능하며 이때 서브쿼리 안에는 WHERE절을 이용하여 조건을 제시할 수가 있다.

성적 학번 이름 과목코드 점수

INSERT INTO ( , , , ) SELECT 학번 이름 과목코드 점수, , , FROM 점수테이블 점수

WHERE >= 90; --> 점수테이블로부터 점수가 90점 이상을 검색하여 학번 이름 과목코드 점수 필, , , 드를 성적테이블에 삽입

(3) DELETE

원하는 테이블에서 원하는 행 즉 레코드 튜플 를 삭제시키는 연산으로 하나의 테이블만 대상으로 연산하여야 한( ) 다 테이블 전체가 삭제되는 것이 아니다 조건을 지정하지 않으면 모든 행 즉 레코드가 삭제된다. . .

DELETE 테이블 FROM

조건식 [ WHERE ]

DELETE FROM 학생 WHERE 이름 = '홍길동'; --> 학생테이블에서 이름이 홍길동인 행을 삭제

서브쿼리 연산자를 이용하여 서브쿼리와 일치하는 여러 행을 한꺼번에 DELETE FROM ~ (SELECT ) : IN

삭제가 가능

성적

DELETE FROM WHERE 과목코드 IN (SELECT 과목코드 FROM 점수테이블 WHERE 점수 <= 90);

점수테이블로부터 점수가 점 이하인 과목코드를 검색한 후 성적테이블에서 검색한 과목코드와 일치

--> 90

하는 과목코드를 모두 삭제

(4) UPDATE

테이블에서 원하는 속성 값을 변경시키는 연산이다 테이블을 검색하는 연산은 여러 개의 테이블을 대상으로 연. 산할 수 있지만 테이블을 변경시키는 연산은 하나의 테이블만 대상으로 하여야 한다.

테이블명 UPDATE

속성 값 SET =

조건식 [ WHERE ]

성적 점수 점수 과목코드 성적테이블에서 과목코드가

UPDATE SET = * 1.1 WHERE = 'C200'; --> C200 인 과목에 점수에 10%를 가산

수식 서브쿼리 또는 수식 서브쿼리

UPDATE ~ SET WHERE (SELECT ) UPDATE ~ SET (SELECT )

조건절 서브쿼리를 이용하여 다른 테이블로부터 검색한 결과를 가지고 특정 세로 즉 필드의 값을 WHERE :

변경 가능하다.

학생 학년 학번 학번 성적 과목코드

UPDATE SET = 4 WHERE IN (SELECT FROM WHERE = 'C300');

성적테이블로부터 과목코드가 인 학번을 검색하고 학생테이블에서 검색한 학번과 일치하는 학년을

--> C300

모두 4학년으로 변경

성적 학번 학번 학생 학과 통신공학 학년

UPDATE SET = (SELECT FROM WHERE = ‘ ’ AND = 2) WHERE 과목코드 = 'C200'; --> 학생테이블로부터 학과가 통신공학이고 학년이 2학년인 학번을 검색하고 성적테이 블에서 학년이 4학년인 학생에 학번을 학생테이블에서 검색한 학번으로 변경

두개 이상의 테이블로부터 검색

[ ]

(5) 조인

하나 이상의 테이블로부터 자료를 검색하기 위해서 조인을 사용한다. 일반적으로 Primary Key(PK)와 Foreign 를 사용하여 조인하는 경우가 대부분을 차지한다 보통은 절에 조인 조건을 기술하며 데이터베이

KEY(FK) . WHERE

스의 명확성을 위하여 구분자 점을 사용하여 열 이름 앞에 테이블 이름을 붙인다 예 성적 학번 또는 학생 학번.( . . ) 조인의 종류

보통

Equijoin : 내부조인이라고도 하며 조인 조건이 정확하게 일치하는 경우에만 사용 보통

Outerjoin : 외부조인이라고 하며 정확하게 일치하는 행이 없을 경우 내부조인을 사용하게되면 누락

(5)

이 되어 질의 결과에 나타나지 않게 된다 따라서 누락된 행을 포함하여 전체를 출력하. 고자 할 경우에 사용

이름 학생 성적 학생 학번 성적 학번 학생테이블의 학번과 성적테이블의 SELECT FROM , WHERE . = . ; -->

학번이 서로 일치하는 경우에 한하여 학생과 성적테이블로부터 이름을 검색해라.

이름 학생 성적 학생 학번 성적 학번 학생테이블과 성적테이블에서 학

SELECT FROM , WHERE . (+) = . ; -->

생테이블의 모든 자료를 포함해서 이름을 검색해라 불일치 쿼리 작성가능.( : 학생인데 시험을 응시하지 않고 놀러간 학생을 검색 가능하다.)

과목 과목코드 과목 성적 성적 과목코드 과목 과목코드 과목테이블과 성 SELECT . FROM , WHERE . = . (+); -->

적테이블에서 과목테이블의 모든 자료를 포함해서 과목테이블의 과목코드를 검색해라 불일치 쿼리 작성가능.(

과목은 개설했으나 인기가 없어 학생이 없는 과목을 검색 가능하다

: .)

이외에는 여러 가지 조인형태가 있으나 컴퓨터활용능력의 시험범위를 벗어나므로 개만 실어놓은 점 양

[ 3

해 바랍니다.]

(6) 서브쿼리

일반적인 SELECT 문장 메인쿼리 의 절에 내장된 또 다른( ) SELECT 문장 서브쿼리 입니다 서브쿼리를 사용하여( ) . 간단한 문장을 강력한 문장으로 만들 수 있고 테이블 자체의 테이터에 의존하는 조건으로 테이블의 행을 검색할 필요가 있을 때 유용하다 괄호를 묶어 표현한다. .

서브쿼리를 사용할 수 있는 절 -

WHERE, HAVING, UPDATE

구문의 INSERT INTO

구문의 UPDATE SET

나 의

SELECT DELETE FROM

서브쿼리의 유형 -

단일 행 서브쿼리 : 오직 하나의 행만을 검색하는 서브쿼리 복수 행 서브쿼리 : 하나 이상의 행을 검색하는 서브쿼리 복수 열 서브쿼리 : 하나 이상의 열을 검색하는 서브쿼리

서브쿼리의 연산자 -

단일 행 연산자 : =, >=, <=, >, <, <>

복수 행 연산자 : IN, NOT IN, ANY, ALL, EXISTS

학번 이름 성적 점수 점수 성적 단일행 성적테이

SELECT , FROM WHERE > (SELECT AVG( ) FROM ); -->

블에서 점수의 평균은 한 행만 존재

학번 이름 성적 점수 점수 성적 과목코

SELECT , FROM WHERE > (SELECT MIN(AVG( )) FROM GROUP BY 드); --> 보이기는 복수행처럼 보이나 각 과목코드별 평균점수의 최소값이므로 단일행

과목코드 과목명 과목 과목코드

SELECT , FROM WHERE IN (SELECT DISTINCT 과목코드 FROM 성적); =

과목코드 과목명 과목 과목코드

SELECT , FROM WHERE IN (SELECT 과목코드 FROM 성적 GROUP BY 과 목코드); --> 복수 행 성적테이블에서 과목코드는 여러 행이 존재

이 자료에서 설명은 을 중심으로 설명한 자료임을 알려드립니다

[ Oracle SQL .]

(6)

공부하기 전에 몇 마디 말씀드립니다 액세스 쿼리는. SQL과 비슷하면서도 다르다 만능문( 자 %의 사용불가 날짜에, #~#처리 별칭에 반드시, AS절 사용 문자형 자료의 단일화, 등 는 점을 말씀드립니다 이왕) . SQL을 공부하시려면 액세스를 통한 쿼리를 공부하시기 보다는 SQL(Oracle, MS 등 로 실전 연습을 하시는게 낫지 싶습니다 좀더 깊이 있게 공) . 부하시면 제가 말씀드린 점을 통감하시리라 봅니다. ^&^

쿼리 - ACCESS -

1. 쿼리

(1) 정의 : 질의 또는 질문이라고도 하며 테이블의 레코드를 정렬하거나 조건을 만족하는 레코드를 추출하거나 통 계의 역할을 수행

(2) 종류

1) 선택쿼리 : 일반적으로 사용하는 쿼리로 하나 또는 2개 이상의 테이블이나 다른 쿼리를 소스로하여 새로운 데이터시트형태로 표시되며 이 데이터시트는 폼이나 보고서의 또 다른 소스가 되기도하고 액션 쿼리로 재작성이 되기도 한다.

2) 액션쿼리 : 선택쿼리로 작성된 테이터시트를 기본으로 2차적인 작업을 처리하는 쿼리

① 테이블작성 쿼리 : 새로운 테이블을 작성하는 쿼리

② 업데이트 갱신( ) 쿼리 : 테이블의 모든 레코드 또는 일부 레코드의 데이터를 새로운 값으로 변경하는 쿼리

③ 추가 쿼리 : 기존의 테이블에 레코드를 추가하는 쿼리 단일 테이블인 경우는 굳이 추가 쿼리를 사용하지( 않고 입력만으로 가능하다.)

④ 삭제 쿼리 : 테이블의 모든 레코드 또는 일부 레코드를 삭제하는 쿼리 3) 크로스탭 쿼리 : 각종 레코드를 집계하기위한 쿼리 엑셀의 피벗테이블과 비슷( )

4) 파라미터 매개 변수 쿼리( ) : 쿼리를 실행할 때마다 입력을 요구하여 입력된 값과 일치하는 레코드만 데이터 시트로 보여주는 쿼리

5) SQL쿼리 : SQL언어를 직접 구현

① 통합 : 두 개 이상의 테이블이나 쿼리에서 상응하는 필드들을 한 필드로 결합합니다 통합 쿼리를 실행하. 면 통합 쿼리에 들어 있는 테이블이나 쿼리의 해당 필드에서 레코드를 되돌립니다.

② 창구 : Microsoft Access 창구 쿼리를 사용하여 Microsoft FoxPro와 같은 ODBC 데이터베이스 서버에 명 령을 직접 전달할 수 있습니다 창구 쿼리를 사용하면 테이블을. 연결하지 않고 서버에서 직접 테이 블 작업을 할 수 있습니다.

③ 데이터 정의 : SQL의 데이터 정의어(DDL)를 직접 입력하여 사용하는 쿼리 스키마 테이블 도메인 인덱스 뷰 등을 생성 - CREATE( , , , ,

새로운 필드 추가 필드 속성 변경 필드 삭제

- ALTER( , , )

스키마 테이블 도메인 인덱스 뷰 등을 제거

- DROP( , , , , )

(7)

2. 액세스 쿼리 사용법 (1) 액션쿼리

① 별칭 사용하기 : 기존의 필드에 대한 연산식이나 함수식을 이용하여 새로운 필드명을 정의하거나 기존의 필드 명의 이름을 다른 필드로 정의하기

교원업적 테이블

아래와 같이 선택쿼리를 작성한다 별칭의 작성은 새로운 필드이름 기존필드연산식 또는 함수식 형태로 작성한다. ‘ : ’ . 기존필드는 굳이 []처리를 하지 아니하여도 자동으로 처리되지만 공백을 포함한 필드명은 반드시 해줘야 한다.

정렬 : 특정필드에 대한 오름차순과 내림차순을 적용 표시 : 데이터시트에 표시 유무를 설정

조건 : 같은 행에 조건을 입력하면 AND 적용이 되며 아래 또는 이 표시된 아래 줄에 입력하면‘ :’ OR 적용 아래 추가된 그림에서처럼 설정에 따른 확인을 해보자

(8)

데이터시트 보기

보기 을 알면 직접 입력해도 됩니다 단 액세스는 를 생략 불가

SQL (SQL . AS )

클릭

(9)

② 와* DISTINCT를 필드에 사용하기

디자인 보기

보기 을 알면 직접 입력해도 됩니다 단 액세스는 를 생략 불가

SQL (SQL . AS )

데이터시트 보기 전체 필드가 보여 진다( .)

위의 그림은 DISTINCT를 사용하기 전 그림입니다 전체 레코드 수만큼 반복하여 쿼리가 수행된걸 확인 가능합니. 다.

자 이번에는 DISTINCT를 사용해서 해보겠습니다 디폴트가 오름차순 정렬입니다.( .) 위의 왼쪽 디자인보기 상태에 서는 입력이 불가능하므로 SQL 보기 상태로 한 후 아래 그림과 같이 입력합니다.

더블클릭

코드반복

(10)

하나의 열에 대한 적용이며 전에 SQL에서 설명드린 것처럼 두개의 열에 적용하면 우선순위가 왼쪽 열에 먼저 적 용이 되고 난 다음에 오른쪽 열에 적용된다.

③ ORDER BY 정렬 적용 오름차순( ASC는 생략가능)

④ WHERE 절은 설명은 생략하겠습니다 워낙 조건형태가 다양하므로. SQL문을 참조하시기 바랍니다.

⑤ GROUP BY 특정 열 : 특정 열을 기준으로 그룹 결정

클릭

(11)

위의 그림처럼 SQL을 알면 직접 입력해도 됩니다 아울러 단지 그룹만 만드는 걸로 끝나지 않고 집단함수 처리. 를 해보도록 하겠습니다.

위의 그림에서 보듯이 결과는 동일하다 단지 한글 액세스인지 영문 액세스인지 차이가 날 따름입니다 그리고 집. . 아래와 같이 입력하고 다

른 곳을 클릭해도 왼쪽과 같은 결과이다.

(12)

단 함수 SUM과 AVG는 반드시 숫자 열을 선택하셔야 결과가 나옵니다 일단 아래와 같은 결과를 확인한 후에 이. 번에는 직급별 인원수의 합을 만들어 보겠습니다.

.

위의 4개의 결과는 동일하며 어떤 필드를 사용해도 된다.

이번에는 합계를 구하는데 있어서 2개의 열을 사용해보도록 하겠습니다.

아래와 같이 입력하고 다른 곳을 클릭해도 왼쪽과 같은 결과이다. COUNT(*)를 입력해도 같은 결과 이다 그러나. COUNT(*) Null값을 포함한다 만. 약에 직급 열에 Null값이 있었다면 COUNT(*)

직급 의 결과는 다르다 COUNT([ ]) .

(13)

먼저 나온 열을 1그룹이라고 가정하면 두 번째 나온 열을 2그룹으로 생각하면 이해가 쉬울거라 생각합니다. 이번에는 그룹을 결성한 후에 그룹에 조건을 주는 Having절에 대한 예제를 하나 만들어 보겠습니다 아래 그림과. 같은 테이블이 있습니다 부서 중복이. 4개 이상인 쿼리를 작성한다면

⑥ 매개변수 쿼리

작성은 선택쿼리에서 조건에 ‘[내용 을 입력하시면 됩니다 조건이 자주 변하게 되면 매번 쿼리를 열어 수정을]’ . 하는 불편이 있기 때문에 대화상자를 통해 원하는 값을 입력하도록 하면 효율적이라 생각합니다 보통은 필드명. 을 대괄호([]) 처리하는게 일반적인데 일단 대괄호([])를 한 상태에서 필드명과 일치하는지를 먼저 조사한 후에 일치한 경우가 없다면 매개변수 처리하므로 그리 어려움이 없다고 보시면 됩니다.

(14)

물론 조건에 아래와 같이 입력하면 되지만 [선택하시오 경영학과 경제학과 영문학과 비서학과 무역학과, , , , ] 입력이 없는 상태에서 모든 데이터를 표시하려면 위와 같이 만능문자를 같이 사용하면 편리합니다 하나의 매개변수를. 사용할 경우 단일 매개변수 쿼리라 하며 두개를 사용하는 경우를 다중 매개변수 쿼리라 한다 아래 그림과 같이.

시작값 끝값 를 이용하여 시작값과 끝값을 입력받아서 쿼리를 실행할 수도 있다

‘Between [ ] And [ ]’ .

물론 또는 부분에 ‘Between [시작값] And [끝값] Is Null’을 삽입한 상태를 설명을 드리자면 ‘Between [시작값] 끝값 를 입력하지 않고 매개변수 값에 아무것도 입력하지 않고 쿼리를 실행시키면 아무런 데이터도 And [ ] Is Null’

표시되지 않는다.

아래 글은 액세스 도움말입니다.

매개 변수 쿼리에서 모든 레코드를 반환하는 옵션이 필요한 경우 : 조건 셀에 프롬프트가 들어 있는 필드 아래에

있는 디자인 눈금에서 또는 셀에 prompt Is Null을 입력합니다 여기에서. prompt는 해당 필드의 조건 셀에 있는 프 롬프트와 같은 것입니다 예를 들어. , CategoryID 필드에 다음과 같이 입력합니다.

조건 : Like [Enter Category ID:]

또는 : [Enter Category ID:] Is Null

이제 쿼리를 실행할 때 매개 변수 값 입력 대화 상자를 빈 상태로 두면 모든 레코드가 반환됩니다.』

(15)

⑦ 테이블 작성 액션 쿼리

현재 데이터베이스를 선택하면 작업중인 mdb파일에 테이블이 생성되며 다른 데이터베이스를 선택하면 또 다른 mdb파일에 테 이블이 생성된다.

(16)

이번에는 테이블의 구조만 만들어 보기로 하자 위의. SQL문에 아래와 같이 한 줄을 입력해보자.

(17)

실행 도구상자를 클릭하여 테이블을 작성한다.

(18)

위와 같은 처리를 통해서 다테이블로부터 1테이블을 작성가능하다 테이블을 분리하여 여러 개의 테이블을 작성.(

하는 일종의 정규화 작업이라고 보셔도 무난할 듯 합니다.)

이번에는 날짜 형태의 열을 만들어 테스트를 해보겠습니다 자동으로. #처리가 됨을 보실 수 있을겁니다 아마도. 날짜를 한 덩리리로 인식해야하는 문제 때문에 #~#처리하지 않나 싶기도 하고요.

(19)

⑧ 삽입 액션쿼리

특정 테이블로부터 작성된 선택 쿼리의 결과인 데이터시트를 다른 테이블에 추가하는 쿼리로 보통은 VALUE절을 이용하여 일일이 입력하지만 여기서는 서브쿼리를 이용하여 작성하는 예제를 보여드리겠습니다 아래 그림과 같. 은 테이블을 한 번 보시면

직급코드와 직급을 선택하여 직급 테이블을 구조만 만들어 놓은 후 삽입 쿼리를 이용하여 데이터를 추가해보도록‘ ’ 하겠습니다.

·

선택쿼리를 작성한 후에 아래 그림과 같이 추가 쿼리를 선택한다 물론 선택쿼리에서 조건을 주어 일부 행만 검. 색을 할 수도 있습니다 여기서는 조건을 사용하지 않겠습니다. .

(20)
(21)

⑨ 업데이트 액션쿼리

테이블의 데이터를 갱신할 때에 사용하는 쿼리로 많은 양의 레코드를 갱신하고자 하는 경우 편리합니다 아래 그. 림의 테이블에서 학생지도 점수가 300점 이상인 경우에만 호봉에 +1을 갱신하고자 합니다.

선택 쿼리를 아래와 같이 작성한 후에

(22)
(23)

⑩ 삭제 액션쿼리

특정 테이블에서 해당하는 행 레코드 을 한꺼번에 삭제하는 쿼리입니다 보통 삭제를 하면 행단위로 삭제되기 때( ) . 문에 특정 열만 삭제하는 개념이 아니라는 사실을 먼저 명심하시기 바랍니다. SQL에서 보셨듯이 “DELETE

테이블 입니다 별도의 열을 지정하지 않습니다

FROM ” . .

아래 그림의 테이블에서 학생지도 점수가 300점 이상인 경우에 해당하는 사람을 삭제하고자 합니다.

선택 쿼리를 아래와 같이 작성한 후에

교원업적 근속기간 도 같은 결과

. +1’

(24)
(25)

확인하고 다시 실행시키면 제대로 다시 실행됩니다.(???)

아마도 액세스와 SQL의 차이가 아닌가 싶습니다.

⑪ 크로스탭 쿼리

굳이 우리말로 해석하자면 집계표 형태로 제시되는 쿼리라 할수 있겠습니다 엑셀에도 이런 비슷한 기능이 있습. 니다 피벗테이블이라는 마치 필터링의 기능과 더불어 다양한 형태로 각종 함수를 통해서 표의 형태로 제시되는. 기능입니다 오히려 피벗테이블을 먼저 공부하시고 크로스탭 쿼리를 해보시는 것도 좋지 싶습니다. .

아래와 같이 입력하고 다 른 곳을 클릭해도 왼쪽과 같은 결과이다.

(26)

그리고 한 가지 더 말씀드리자면 이미 GROUP BY에 대한 설명과 액세스 합계 요약 쿼리에 대한 설명을 드렸습 니다 그 합계 요약 쿼리 자체도 집계표의 역할을 합니다 위의 그림도 단지 아래 표와 같이 그룹이 행방향 하나. . 만 제시 된거라 생각하시면 될지 싶습니다.

그룹이름 집단함수1 집단함수2

그룹1 요약 요약

그룹2 요약 요약

그룹3 요약 요약

그룹4 요약 요약

저 위의 표를 엑셀의 행과 열단위처럼 꾸며본다면 아래 표가 바로 크로스탭 쿼리가 되는 것입니다.

열머리글1 열머리글2 열머리글3 행머리글1 데이터값 데이터값 데이터값 행머리글2 데이터값 데이터값 데이터값 행머리글3 데이터값 데이터값 데이터값 행머리글4 데이터값 데이터값 데이터값

또 한가지 부연설명을 하자면 행머리글이 GROUP BY 절로 된다는 점입니다 이것 또한 요약합계의 원리를 반영. 한 결과가 아닌가 싶습니다 또한 그룹을. 2개 이상으로 하여 1차 그룹과 그에 따른 2차 그룹으로 나누어 수행할 수도 있습니다 단지 표시된 데이터시트가 어지럽게 다양한 경우로 제시된다는 점이 조금은 보기가 좋지 않을지. 싶습니다.

쿼리에서 크로스탭 쿼리를 클릭한다 각 직급에 따른 연구점수의 평균을 집계 해보겠습니다. .

(27)

위의 형태가 단순히 GROUP BY를 취한 경우입니다 그러한 후에 실행을 해보면 위와 같이 에러 표시가 나옵니. 다. GROUP BY는 단순한 선택 쿼리이며 크로스탭 쿼리와는 다르다는 이유인거 같습니다 뺄거는 빼고 넣을거는. 넣자는 말인거 같으니 열머리글을 넣어보도록 하겠습니다.

(28)

위의 결과에서 보듯이 마치 행과 열로 교차되는 집계표가 완성되었습니다 물론 마법사를 이용해도 되지만 그리. 어려운 개념은 아니지 싶습니다 이번에는 행머리글 하나를 추가하여 보겠습니다 일명 요약 합계를 추가한다고. . 생각하셔도 될지 싶습니다.

테이블을 조인해서 한 번 더 해보겠습니다.

(29)

⑫ 조인

조인이란 두개 이상으로 분리된 테이블에 저장된 정보를 서로 연결하여 데이터를 검색하기 위한 기능이라고 보시 면 됩니다 일반적으로 두 테이블간의 관계를 설정하면 자동 조인이 되며 또는. 1쪽의 테이블에 기본키를 설정하 고 다쪽의 테이블을 선택쿼리에서 표시를 하면 자동으로 조인이 되게 됩니다.

아래 두개의 테이블을 가지고 조인을 해보도록 하겠습니다 이미 관계를 그림과 같이 맺어놓은 상태입니다. .

학생 테이블 일쪽- ( )

학번 이름 성별 학과 학년 나이 A01 이장 남 전자공학 4 28 A02 이나라 여 전기통신 3 22 A03 홍길동 남 전자공학 4 24 A04 장길산 남 통신공학 4 27 A05 강한돌 여 전기공학 4 A06 유이슬 여 통신공학 2 20

성적 테이블 다쪽- ( ) 학번 이름 과목코드 점수

A01 이장 C100 85 A01 이장 C200 53 A03 홍길동 C100 76 A03 홍길동 C300 48 A05 강한돌 C200 65 A06 유이슬 C300 91

내부조인은 두 테이블이 서로 일치하는 데이터만 검색하고자 하는 경우에 사용하는 조인 방법으로 아래 그림과 같이 조인선 양쪽이 아무런 화살표 표시가 없이 직선만 표시된 상태입니다 학생테이블에는. A02학번의 이나라가 있고 A04 장길산이 있는데 이 두분이 시험 당일날 놀러간 모양입니다. ^&^ 그래서 시험을 제낀 듯 합니다.

(30)

외부조인에는 레프트 조인과 라이트 조인이 있습니다 말 그대로 왼쪽 테이블을 모두 표시하느냐. ? 아니면 오른쪽 테이블의 열을 모두 표시하느냐? 차이라고 생각하시면 될지 싶습니다 조인선을 선택하고 더블클릭해 보도록 하. 겠습니다 조인속성이라는 대화상자가 나옵니다 처음에 있는 항목이 내부조인 두 번째 항목이 레프트 외부조인. . , , 세 번째 항목이 라이트 외부조인입니다 아래 그림의 빨간색 원의 모양을 한번 유심히 보시기 바랍니다. .

굳이 외부 조인의 경우는 라이트를 사용하는 경우가 거의 없다고 보시면 될지 싶습니다 언젠가 개발팀에서 근무. 하는 후배에게 물어보니 구별안하고 사용하는데 전혀 지장이 없다고 말하더군요.

내부조인 레프트 외부조인 라이트 외부조인

(31)

한가지 부연설명을 하자면 외부조인을 통해서 불일치 검색이 가능하다는 겁니다 위에서도 언급했지만 시험을 안. 보고 소위 말하는 땡땡이를 친 학생을 알아보고자 한다면 절대 내부조인을 통해서는 알아낼 수 없습니다 레프트. 외부조인을 한 다음에 아래와 같이 두가지 방법으로 적용해보도록 하겠습니다.

레프트 외부조인

라이트 외부조인

(32)

조인을 하지 않고 선택쿼리를 실행하면 아래 빨간색 원 부분처럼 커티션 곱이라고 하여 두테이블의 행의수를 서 로 곱한 숫자 만큼의 행으로 구성된 데이터시트를 보게 될겁입니다 아래와 같이.

성적 학번

SELECT . FROM 성적 대신에 성적 학번만. 써도 됩니다.

(33)

마치며

- -

처음에 너무 크게 스케일을 잡아 정리를 어떤 식으로 나가야 할지 많은 고민을 했습니다 그리. 고 무더위와의 한판 싸움도 늦게 나온 이유가 되지 않나 변명을 해봅니다 결국은 용두사미가. 되지 않나 조심스럽게 걱정을 해봅니다 아무쪼록 이 자료를 통해서 시험들 잘 보시기 바랍니다. . 늦게나마 자료를 만들어 이제야 무거운 짐을 덜은 기분입니다 또 다른 시작을 해야 한다는 가. 벼움으로 기쁘기까지 합니다. ^&^

자료는 이론 설명하는 부분과 액세스 파일 두개를 가지고 연습을 하셨음 합니다 같이 업로드를. 해드릴테니 열공하셔서 좋은 결과가 있으시기 바랍니다 그리고. 32쪽 이후에 실은 내용은 액세 스 도움말을 복사한 것입니다 언제나 강조하지만 정말 도움말이 최고의 참고서가 아닌가 싶습. 니다 아래 내용도 시간이 나시면 차근차근 읽어보시고 다시 말씀드리지만. SQL에서 데이터 정 의어(DDL) 부분은 생략해드린 점 정말 송구스럽게 생각합니다.

그리고 도메인 함수 부분은 이미 블로그에 올렸습니다 부족하지만 그 자료를 보시고 미미하다. 싶으면 메일이나 댓글을 통해서 질문을 해주셨음 합니다 그리고 배열수식 또한 지금 정리 중인. 데 아무래도 늦어질거라고 생각합니다 전에도 말씀드렸지만 오프라인으로 설명을 드렸으면 하. 는 아쉬움이 큰지라 더더욱 그런게 아닌가 싶습니다 더욱이 그 방대한 부분을 어떤 식으로 전. 개를 해야 할지? 그 부분이 너무 난감하군요 또 시험을 위한 범위와 실무를 위한 범위 사이에. 서 많은 고민을 하고 있습니다 아무쪼록 빠른 시일내 해결하도록 노력을 약속드립니다. .

정말 부족한 점이 많습니다 너무 모라고 하지 마시고요. . ^^* 꾸벅

(34)

문 [SELECT ]

데이터베이스 엔진에서 데이터베이스의 정보를 레코드 집합으로 반환하도록 지정합니다

Microsoft Jet .

구문

SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [, ...]]}

FROM tableexpression [, ...] [IN externaldatabase]

[WHERE... ] [GROUP BY... ] [HAVING... ] [ORDER BY... ]

[WITH OWNERACCESS OPTION]

문은 다음 부분으로 이루어집니다

SELECT .

부분 설명

또는 조건부 중 하나입니다 조건부를 사용하여 반환되는 레코드 predicate ALL, DISTINCT, DISTINCTROW TOP .

수를 제한합니다 조건부를 지정하지 않을 경우 기본값은. ALL입니다. 지정된 테이블의 모든 필드를 선택하도록 지정합니다

* .

레코드를 선택할 필드가 있는 테이블의 이름입니다

table .

검색할 데이터가 있는 필드의 이름입니다 둘 이상의 필드가 포함되면 나열된 순서대로 검색됩니다

field1, field2 . .

의 원래 열 이름 대신 열 머리글로 사용할 이름입니다

alias1, alias2 table .

검색할 데이터가 있는 테이블의 이름입니다

tableexpression .

에 지정된 테이블이 현재 데이터베이스에 없을 경우 해당 테이블이 있는 데이 externaldatabase tableexpression

터베이스의 이름입니다.

주의

이 작업을 수행하려면 Microsoft® Jet 데이터베이스 엔진에서 지정된 테이블을 검색하여 선택한 열을 추출하고 조건을 만족시키는 행을 선택한 다음 결과 행을 지정된 순서대로 정렬하거나 그룹화합니다.

문은 데이터베이스의 데이터를 변경하지 않습니다

SELECT .

는 대개 문에서 제일 먼저 나오는 단어입니다 대부분의 문은 문이나

SELECT SQL . SQL SELECT SELECT...INTO

문입니다.

문에 필요한 최소한의 구문은 다음과 같습니다

SELECT .

SELECT fields FROM table

별표(*)를 사용하여 테이블의 모든 필드를 선택할 수 있습니다 다음은. Employees 테이블의 모든 필드를 선택하 는 예제입니다.

SELECT * FROM Employees;

절에 있는 둘 이상의 테이블에 같은 필드 이름이 포함된 경우 필드 이름 앞에 테이블 이름과 점 연산자

FROM .( )

(35)

를 입력합니다 다음 예제에서. Department 필드는 Employees 테이블 및 Supervisors 테이블에 모두 있습니다. 다음은 Employees 테이블의 부서와 Supervisors 테이블의 부서장 이름을 선택하는 SQL 문입니다.

SELECT Employees.Department, Supervisors.SupvName

FROM Employees INNER JOIN Supervisors

WHERE Employees.Department = Supervisors.Department;

개체가 만들어질 때 데이터베이스 엔진은 테이블의 필드 이름을 개체의

Recordset Microsoft Jet Recordset

개체 이름으로 사용합니다 다른 필드 이름을 사용하려는 경우 또는 필드 생성에 사용된 식에 이름이 내포

Field .

되지 않은 경우 AS 예약어를 사용합니다. 다음은 Birth라는 제목을 사용하여 결과 Recordset 개체에 반환된 개체의 이름을 지정하는 예제입니다

Field .

SELECT BirthDate

AS Birth FROM Employees;

모호하거나 중복된 Field 개체 이름을 반환하는 집계 함수나 쿼리를 사용할 경우 AS 절을 사용하여 Field 개체의 대체 이름을 지정해야 합니다 다음은. HeadCount라는 제목을 사용하여 결과 Recordset 개체에 반환된 Field 개 체의 이름을 지정하는 예제입니다.

SELECT COUNT(EmployeeID)

AS HeadCount FROM Employees;

[SELECT...INTO]

테이블 만들기 쿼리를 만듭니다.

구문

SELECT field1[, field2[, ...]] INTO newtable [IN externaldatabase]

FROM source

문은 다음 부분으로 이루어집니다

SELECT...INTO .

부분 설명

새 테이블로 복사할 필드의 이름입니다

field1, field2 .

만들려는 테이블의 이름이며 표준 이름 규칙을 따라야 합니다 이 기존 테이블의 이름과 같으

newtable . newtable

면 포착 가능 오류가 발생합니다.

외부 데이터베이스의 경로입니다 경로에 대한 자세한 내용은 절을 참고하십시오

externaldatabase . IN .

레코드를 선택할 기존 테이블의 이름입니다 단일 또는 다중 테이블이나 쿼리를 사용할 수 있습니다

source . .

주의

테이블 만들기 쿼리를 사용하여 레코드를 보관하거나 테이블의 백업 복사본을 만들거나 다른 데이터베이스로 내

(36)

보낼 복사본을 만들거나 특정 기간의 데이터를 표시하는 보고서의 기초로 사용할 수 있습니다 예를 들어 매달. 같은 테이블 만들기 쿼리를 실행하여 지역별 월간 매출 보고서를 만들 수 있습니다.

참고

새 테이블에 기본 키를 정의할 수 있습니다 테이블을 만들 때 새 테이블의 필드는 쿼리에서 원본으로 사용하는. 테이블에 있는 각 필드의 데이터 형식 및 필드 크기를 상속받지만 필드 또는 테이블 속성은 상속받지 않습니다.

기존 테이블에 데이터를 추가하려면 추가 쿼리를 만드는 대신 INSERT INTO 문을 사용합니다.

테이블 만들기 쿼리를 실행하기 전에 선택될 레코드를 확인하려면 같은 선택 조건을 사용하는 SELECT 문의 결과 를 먼저 확인합니다.

연산 [UNION ]

둘 이상의 독립 쿼리 또는 테이블의 결과를 결합하는 통합 쿼리를 만듭니다.

구문

[TABLE] query1 UNION [ALL] [TABLE] query2 [UNION [ALL] [TABLE] queryn [ ... ]]

연산은 다음 부분으로 이루어집니다

UNION .

부분 설명

문 저장된 쿼리의 이름 또는 키워드가 앞에 오는 저장된 테이블의 이름입니다

query1-n SELECT , TABLE .

주의

단일 UNION 연산으로 둘 이상의 쿼리 테이블 및, SELECT 문의 결과를 원하는 방식으로 병합할 수 있습니다 다. 음은 New Accounts라는 기존 테이블과 SELECT 문을 병합하는 예제입니다.

1 : TABLE [New Accounts] UNION ALL 행

2 : SELECT * FROM Customers WHERE OrderAmount > 1000;

기본적으로 UNION 연산을 사용하면 중복된 레코드가 반환되지 않습니다 하지만 모든 레코드가 반환되도록. ALL 조건부를 포함할 수 있습니다. ALL 조건부를 포함하면 쿼리가 더 빨리 실행됩니다.

연산의 모든 쿼리는 같은 수의 필드를 요청해야 하지만 필드 크기나 데이터 형식이 같을 필요는 없습니 UNION

다.

별칭은 첫 번째 SELECT 문을 제외한 다른 절에서는 무시되므로 첫 번째 SELECT 문에서만 별칭을 사용합니다. 절에서는 첫 번째 문에서 지정된 이름으로 필드를 참조합니다

ORDER BY SELECT .

참고

각 쿼리 인수에서 GROUP BY 또는 HAVING 절을 사용하여 반환된 데이터를 그룹화할 수 있습니다.

마지막 query 인수의 끝에서 ORDER BY 절을 사용하여 반환된 데이터를 지정된 순서대로 표시할 수 있습니다.

하위 쿼리 [SQL ]

또는 문이나 다른 하위 쿼리에 중첩되어 있는 SELECT, SELECT...INTO, INSERT...INTO, DELETE UPDATE

(37)

문입니다 SELECT .

구문

다음 세 가지 구문 형식을 사용하여 하위 쿼리를 만들 수 있습니다.

comparison [ANY | ALL | SOME] (sqlstatement) expression [NOT] IN (sqlstatement)

[NOT] EXISTS (sqlstatement)

하위 쿼리에는 다음과 같은 부분이 있습니다.

부분 설명

식과 해당 식을 하위 쿼리 결과와 비교하는 비교 연산자입니다

comparison .

하위 쿼리 결과 집합을 검색할 식입니다

expression .

다른 문과 동일한 형식 및 규칙을 사용하는 문이며 괄호로 묶어야 합니다

sqlstatement SELECT SELECT .

주의

문의 필드 목록이나 또는 절에서 식 대신에 하위 쿼리를 사용할 수 있습니다 하위 쿼

SELECT WHERE HAVING .

리에서 SELECT 문을 사용하여 WHERE 또는 HAVING 절 식에서 계산할 하나 이상의 특정 값 집합을 제공합니 다.

주 쿼리에서 동의어인 ANY 또는 SOME 조건부를 사용하여 하위 쿼리에서 검색된 임의의 레코드와 비교를 만족 시키는 레코드를 검색합니다 다음은. 25% 이상의 할인율로 판매된 임의의 제품보다 단가가 높은 모든 제품을 반 환하는 예제입니다.

1 : SELECT * FROM Products 행

2 : WHERE UnitPrice > ANY --> IN과 동일 해석 가능

3 : (SELECT UnitPrice FROM OrderDetails WHERE Discount >= 0.25);

주 쿼리에서 ALL 조건부를 사용하여 하위 쿼리에서 검색된 모든 레코드와 비교를 만족시키는 레코드만 검색합니 다 위의 예제에서. ANY를 ALL로 바꾸면 25% 이상의 할인율로 판매된 모든 제품보다 단가가 높은 제품만 반환되 므로 훨씬 더 제한적입니다.( >ALL(하위 쿼리) : 최대값보다 큰, <ALL(하위 쿼리) : 최저값보다 작은 --> 모든 값을을 가지고 오기 때문에 )

주 쿼리에서 IN 조건부를 사용하여 하위 쿼리의 일부 레코드에 동일한 값이 있는 레코드만 검색합니다 다음은. 할인율이 25% 이상인 모든 제품을 반환하는 예제입니다.

1 : SELECT * FROM Products 행

2 : WHERE ProductID IN

3 : (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

반대로 주 쿼리에서 NOT IN을 사용하여 하위 쿼리의 레코드와 동일한 값이 없는 레코드만 검색할 수도 있습니 다.

참 거짓 비교에서/ EXISTS 조건부와 선택적으로 NOT 예약어를 사용하여 하위 쿼리에서 반환되는 레코드가 있는 지 여부를 확인할 수 있습니다.

(38)

하위 쿼리에서 테이블 이름 별칭을 사용하여 하위 쿼리 외부의 FROM 절에 나열된 테이블을 참조할 수 있습니다. 다음은 직위가 같은 모든 직원의 평균 급여보다 급여가 크거나 같은 직원 이름을 반환하는 예제입니다.

테이블에는 이라는 별칭이 지정됩니다 Employees "T1" .

1 : SELECT LastName, 행

2 : FirstName, Title, Salary

행 테이블이름을 으로 별칭

3 : FROM Employees AS T1 --> Employees T1 행

4 : WHERE Salary >=

5 : (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

위의 예제에서 AS 예약어는 선택 요소입니다.

일부 하위 쿼리는 크로스탭 쿼리에서 조건부(WHERE 절의 조건부 로 사용할 수 있습니다 하지만 크로스탭 쿼리) . 에서 하위 쿼리를 결과(SELECT 목록의 결과 로 사용할 수는 없습니다) .

매개 변수 쿼리에서 모든 레코드를 반환하는 옵션이 필요한 경우

[ ]

조건 셀에 프롬프트가 들어 있는 필드 아래에 있는 디자인 눈금에서 또는 셀에 prompt Is Null을 입력합니다 여. 기에서 prompt는 해당 필드의 조건 셀에 있는 프롬프트와 같은 것입니다 예를 들어. , CategoryID 필드에 다음과 같이 입력합니다.

이제 쿼리를 실행할 때 매개 변수 값 입력 대화 상자를 빈 상태로 두면 모든 레코드가 반환됩니다.

셀 입력 내용

조건 Like [Enter Category ID:]

또는 [Enter Category ID:] Is Null

참조

관련 문서

에 위치하는 조건에 만족하는 레코드를 검색함 FindRecord 특정한 조건에 맞는 첫 번째 레코드를 검색함 GoToControl 활성화된 폼에서

● 프린터가 자동 응답기, 컴퓨터 다이얼업 모뎀 또는 다중 포트 전환기와 같은 전화 장치와 동일한 전화 회 선을 사용하는 경우 팩스 신호가 작아질 수

• PlayMemories Home: 컴퓨터로 이미지를 가져와서 다양한 방법 으로 이미지를 사용할 수 있습니다 (22 페이지 ).. • Image Data Converter:

이 사람은 다음과 같이 관계형 대수로 기 술된

 다중 접근(Multiple Access): 노드나 지국이 다중점 또는 브로드캐스트 링크라고 부르는 공유 링크를 사용할 때 링크 에 접근하는 것을 조율하기 위한 다중 접근

◈ 어떤 데이터 언어가 relational calculus가 표현할 수 있는 모든 질의 를 표현할 수 있을 때 relationally complete 하다고 함

Customer 테이블의 Primary Key 인 custid의 경우 테이블생성시 clustered index가 생성 PK가 없을경우 정상수행.. 자동 생성된 경우

일반적인 디자인에는 Bard Button, MICKey, Copak, Entristar 가 있습니다.. 내시경을