15 단원 데이터베이스질의 1. 쿼리의기본 2. 식의사용 3. 집단함수및 Group By절 4. 다중테이블쿼리 5. 실행질의 1/22
1. 쿼리의기본 1) 쿼리 ( 질의, Query) 의개념 쿼리 (Query) 는사용하면데이터베이스에서특정레코드를추출하여다양한방법으로데이터를검색, 유지, 관리할수있는데이터베이스개체입니다. 특정테이블이나폼이닫혀있는상태에서원하는레코드의집합을볼때, 원하는레코드가있는테이블이둘이상이거나, 검색된레코드의필드를제어하거나필드값을계산할때사용되며, 폼, 보고서, 데이터액세스페이지등의원본으로사용할수도있습니다. 쿼리의종류 선택쿼리 : 지정된조건으로여러개의테이블에서데이터를검색한다음, 지정된순서대로표시한다. 즉레코드를그룹으로묶어서합계, 개수, 평균, 기타합계등을계산하는쿼리다. 매개변수쿼리 : 검색조건또는필드에삽입할값과같은정보를입력할수있는쿼리매개변수대화상자를통하여입력받아질의사용하는질의이다. 실행쿼리 : 여러레코드를한꺼번에변경할수있는쿼리로삭제쿼리, 업데이트쿼리, 추가쿼리, 테이블작성쿼리등네가지로나뉜다. 특히실행쿼리는테이블의내용을변경하는질의로서여러개의레코드를한번에변경할수있다. SQL 쿼리 : SQL 문을사용하여만드는쿼리로통합쿼리, 창구쿼리, 데이터정의쿼리, 하위쿼리등이있다. 크로스탭쿼리 : 데이터시트의왼쪽에있는정보를가로로그룹화한후데이터의개수, 합계, 평균등의요약을계산을수행한다. 데이터시트를분석하기쉽도록가로및세로로그룹화할수있다. 2) 질의만들기 질의작성은마법사를이용하거나디자인보기에서직접만드는방법이있습니다. (1) 마법사를이용한단순쿼리만들기 단순쿼리마법사를이용하여고객테이블에서주소가 용산구 인데이터의고객번호, 성명, 주소필드를추출해보도록하겠습니다. 2/22
먼저데이터베이스선택창에서 [ 쿼리 ] 개체를클릭합니다. [ 마법사를사용하여쿼리만들기 ] 항목을더블클릭합니다. < 단순쿼리마법사 > 대화상자가나타나면우선 [ 테이블 / 쿼리 ] 를선택하는목록상자에서고객테이블을선택합니다. 현재는고객테이블만있지만테이블과쿼리가여러개있을경우에는꼭정확히원하는항목을선택했는지확인하시기바랍니다. [ 사용할수있는필드 ] 항목에서는쿼리에서사용할필드를선택합니다. 필드선택단추중모든필드를한꺼번에선택하여추가할수있는두번째단추를클릭한후다음단추를클릭합니다. 쿼리의제목은기본으로주어진값으로두고 [ 쿼리디자인수정 ] 항목을선택한후 < 마침 > 단추를클릭합니다. 3/22
설정된사항에따라작성한쿼리디자인을수정할수있는창이나타납니다. 필요한고객번호, 성명, 주소필드를제외한필드는 [ 표시 ] 의체크박스를클릭하여선택을해제해줍니다. 주소필드에는연산자를이용하여조건을지정하여야하는데, 조건항목에 [= 용산구 ] 라고입력하여주소필드의값이 용산구 와같은데이터만추출하도록합니다. 데이터베이스도구모음의보기형식아이콘을클릭하여 [ 데이터시트보기 ] 창으로이동합니다. 고객테이블에서주소가 용산구 인데이터의고객번호, 성명, 주소필드만추출되어있는것을확인할수있습니다. 쿼리데이터시트도구모음에서 < 저장 > 단추를클릭하여쿼리설정을마칩니다. < 닫기 > 단추를클릭하여 고객 Query 창을닫습니다. >> 여기서잠깐 4/22
구성요소 설명 창 (1) 쿼리에사용되는테이블이나쿼리목록을표시 창 (2) 쿼리에사용할필드를추가하거나조건을지정 필드 쿼리에사용할필드지정 테이블 추가된필드의테이블이름으로자동설정 정렬 지정된필드의레코드정렬순서지정 표시 쿼리에포함된필드의표시여부지정 조건 필드에특정한값만검색할경우지정 또는 여러조건을설정할때지정 (OR조건) 3) SQL 문 (1) SQL 문정의 SQL 문이란 SELECT, UPDATE, DELETE 등의 SQL 명령을정의하는식으로 WHERE, ORDER BY 와같은 절을포함합니다. 또한대부분 SQL 문은쿼리와계산함수에사용된다. 단순쿼리마법사를이용하여쿼리를만든경우는 SQL 문이자동으로생성되어결과를보여주는것입니다. (2)SQL 문보기 SQL 문을볼수있는방법은여러가지가있습니다. 쿼리창의도구모음에서 [ 보기형식 ] 삼각버튼을클릭한후 [SQL] 보기를선택하면현재쿼리의 SQL 문을볼수있습니다. [ 보기 ] 메뉴-[SQL] 보기또는바로가기 ( 단축 ) 메뉴에서 [SQL] 를선택합니다. [SQL 보기 ] 메뉴는쿼리가실행된상태또는쿼리창이실행된상태에서만사용할수있습니다. 쿼리마법사또는디자인보기를이용하여 [SQL 보기 ] 로확인하고수정할수있습니다. 단순쿼리마법사를이용하여작성된쿼리는쿼리가실행된상태에서보기형식아이콘을클릭하여 [SQL 보기 ] 항목을선택하면 SQL 문을확인해볼수있습니다. 4) 단순조회질의 (SQL 문 ) (1) 구문그럼 SQL문의가장기초적인명령인 SELECT문부터학습하겠습니다. SELECT문에서는 SELECT, FROM, WHERE 등여러가지절을사용할수있으며, 함수나산술식도사용 5/22
가능합니다. 검색하려는열의이름이여러개일경우는열이름사이를콤마 (,) 로구분합니다. SELECT문의형식은다음과같습니다. ------------------------- SELECT [DISTINCT] 필드명 ( 검색하고자하는열들의이름을지정합니다.) FROM 테이블명 ( 자료를가져올대상테이블을지정합니다.) ------------------------- 1 SQL 문에서는대 소문자를구분하지않으며, 마지막에 ; 을입력해 SQL 문의끝임을알린다. 2 SELECT 문에 DISTINCT' 를입력하면검색의결과가중복되는레코드는검색시한번만표시된다. 3 필드이름 : 테이블의모든필드를검색할경우에는필드이름대신 * 를입력하고, 특정필드들만검색할경우필드와필드는쉼표 (,) 로구분하여표시한다. [ 고객 ] 테이블에서성명, 전화검색 SELECT 성명, 전화 FROM 고객 ; [ 고객 ] 테이블의모든필드검색 SELECT * FROM 고객 ; [ 고객 ] 테이블에서전화, 주소를검색하며, 중복된레코드는한번만표시하여검색 SELECT DISTINCT 전화, 주소 FROM 고객 ; WHERE절을이용한특정레코드의조회여러필드중특정조건에만족하는레코드만검색할때에는 WHERE절을사용합니다. 형식은다음과같이 FROM절다음에 WHERE를입력한후조건을지정하면됩니다. SELECT 필드명 FROM 테이블명 WHERE 조건 ; [ 사원 ] 테이블에서직급이 과장 인레코드의성명, 직급, 부서검색 SELECT 성명, 직급, 부서 FROM 사원 WHERE 직급 =" 과장 ; [ 월별매출 ] 테이블에서지점이 강북 이고판매수량이 100 이상인레코드의매출제품, 금액검색 SELECT 매출제품, 금액 FROM 월별매출 WHERE 지점 = 강북 AND 판매수량 >=100; (2) ORDER BY 절의사용 ORDER BY 절은쿼리의결과로검색된레코드를특정한필드를기준으로정렬할때사용됩니다. 6/22
SELECT 문의가장마지막에위치하며, 기본값은오름차순입니다. ORDER BY절에직접 ASC를입력하여오름차순정렬을선언하거나 DESC를입력하여내림차순정렬을선언할수도있습니다. 형식은다음과같습니다. SELECT 필드명 FROM 테이블명 [WHERE 조건 ] ORDER BY 필드명 [ASC 또는 DESC]; [ 사원 ] 테이블에서성명을기준으로오름차순하여직급, 전화번호, 주소검색 SELECT 직급, 전화번호, 주소 FROM 사원 ORDER BY 성명 ; [ 사원 ] 테이블에서직급을기준으로오름차순정렬하고, 직급이동일한경우성명을기준으로하여내림차순하여성명, 직급, 전화번호, 주소검색 SELECT 성명, 직급, 주소 FROM 사원 ORDER BY 직급, 성명 DESC; 2. 식의사용 1) 연산자 데이터베이스에서특정한레코드의데이터값을추출하기위해서는식을사용하여야합니다. 산술연산, 문자열연산, 비교연산, 논리연산, 연산함수등을이용하여질의결과를조작할수있으며, 수치와날짜형태의자료에대해서는사칙연산자를이용하여조작할수도있습니다. (1) 산술 / 대입연산자 연산자 기능 예 ^ 어떤수의제곱수를구한다. 10^2 -> 100 * 두수의곱을구한다 50*3 -> 150 / 두수를나누고부동소수점을구한다. 20/4 -> 5 + 두수의합을구한다. 20+50 -> 70 7/22
- 두수의차를구한다. 50-20 -> 30 & 문자열을결합한다. 활용 & 능력 -> 활용능력 (2) 논리 / 비교연산자 연산자기능예 AND OR NOT LIKE IS =. <, >, >=, <=, <> 다중조건에서모두가참이면결과도참다중조건에서하나의값이참이면결과값도참특정한조건에반대되는값을출력지정한문자열이포함되어있는지판별 Null 이나 NOT Null 인레코드검색두값을비교하여참과거짓중결과를출력 >=90 AND <=100 -> 90 이상 100 이하 과장 OR 대리 -> 과장이나대리 NOT 사원 -> 사원이아닌 LIKE 김 * -> 김으로시작하는값 IS Null -> 필드값이 NULL 인레코드 100 > 90 ->TRUE 100 < 90 ->FALSE 2) 함수 함수는이미정의된식에의한계산, 비교등을수행하고값을반환하는일정의작은프로그램으로폼, 쿼리, 보고서, 유효성검사규칙속성등어느곳에서나확인할수있습니다. (1) 날짜 / 시간처리함수 연산자기능예 NOW() 현재날짜와시간표시 2003-01-01 오전 10:32:08 형식으로현재날짜와시간표시 DATE() 현재날짜표시 2003-01-01 형식으로현재날짜표시 TIME() WEEKDAY() 현재시간표시 날짜의요일을번호로표시 ( 일요일 =1) 오전 10:32:08 형식으로현재시간표시 WEEKDAY(DATE()) -> 오늘날짜의요일을번호로표시 제 1 유형 : 일요일 =1 제 2 유형 : 월요일 =1 8/22
DATEADD( 단위, 숫자, 날짜 ) DATEDIFF( 단위, 시작일, 종료일 ) DATEPART( 단위, 날짜 ) DATEVALUE( 날짜텍스트 ) YEAR( 날짜 )/MONT H( 날짜 )/DAY( 날짜 ) HOUR( 시간 )/MINU TE( 시간 )/SECOND ( 시간 ) 날짜에서숫자를더하거나빼서표시시작일과종료일의차이를지정한단위로표시날짜를지정한단위로표시날짜텍스트를날짜데이터로변환지정한날짜의연 / 월 / 일부분만표시지정한시간의시 / 분 / 초부분만표시 제 3 유형 : 월요일 =0 DATEADD( yyyy,10,date()) -> 오늘날짜에 10 년을더하여표시 DATEDIFF( yyyy,[ 입사일 ],DATE()) -> 입사일필드의값부터오늘까지의연도차이계산 DATEPART( q, [ 입사일 ]) -> 입사일필드의값을분기로표시 DATEVALUE( 2003-01-01 ) -> 텍스트를날짜데이터로바꾸어 2003-01-01 반환 YEAR([ 입사일 ]) -> 입사일필드값에서연도만반환 MINUTE(DATE()) -> 현재시간에서분만반환 (2) 문자열함수 연산자기능예 INSTR STRCOMP SPACE 문자열중특정문자의자릿수표시문자열과문자열을비교하여 1, 0, 1, Null 값을반환지정한수만큼공백추가 INSTR( 컴퓨터활용, 활 ) -> 4 STRCOMP( 10, 9 ) -> 1 STRCOMP( 9, 10 ) -> -1 STRCOMP( 9, 9 ) -> 0 컴퓨터 & SPACE(2) 활용 - > 컴퓨터 활용 STRING 동일한문자를지정된숫자만큼반복 STRING(3, 하 ) -> 하하하 LEFT 문자열의왼쪽에서지정한개수만큼만표시 LEN 문자열의문자개수를표시 MID 문자열의중간에서지정한개수만큼만표시 LENB 문자열의바이트수표시 RIGHT 문자열의오른쪽에서지정한개수만큼만표시 LCASE 문자열을모두소문자로표시 9/22
TRIM 문자열의앞과뒤에있는공백을자른후표시 UCASE 문자열을모두대문자로표시 LTRIM 문자열의왼쪽에있는공백을자른후표시 REPLACE 문자열에포함된특정문자를다른문자로전환 (3) 선택함수 연산자기능예 IIF CHOOSE SWITCH 조건이참이면값 1 을출력하고거짓이면값 2 를출력색인번호에따라값목록에서수행할값또는작업을선택조건과값을 1:1 씩비교하여출력 IIF([ 평균 ]>=70, 합격, 불합격 ) -> 평균필드값이 70 이상이면합격, 미만이면불합격을표시 CHOOSE(2, 사과, 배, 귤 ) -> 배 SWITCH([ 직위 ]= 대리, 100, [ 직위 ]= 사원, 50) -> 직위필드의값이대리이면 100, 사원이면 50 반환 (4) 자료형식변환함수 함수기능함수기능 CSTR 데이터를문자열로변환 CDATE 데이터를날짜데이터로변환 CBOOL 데이터를논리값으로변환 CLNG 데이터를 Long 값으로변환 VAL STR 데이터를숫자로변환 데이터를문자로변환 CINT 데이터를반올림한후정수로변환 (5) 자료형식평가함수 함수 ISDATE ISNULL ISNUMERIC 기능입력한데이터를날짜로변환할수있는지의여부를논리값으로표시입력한데이터가널값인지의여부를논리값으로표시입력한데이터가숫자인지의여부를논리값으로표시 10/22
ISERROR ISOBJECT 입력한데이터가오류인지의여부를논리값으로표시 입력한데이터가개체인지의여부를논리값으로표시 (6) 도메인계산함수 함수기능함수기능 DAVG 조건에만족하는필드의평균출력 DMIN 조건에만족하는필드의최소값출력 DSUM 조건에만족하는필드의합계출력 DMAX 조건에만족하는필드의최대값출력 DCOUNT 조건에만족하는필드의개수출력 DLOOKUP 조건에만족하는필드값출력 (7) SQL 계산함수 함수기능함수기능 AVG 지정된필드의평균출력 MIN 지정된필드의최소값출력 SUM 지정된필드의합출력 MAX 지정된필드의최대값출력 COUNT 지정된필드의개수출력 (8) 숫자계산함수 함수기능함수기능 RND 0 과 1 사이의난수출력 ABS 숫자데이터를절대값으로출력 ROUND 숫자데이터를지정한자릿수로반올림하여출력 INT 실수를가까운정수값으로출력 (9) 입출력함수 함수 INPUTBOX 기능 키보드를이용해데이터를입력할때사용 11/22
MSGBOX 경고나알림메시지가들어있는메시지상자를출력 3) 조건작성 조건은디자인눈금에서해당필드의 [ 조건 ] 셀이나 [ 또는 ] 셀에식을입력합니다. 조건값이텍스트형식이면큰따옴표 ( ), 날짜 / 시간형식이면 # 으로묶어야합니다. (1) IN 연산자 IN 연산자는리스트상의값에포함되었는지를확인하기위하여사용되는연산자로형식은다음과같습니다. SELECT 필드명 FROM 테이블명 WHERE 조건 IN ( 값1, 값2, ); 사원테이블에서직급이과장이거나사원인사람들의사원번호, 성명, 직급을검색 SELECT 사원번호, 성명, 직급 FROM 사원 WHERE 직급 IN (" 사원 ") (2) BETWEEN 연산자 AND 연산자와결합하여레코드가비교하는두값의범위내에해당하는지를확인하기위해사용되는연산자로형식은다음과같습니다. SELECT 필드명 FROM 테이블명 WHERE 조건 BETWEEN 값1 AND 값2; 사원테이블에서기본급이 800000이상 1000000이하인사람들의성명, 직급, 기본급을검색 SELECT 성명, 직급, 기본급 FROM 사원 WHERE 기본급 BETWEEN 800000 AND 1000000; 12/22
(3) NOT 연산자 인수의논리를반대로바꿀때사용되는연산자로다른연산자의앞에위치시켜사용됩니다. 형식은다음과같습니다. SELECT 필드명 FROM 테이블명 WHERE 조건 NOT 다른연산자 ; 사원테이블에서직급이과장이거나사원이아닌사람들의사원번호, 성명, 직급을검색 SELECT 사원번호, 성명, 직급 FROM 사원 WHERE 직급 NOT IN (" 과장 ", " 대리 "); (4) LIKE 연산자 질의문자와심볼을이용해문자패턴에일치하는레코드로검색할때사용되는연산자입니다. 모든문자를대표하는심볼 * 와하나의문자를대표하는심볼? 를이용하여질의문자를입력할수있습니다. (* 와? 대신 %, -를지원하는프로그램도있습니다.) SELECT 필드명 FROM 테이블명 WHERE 조건 LIKE 질의문자 ; 사원테이블에서성명이 김 으로시작하는사람들의모든레코드를검색 SELECT * FROM 사원 WHERE 성명 LIKE " 김 *"; 4) 하위질의 하위질의란다른선택쿼리 (SELECT) 나실행쿼리 (INSERT, UPDATE, DELETE) 안에서 SQL SELECT 문으로이루어진쿼리를말합니다. 하위쿼리의결과집합은기본쿼리에대한조건검색의일부가되며, EXISTS 나 NOTEXISTS 등의예약어를사용하여하위쿼리의결과유무를확인할수있습니다. 13/22
ANY, IN, ALL 등의예약어를사용하면하위쿼리에서반환된값과같은값, 큰값, 작은값을각각기본 쿼리에서찾을수도있습니다. 또한하위쿼리내에또다른하위쿼리를만들수도있습니다. IN 연산자하위쿼리의결과에속하는값을검색, NOT IN을사용하면하위쿼리의결과에속하지않는값표시 사원테이블과고객테이블은연관이있어서성명이같은사람들을나타낸다고할때, 사원테이블에서주소가 종 으로시작하는사람들의성명과부서를검색 SELECT 성명, 부서 FROM 사원 WHERE 성명 IN (SELECT 성명 FROM 고객 WHERE 주소 LIKE " 종 *"); 3. 집단함수및 Group By 절 1) 집단함수의개념및종류 집단함수란그룹마다하나의결과를표시하기위해레코드를대상으로연산을수행하는함수를말하며, 그룹함수라고도합니다. 집단함수는종종레코드를그룹을나눈뒤적용할때가있는데레코드를그룹으로나누기위해서 SELECT 문에서는 GROUP BY 절을이용하며, WHERE 절에서는 HAVING 절을이용합니다. 이때집단함수는각그룹에작용하여그룹당하나의결과를산출합니다. 특정한집단에대해연산을수행할수있는함수는다음과같습니다. 함수명 설명 사용예 SUM 쿼리에서지정필드에있는일련의값의 SELECT SUM( 기본급 ) FROM 사원 ; 합을구함 AVG 쿼리에서지정필드에있는일련의값의 SELECT ABG( 기본급 ) FROM 사원 ; 평균을구함 MAX 값집합에서최대값을구함 SELECT MAX( 기본급 ) FROM 사원 ; MIN 값집합에서최소값을구함 SELECT MIN( 기본급 ) FROM 사원 ; COUNT 인수목록에서숫자를포함한셀과숫자의개수를구함 SELECT COUNT(*) FROM 사원 ; ( 사원테이블에서사원의수를구함 ) 14/22
2) GROUP BY 절을사용한조회 GROUP BY 절을사용하면지정한필드목록에서동일한값을갖는레코드를하나의레코드로결합합니다. 형식은다음과같습니다. SELECT 필드명 [, 그룹조건 ( 반환되는레코드들의그룹을제한할조건 )] FROM 테이블명 GROUP BY 필드명 ( 레코드를그룹핑하는데기본이될필드명 ) 사원테이블에서부서별로그룹화한후부서, 기본급최대값, 기본급최소값을구하기 SELECT 부서, MAX( 기본급 ) AS 기본급최대값, MIN( 기본급 ) AS 기본급최소값 FROM 사원 GROUP BY 부서 ; 3) HAVING 절을사용한조회 HAVING 절을사용하면 GROUP BY 로그룹화한레코드중에서조건에맞는레코드만나타낼수있습니다. 형식은다음과같습니다. SELECT 필드명 [, 그룹조건 ( 반환되는레코드들의그룹을제한할조건 )] FROM 테이블명 GROUP BY 필드명 ( 레코드를그룹핑하는데기본이될필드명 ) HAVING 조건 ; 사원테이블에서부서별로그룹화한후부서가재정부를제외한부서의부서와평균기본급을구하기 SELECT 부서, AVG( 기본급 ) AS 기본급평균 FROM 사원 GROUP BY 부서 HAVING NOT 부서 = " 재정부 "; 15/22
4)HAVING 과 WHERE 절의차이 HAVING 과 WHERE 절의공통점은특정한조건을지정하여레코드를검색할때사용한다는점이고, 차이점은 WHERE 절은일반적인조건을지정할때사용하지만, HAVING 절은데이터를그룹화한후해당그룹별로조건을지정할때사용한다는것입니다. 4. 다중테이블쿼리 1) 조인 (Join) 의개념 쿼리에두개이상의테이블이나쿼리를추가할때에는정보연결방법을알수있도록필드목록이조인선을서로연결되어있어야합니다. 여기서조인이란상호관련성을갖는두개의테이블을연결하여데이터를검색하는것을말합니다. 조인을하게되면각속성이어느테이블의속성인지알수있도록 < 테이블명. 필드명 > 으로입력합니다. 2) 조인형식의종류 (1) INNER JOIN( 내부조인 ) 가장일반적인조인형식으로두테이블의공통된필드의값이일치하는경우두테이블의레코드를결합하여쿼리결과에하나의레코드로추가하며, 조인되지않는레코드는삭제합니다. < 테이블 R> A B 1 2 3 4 < 테이블 S> B C 2 5 2 6 7 8 <R 과 S 의 INNER JOIN 결과 > A B C 1 2 5 1 2 6 --------------- SELECT 필드명 16/22
FROM 테이블명 1 INNER JOIN 테이블명 2 ON 테이블명 1. 필드명 = 테이블명 2. 필드명 --------------- (2) LEFT JOIN( 왼쪽조인 ) 오른쪽테이블의조인된필드에일치하는값이없어도 SQL 문의 LEFT JOIN 작업왼쪽에있는레코드가모두 Recordset 개체에추가되는외부조인입니다. 조인필드에일치하는값이없으면 Null 값의레코드가오른쪽에조인되며, 첫째테이블의레코드가둘째 ( 오른쪽 ) 테이블의레코드와일치하지않더라도첫째 ( 왼쪽 ) 테이블의모든레코드를포함합니다. 화살표방향이왼쪽에서오른쪽으로이동되듯이표현됩니다. <R 과 S 의 LEFT JOIN 결과 > A B C 1 2 5 1 2 6 3 4 NULL --------- SELECT 필드명 FROM 테이블명 1 LEFT JOIN 테이블명 2 ON 테이블명 1. 필드명 = 테이블명 2. 필드명 ---- (3) RIGHT JOIN( 오른쪽조인 ) 왼쪽테이블의조인된필드에일치하는값이없어도 SQL 문의 RIGHT JOIN 작업의오른쪽에있는레코드를모두 Recordset 개체에추가하는외부조인입니다. 왼쪽테이블의레코드는조인필드에일치하는값이있을때만오른쪽테이블의레코드와연결되며, 첫째 ( 왼쪽 ) 테이블의레코드와일치하지않더라도둘째 ( 오른쪽 ) 테이블의모든레코드를포함합니다. 화살표방향이오른쪽에서왼쪽으로이동되듯이표현됩니다. <R 과 S 의 RIGHT JOIN 결과 > A B C 1 2 5 1 2 6 NULL 7 8 ---------- SELECT 필드명 FROM 테이블명 1 RIGHT JOIN 테이블명 2 17/22
ON 테이블명 1. 필드명 = 테이블명 2. 필드명 ------ (4) 카티전 (Cartesian product) 곱카티젼곱을수행하면 2 개이상의테이블에서조합가능한모든행들이표시되는결합연산을하게됩니다. 첫번째테이블의모든행은두번째테이블의모든행과조인되며, 2 개이상의테이블에서조인한행들을표시하여새로운테이블이생성됩니다. (5) 별명 (Alias) 별명이란말그대로테이블이나쿼리에별명을붙여주는것이라고할수있습니다. 쿼리에서같은테이블이나쿼리를여러번사용하는경우, Alias 속성을사용하여원본테이블이나쿼리의이름을사용자가정의하는것입니다. Alias 속성은쿼리데이터의원본으로사용되는테이블이나쿼리에만적용되며, 문자열식을사용하여데이터베이스에서현재사용하지않는이름에 Alias 속성을지정합니다. 또한 SQL 문에서 AS 절을사용하는것도별명을사용하는것이라고할수있으며, SELF JOIN 즉, 자기자신과조인할때에는반드시별명을사용해야합니다. 쿼리에테이블이나쿼리를추가하면자동으로테이블이나쿼리이름에 Alias 속성이설정되며, 같은테이블이나쿼리에두번째인스턴스가추가되어도자동으로 Alias 속성이개체이름뒤에밑줄과 1( _1 ) 이추가된값으로설정됩니다. 5. 실행질의 1) 실행질의 (1) 테이블작성쿼리 개요다른테이블의데이터일부또는전체를가져와서새테이블로작성하는쿼리입니다. 이렇게테이블작성쿼리로만들어진테이블의데이터는원본테이블의필드속성이나기본키설정은계승되지않습니다. SQL문 ----------------- SELECT 필드명 INTO 새테이블이름 FROM 기존테이블명 WHERE 조건식 ; 18/22
----------------- 사원 테이블에서부서코드가 A011 인레코드의부서코드, 이름, 성별, 이메일을검색하여 부서별교육생 테이블생성하기 SELECT 부서코드, 이름, 성별, 이메일INTO 과정별교육생 FROM 사원 WHERE 부서코드 = A011 ; (2) 추가쿼리 개요테이블에새로운레코드를추가합니다. 값을직접추거하거나다른테이블의레코드를추출하여추가할수있습니다. SQL문 1 INSERT문테이블에데이터 ( 값 ) 을직접추가하는구문으로테이블에하나의레코드로추가됩니다. 필드명의개수와데이터의개수는동일해야합니다. ----------------- INSERT INTO 테이블명 ( 필드명1, 필드명2, 필드명3, ) VALUES( 데이터1, 데이터2, 데이터3, ) ----------------- 사원테이블에사원번호 11, 성명이길재, 부서재정부, 직급대리, 기본급 890000추가 INSERT INTO 사원 ( 사원번호, 성명, 부서, 직급, 기본급 ) VALUES(11, ' 이길재 ', ' 재정부 ', ' 대리 ', 890000); 2 INSERT ~ SELECT 쿼리의실행결과를다른테이블에추가하거나입력하는자료의양이많은경우 INSERT~SELECT 구문을사용합니다. 이때필드명을지정하지않으면테이블의모든필드가명시된것으로간주합니다. ----------------- INSERT INTO 테이블명 ( 필드명1, 필드명2, 필드명3, ) SELECT 필드명1, 필드명2, 필드명3, VALUES( 데이터1, 데이터2, 데이터3, ) ----------------- 부서가재정부인사람의성명, 부서를검색한후사원테이블에추가 INSERT INTO 사원 ( 성명, 부서 ) SELECT 사원. 성명, 사원. 부서 19/22
FROM 사원 WHERE ((( 사원. 부서 )= 재정부 )); (3) 업데이트쿼리 개요 UPDATE 문은하나이상의테이블에서레코드그룹을전체적으로변경할때사용됩니다. 특정조건을지정하여조건에해당되는레코드나필드만을선택적으로변경할수도있습니다. SQL 문 ---------- UPDATE 테이블명 SET 필드명1= 식1, 필드명2= 식2, WHERE 조건식 ; ---------- 직급이대리인사람들의기본급을 5% 인상하도록데이터수정 UPDATE 사원 SET 사원. 기본급 =[ 기본급 ]*1.5 WHERE ((( 사원. 직급 )= 대리 )); (4) 삭제쿼리 개요조건을지정하여한번에테이블에있는레코드를삭제하는쿼리입니다. WHERE 절을이용하여조건을지정하지않으면테이블내의모든레코드가삭제됩니다. SQL문 DELETE 필드명 FROM 테이블명 WHERE 조건식 ; 부서가재정부인사람을삭제 DELETE 사원. 부서 FROM 사원 WHERE ((( 사원. 부서 )= 재정부 )); 20/22
2) 데이터베이스기타질의 (1) 크로스탭쿼리크로스탭쿼리란테이블특정필드의요약값 ( 합계, 개수, 평균등 ) 을표시하고그값들을그룹별로데이터시트의왼쪽행과데이터시트의위쪽열에나열해주는쿼리입니다. 결과에대한열이름을나타내는필드, 결과에대한행이름을나타내는필드, 쿼리의본문에삽입되어값을나타내는필드로구성되어있습니다. (2) 매개변수의사용매개변수쿼리란쿼리를실행할때레코드검색조건이나필드에삽입할값과같은정보를입력할수있는대화상자를표시하여실행하는쿼리입니다. 두가지이상의정보를물어보는쿼리를디자인할수도있으며, 폼, 보고서, 데이터액세스페이지의기초로사용하기에도편리합니다. (3) 통합쿼리 (Union 질의 ) 통합쿼리란두개이상의테이블이나쿼리에서대응되는필드들을결합하여하나의필드로만드는것으로, 한테이블을다른테이블에추가하는것과결과가같습니다. 형식은다음과같습니다. SELECT 필드명 1 FROM 테이블명1 UNION SELECT 필드명 2 FROM 테이블명 2; 21/22
>> 여기서잠깐 창 (1) 창 (2) 22/22