1- 쿼리 (Query) 1) 쿼리의개념 테이블의데이터에서사용자가원하는조건에의해필드를추출하거나레코드를추출할수있는개체로즉, 여러가지방법으로데이터를보고, 변경하고, 분석할수있음 쿼리를폼, 보고서, 데이터액세스페이지등의레코드원본으로사용할수도있음 여러개의테이블에서서로유기적인관계를설정하여하나의테이블에서작업하는것처럼작업이가능 2- 쿼리 (Query) 종류 1) 선택쿼리가장일반적인방법형태의쿼리 테이블에서데이터를검색하여데이터시트로표시하므로데이터시트에서레코드를수정할수있음 ( 수정시약간의제한은있음 ) 선택쿼리를사용하여레코드를그룹으로묶어합계, 개수, 평균, 기타합계등의계산가능 지정된조건으로여러개의테이블에서데이터를검색한다음, 지정된순서대로표시 SELECT [DISTINCT] 필드이름 FROM 테이블명 [WHERE 조건 ] [ORDER BY 필드이름정렬방식 ASC DESC] SQL 문의기본구문 [] 는생략가능 정렬방식을사용할때쓰는 SQL 문 ASC: 오름차순 DESC: 내림차순 정렬지정이없으면자동으로오름차순으로실행 [] 는생략가능 필드이름대신 * 입력하면모든필드검색 특정필드검색시필드와필드를 (,) 로구분하여표시 [DISTINCT]: 중복된레코드를제거하여한번만표시 [WHERE 절 ] 에는조회하고자하는조건을작성 ( 문자값비교시큰따옴표 ( ) 나작은따옴표 ( ) 로묶어줌 ) SELECT [DISTINCT] 필드이름 FROM 테이블명 [WHERE 조건 ] [GROUP BY 필드이름 ] [HAVING 그룹조건식 ] 그룹지정할때사용 * 그룹함수 SUM( 합계 ), AVG( 평균 ) MAX( 최대값 ), MIN( 최소값 ) COUNT( 개수 ) [GROUP BY 절 ]: 특정필드를기준으로그룹화하여검색시사용 [HAVING 그룹조건식 ]: 그룹에대한조건을작성 WHERE 절과 HAVING 절의차이점 WHERE 절 : 개개의레코드에대한조건을지정 HAVING 절 : 그룹에대해조건을지정 2) 매개변수쿼리실행할때레코드검색조건이나필드에삽입할값과같은정보를입력할수있는대화상자를표시하는쿼리 두가지이상의정보를물어보는쿼리도가능 대화상자에표시될메시지는 [ 조건 ] 란에대괄호 [] 로묶어서입력해야함엠엔디시스템 (http://mndsystem.tistory.com) 1/6
폼, 보고서, 데이터액세스페이지의기초로사용하기에도편리 3) 크로스탭쿼리 테이블의특정필드의요약값 ( 합계, 개수, 평균등 ) 을표시하고그값들을그룹별로한집합은데이터시트의왼쪽에, 또한집합은데이터시트의위쪽에나열 스프레드시트에서의피벗테이블과흡사 4) 실행쿼리 여러레코드를한꺼번에변경할수있는쿼리 실행쿼리에는삭제쿼리, 업데이트쿼리, 추가쿼리, 테이블작성쿼리등네가지가있음 1 삽입쿼리 (INSERT문) 테이블로추가하기 INSERT INTO 테이블이름 ( 필드이름 1, 필드이름 2, ) 직접입력하여추가하기 INSERT INTO 테이블이름 ( 필드이름 1, 필드이름 2, ) VALUES( 필드값 1, 필드값 2, ) 2 업데이트쿼리 (UPDATE 문 ) UPDATE 테이블이름 SET 필드이름 1= 값 1, 필드이름 2= 값 2, ) 테이블의필드값을변경할때사용 SET이용해업데이트할필드와수식정함 조건미지정시필드의전체레코드에대한수정이이루어짐 3 삭제쿼리 (DELETE 문 ) DELETE * 테이블의레코드삭제시사용 ( 즉레코드단위로삭제됨을의미 ) 삭제쿼리를통해한번삭제된레코드는복구불가능 Delete다음에필드명이나 * 생략가능 4 테이블작성쿼리 INTO절을이용해필드들을추출하여저장할새테이블명을지정 INTO 새테이블이름 5)SQL 쿼리 SQL 문을사용하여만드는쿼리 SQL 쿼리의예로는통합쿼리, 창구쿼리, 데이터정의쿼리, 하위쿼리등이있음 SQL문에서는소문자, 대문자를구분하지않음 ( 그러나비교하는값의대소문자는구분 ) 여러줄을작성하거나한줄로작성하여도무방 SQL 명령문을생략하거나약어로작성할수없음 SQL 명령문의마지막에세미콜론 (;) 이나슬래쉬 (/) 로표시 자동으로입력됨 select 명령어 : 가장일반적으로사용되는데이터조회명령어엠엔디시스템 (http://mndsystem.tistory.com) 2/6
6) 통합 (UNION) 쿼리 두개이상의테이블이나쿼리에서대응하는필드들을합쳐서하나의필드로 결합 UNION 같은레코드는한번만기록되며두테이블의필드 ( 열 ) 의개수가다르면통합되지않음 하나이상의테이블이나쿼리필드 ( 열 ) 를결합하여쿼리결과에하나의필드나열로이루어짐 통합쿼리를실행하면통합쿼리에들어있는테이블이나쿼리의해당필드에서레코드를되돌림 오로지 [SQL 보기 ] 에서만구현이가능 7) 기타쿼리 - 하위쿼리 선택쿼리 (SELECT) 혹은실행쿼리 (INSERT, UPDATE, DELETE) 안에작성하는 SELECT 문 특정한테이블을대상으로쿼리를수행한반환값을다른테이블의 Where 절에이용하는질의 하위쿼리내에또다른하위쿼리를만들수있다. 조건지정시반드시괄호를사용 ( 조건절 (WHERE) 에서하의 SELECT 문이사용됨 ) 하위쿼리내에서는정렬이사용되지못함 3- 쿼리 (Query) 작성 1) 단순쿼리마법사를사용하는경우 하나이상의테이블이나쿼리에서지정한필드에서데이터를검색하는쿼리를만듦 필요하면마법사로모든레코드나레코드의그룹의합계, 개수및평균값을내거나필드의최소값이나최대값을계산가능 조건을설정하여검색할레코드를제한할수는없음 2) 디자인보기를사용하는경우 [ 테이블표시 ] 대화상자이용하여쿼리작성 3)SQL 보기를사용하는경우 [ 테이블표시 ] 대화상자의바로가기메뉴에서 SQL 보기를선택하여입력창에직접입력 4- 식을사용한쿼리 (Query) 작성 1) 연산자 산술연산자 +, -, *, /, MOD, &, ^ 관계 ( 비교 ) 연산자 >,<,=,>=,<=,< > 논리연산자 NOT, AND, OR 2) 날짜 / 시간함수 엠엔디시스템 (http://mndsystem.tistory.com) 3/6
NOW() 현재날짜와시간을표시 DATE() 현재날짜를표시 TIME() 현재시간을표시 WEEKDAY( 날짜 ) 지정된날짜의요일에해당하는숫자를표시 DateValue( 날짜 ) 텍스트형식의날짜를일련번호로표시 DATEPART( 형식, 날짜 ) 지정된날짜에서형식에제시된값만표시 DATEADD( 형식, 값, 날짜 ) 지정된날짜에서형식 ( 연, 월, 일 ) 을지정한값만큼증가 DATEDIFF( 형식, 날짜1, 날짜2) 두날짜사이의형식 ( 연, 월, 일 ) 의경과값을표시 YEAR( 날짜 ) 지정된날짜에서연도만표시 MONTH( 날짜 ) 지정된날짜에서월만표시한 DAY( 날짜 ) 지정된날짜에서일만표시 HOUR( 시간 ) 지정된시간에서시만표시 MINUTE( 시간 ) 지정된시간에서분만표시 3) 문자열함수 LEFT( 문자열, 자릿수 ) 왼쪽에서주어진자릿수만큼표시 MID( 문자열, 시작값, 자릿수 ) 시작위치에서주어진자릿수만큼표시 RIGHT( 문자열, 자릿수 ) 오른쪽에서주어진자릿수만큼표시 TRIM( 문자열 ) 문자열의좌우공백을제거 LTRIM( 문자열 ) 왼쪽에있는공백을제거 RTRIM( 문자열 ) 오른쪽에있는공백을제거 STRCOMP( 문자열1, 문자열2) 문자열1과문자열2를비교하여같으면 0, 다르면 -1을반환 LEN( 문자열 ) 문자열의길이를반환 LENB( 문자열 ) 문자열의길이를바이트로반환 LCASE( 문자열 ) 문자열을모두소문자로반환 UCASE( 문자열 ) 문자열을모두대문자로반환 REPLACE( 문자열1, 시작위치, 개수, 문자열2) 문자열1의시작위치에서개수로지정된문자열을문자열2로변경 SPACE( 개수 ) 지정한수만큼의공백을추가 STRING( 개수, 문자 ) 문자를지정한수만큼반복해서표시 4) 선택함수 IF( 조건, 실행 1, 실행 2) 조건이참이면실행 1 을, 거짓이면실행 2 를수행 CHOOSE( 색인번호, 실행 1, 실행 2, ) 색인번호가 1 이면실행 1, 2 이면실행 2, 를수행 SWITCH( 조건 1, 실행 1, 조건 2, 실행 2, ) 조건 1 이참이면실행 1 을, 조건 2 가참이면실행 2 를, 를수행 5) 자료형변환함수 엠엔디시스템 (http://mndsystem.tistory.com) 4/6
CCur() 계산결과소수점이나오는경우화폐단위로변환 CDate() 식의결과를날짜 / 시간형으로변환 Clint() 인수를 Integer( 정수 ) 로변환 Clong() Long형데이터로변환 Cstr() String( 문자열 ) 으로변환 CBool() Boolean( 논리값 ) 으로변환 Str() 숫자를문자로변환 Val() 문자를숫자로변환 5) 숫자계산함수 Int() 인수의숫자값을넘지않는최대의정수를결과로얻는함수 Abs() 절대값을구하는함수 Round() 반올림하여지정한자릿수까지값을구하는함수 6) 특수연산자 IN BETWEEN LIKE NOT 필드의값이 IN 연산자의인수로지정된값과같은레코드만검색 문법 : WHERE 필드또는필드를나타내는식 IN( 값1, 값2, ) 필드의값이 Between 연산자의범위로지정된값이내에포함되는레코드만검색 문법 : WHERE 필드또는필드를나타내는식 BETWEEN 값1 AND 값2 대표문자를이용해필드의값이패턴과일치하는레코드만검색 문법 : WHERE 필드또는필드를나타내는식 LIKE 문자패턴 필드의값이 NOT 다음에기술한연산자의결과에포함되지않는레코드만검색 문법 : WHERE 필드또는필드를나타내는식 NOT 다른연산 5- 다중테이블쿼리 (Query) 1) 개념 두개이상의테이블이나쿼리를이용해원하는필드들을추출해내는쿼리 2) 조인의개념 2개이상의테이블을연결하여데이터를검색하는방법 조인에사용되는기준필드의데이터형식은동일하거나호환되어야함 필드이름앞에테이블이름을마침표 (.) 로구분 원래는대상이되는테이블간에관계설정이되어야하지만그렇지않더라도조인을설정할수있다 조인되는테이블의필드수의제약은없다 3) 조인의종류 1 내부조인 가장일반적인형태 관계가설정된두테이블에서조인된필드가일치하는행만쿼리에포함 엠엔디시스템 (http://mndsystem.tistory.com) 5/6
1 INNER JOIN 테이블이름 2 ON 테이블이름 1. 필드이름 = 테이블이름 2. 필드이름 2 외부조인 : 왼쪽외부조인 (Left Join) 왼쪽테이블에서는모든레코드를포함하고, 오른쪽테이블에서는조인된필드가일치하는레코드만쿼리에포함됨 화살표의방향이왼쪽에서오른쪽으로이동되듯이표현 1 LEFT JOIN 테이블이름 2 ON 테이블이름 1. 필드이름 = 테이블이름 2. 필드이름 3 외부조인 : 오른쪽외부조인 (Right Join) 오른쪽테이블에서는모든레코드를포함하고, 왼쪽테이블에서는조인된필드가일치하는레코드만쿼리에포함됨 화살표의방향이오른쪽에서왼쪽으로이동되듯이표현 1 RIGHT JOIN 테이블이름 2 ON 테이블이름 1. 필드이름 = 테이블이름 2. 필드이름 4) 카테션곱 (Cartensian Product: Cross Join) 일반적으로 2개이상의테이블을조인할경우조인조건을생략하거나잘못된조건을설정할경우에발생 2개의테이블을조인할경우첫번째테이블의모든필드와두번째테이블의모든필드가조인될경우에도카테션곱이발생 카테션곱이발생한경우검색되는레코드의수는조인되는테이블의레코드를모두곱한개수만큼, 필드는모두더한개수만큼검색 조인조건이없는조인 모든행들의조합이표시 엠엔디시스템 (http://mndsystem.tistory.com) 6/6