Download presentation
Presentation is loading. Please wait.
Published byRobyn Underwood Modified 5년 전
1
학습목표 학습목표 관계 데이터베이스에서 데이터 조작에 사용되는 명령어(DML)는 삽입(INSERT), 삭제(DELETE), 수정(UPDATE), 검색(SELECT) 이 있는데 이 중 사용 빈도가 가장 높은 것이 데이터의 검색에 사용되는 SELECT문 이며 이 명령문은 다양한 옵션과 기능이 있으므로 본 장에서는 여러 가지 예제를 통하여 SELECT문의 사용방법을 중점적으로 학습한다.
2
1. DML 개념 DML 개념 SELECT 테이블에서 기존의 레코드들을 검색 INSERT 테이블에 새로운 레코드를 삽입
데이터 조작어 (DML : Data Manipulation Language) 데이터베이스 스키마 내의 데이터 조작에 사용 데이터의 검색 , 삽입, 삭제, 수정에 사용. SQL의 3가지 언어 중 일반 사용자에게 가장 가까운 언어임. 응용 프로그램 내에서 데이터베이스를 조작하는 작업을 위해 고급프로그래밍 언어 (C, C++, 자바)와 같이 사용 가능 함. 데이터 조작어의 기능에 따른 분류 SELECT 테이블에서 기존의 레코드들을 검색 INSERT 테이블에 새로운 레코드를 삽입 DELETE 테이블에서 특정 레코드를 삭제 테이블에서 특정 레코드의 필드 값을 수정 UPDATE
3
2. 검색(SELECT 문) 검색(Select 문) <SELECT 문의 형식>
데이터 검색에 사용되는 명령어 SELECT 문은 여섯 개의 절로 구성 SELECT절과 FROM 절 필수 나머지는 선택사항 <SELECT 문의 형식> SELECT [DISTINCT] 필드1, 필드2, ... 필드N FROM 테이블1, 테이블2, ... 테이블N [WHERE 조건식 [ 중첩질의] ] [GROUP BY 필드1, 필드2, ... 필드N] [HAVING 조건식 ] [ORDER BY 필드1, 필드2,...필드N[ ASC| DESC]] ;
4
단순질의 3. 단순 질의 단순 질의는 레코드 제한이 없는 질의로 모든 항목 검색, 일부 항목 검색, 정렬(오름차순/내림차순), 중복제거, 상위 일부 검색 등이 있다.
5
단순질의 예제와 연습 테이블 예제 테이블 명 : 제품 테이블 구조 : 연습 테이블 명 : 고객 테이블 구조 : 필드명 품명
제품번호 품명 종류 계절 색상 단가 입고일자 형식 DECIMAL CHAR INT DATE 크기 30 20 5 연습 테이블 명 : 고객 테이블 구조 : 필드명 아이디 암호 이름 주민no 가입일자 성별 전화 우편번호 주소1 주소2 포인트 형식 char date int 크기 20 14 1 7 30
6
단순질의 3.1 모든 항목 검색 특정 테이블에서 모든 정보를 검색
■ 실습 : “제품테이블에 속한 모든 필드의 내용을 검색하시오.” ■ 명령 : SELECT * FROM 제품 ■ 결과 : 연습 : 테이블 “고객”의 모든 내용을 검색하시오 정답 : SELECT * FROM 고객
7
■ 실습 : “제품테이블에서 제품번호, 품명, 단가 필드를 검색하시오.”
단순질의 3.2 일부 항목 검색 특정 테이블에서 특정 필드들만 검색 ■ 실습 : “제품테이블에서 제품번호, 품명, 단가 필드를 검색하시오.” ■ 명령 : SELECT 제품번호, 품명, 단가 FROM 제품 ■ 결과 : 연습 : 테이블 “고객”에서 아이디, 이름,포인트점수만 검색하시오 정답 : SELECT 아이디, 이름, 포인트 FROM 고객
8
단순질의 3.3 정렬(Order by) 검색 결과를 특정 필드의 값을 기준으로 정렬 오름차순과 내림차순 정렬
기본 정렬은 오름차순 정렬 두 개 이상의 항목을 이용한 이중 정렬 가능 정렬(이름 :오름차순) 소속 이름 나이 A반 이순신 23 B반 강미영 21 손성희 20 김영철 22 소속 이름 나이 B반 강미영 21 A반 김영철 22 손성희 20 이순신 23
9
1. 품명을 기준으로 정렬 -> 2. 품명, 단가항목 추출
단순질의 ■ 실습 : “ 제품테이블에서 품명을 기준으로 오름차순으로 정렬하여 품명, 단가를 검색하시오” ■ 명령 : SELECT 품명, 단가 FROM 제품 ORDER BY 품명 ■ 결과 : 1. 품명을 기준으로 정렬 -> 2. 품명, 단가항목 추출
10
단순질의 ■ 실습 : “제품테이블에서 먼저 종류를 기준으로 정렬한 뒤 다시 품명을 기준으로 정렬하여 종류, 제품번호, 품명, 단가의 값을 검색하시오. ” ■ 명령 : SELECT 종류, 제품번호, 품명, 단가 FROM 제품 ORDER BY 종류, 품명 ■ 결과 :
11
특정 값을 검색할 때 중복을 제거한다. 단순질의 3.4 중복 제거(Distinct)
■ 실습 : “ 제품테이블에서 제품의 종류를 검색하시오. ” ■ 명령 : SELECT DISTINCT 종류 FROM 제품 ■ 결과 : 연습 : 테이블 “고객”에서 우편번호의 종류를 검색하시오. 정답 : SELECT DISTINCT 우편번호 FROM 고객
12
대상 데이터 중에서 상위 또는 하위 몇 개 데이터만 검색
단순질의 3.5 상위 몇 개 검색(Top) 대상 데이터 중에서 상위 또는 하위 몇 개 데이터만 검색 ■ 실습 : “제품테이블에서 가장 최근에 입고된 신상품 5개의 품명, 단가, 입고일자를 검색하시오” ■ 명령 : SELECT TOP 5 품명, 단가, 입고일자 FROM 제품 ORDER BY 입고일자 DESC ■ 결과 : 연습 : 테이블 “고객”에서 포인트가 가장 적은 고객 10명을 검색하시오. 정답 : SELECT TOP 10 * FROM 고객 ORDER BY 포인트
13
4. 조건 질의 조건 질의 AND 비교연산자와 논리연산자,특수연산자, 수식 등을 사용
비교연산자와 논리연산자,특수연산자, 수식 등을 사용 레코드 제한을 적용한 검색으로 where 절 사용 ■ 비교 연산자의 종류 : >, <, =, >=, <=, <> ■ 논리 연산자의 종류 : AND, OR, NOT 소속 이름 나이 B반 손성희 20 A반 김영철 21 소속 이름 나이 A반 이순신 23 B반 강미영 22 손성희 20 김영철 21 조건(나이<=21) 소속 이름 나이 A반 이순신 23 김영철 21 조건(소속<>’B반’) 조건(소속=’B반’) AND 조건(나이>=22) 소속 이름 나이 B반 강미영 22
14
조건 질의 4.1 비교연산자 사용 ■ 실습 : “제품테이블에서 단가가 보다 큰 제품의 품명, 단가, 계절을 검색하시오. “ ■ 명령 : SELECT 품명, 단가, 계절 FROM 제품 WHERE 단가 > ■ 결과 : 단가가 20000 보다 큰 제품들만 뽑아서 품명, 단가, 계절 필드 값을 출력한다
15
조건 질의 ■ 실습 : “ 제품테이블에서 입고일자가 ‘2004-09-05’ 이전인 제품의
제품번호,품명,단가, 입고일자를 검색하시오” ■ 명령 : SELECT 제품번호, 품명, 단가, 입고일자 FROM 제품 WHERE 입고일자 < ‘ ’ ■ 결과 : 연습 : 테이블 “고객”의 내용 중 포인트가 500이하인 고객을 모두 검색하시오 정답 : SELECT * FROM 고객 WHERE 포인트<= 500
16
조건 질의 ■ 실습 : “제품테이블에서 종류가 ‘정장’ 인 제품의 제품번호, 종류, 품명을 검색하시오.“
■ 실습 : “제품테이블에서 종류가 ‘정장’ 인 제품의 제품번호, 종류, 품명을 검색하시오.“ ■ 명령 : SELECT 제품번호, 종류, 품명 FROM 제품 WHERE 종류=‘정장’ ■ 결과 : 연습 : 테이블 “고객”의 내용 중 포인트가 점에 해당하는 고객의 아이디,이름, 포인트를 출력하시오 정답 : SELECT 아이디, 이름 , 포인트 FROM 고객 WHERE 포인트=100000
17
■ 실습 : “ 제품테이블에서 종류가 단가가 250000원 이상 인 제품의
조건 질의 ■ 실습 : “ 제품테이블에서 종류가 단가가 원 이상 인 제품의 모든 정보를 검색하시오 ” ■ 명령 : SELECT * FROM 제품 WHERE 단가 >= ■ 결과 : 연습 : 테이블 “고객”에서 성별이 “F”인 고객의 아이디,이름을 출력하시오 정답 : SELECT 아이디, 이름 FROM 고객 WHERE 성별 = ‘F’
18
조건 질의 ■ 실습예제 :”제품테이블에서 계절이 '동‘ 이 아닌 제품의 제품번호, 품명, 단가, 계절을 검색하시오 “
■ 명령 : SELECT 제품번호, 품명, 단가, 계절 FROM 제품 WHERE 계절<> '동‘ ■ 결과 : 연습 : 테이블 “고객”에서 포인트가 0이 아닌 고객의 아이디,이름, 포인트를 출력하시오 정답 : SELECT 아이디, 이름, 포인트 FROM 고객 WHERE 포인트 <> 0
19
조건 질의 4.2 논리 연산자 사용 AND OR ① AND : 2개 이상의 조건을 모두 만족하는 데이터 검색
③ NOT : 지정한 조건을 만족하지 않는 레코드들만 검색 소속 이름 나이 A반 이순신 23 B반 강미영 22 손성희 20 김영철 21 조건(소속=’A반’) 소속 이름 나이 A반 이순신 23 AND 조건(나이>=22) 소속 이름 나이 A반 이순신 23 B반 강미영 22 김영철 21 조건(소속=’A반’) OR 조건(나이>=22)
20
조건 질의 ■ 실습 : “ 제품테이블에서 계절이 ‘춘’ 이고 단가가 이하인 제품의 제품번호, 품명, 단가, 계절을 검색하시오. “ ■ 명령 : SELECT 제품번호, 품명, 단가, 계절 FROM 제품 WHERE 단가 <= AND 계절 = '춘‘ ■ 결과 : 계절 = ‘춘’ 인 제품 단가< 인 제품 AND : 위의 결과를 모두 만족하는 제품
21
정답 : SELECT * FROM 고객 WHERE 성별= ‘F’ OR 가입일자 >= ‘2004-01-01’
조건 질의 ■ 실습 : “ 제품테이블에서 계절이 ‘춘’ 또는 ’추‘ 에 해당하는 제품의 품명, 계절, 단가를 검색하시오.“ ■ 명령 : SELECT 제품명, 계절, 단가 FROM 제품 WHERE 계절='춘‘ OR 계절 = '추’ ■ 결과 : 연습 : 테이블 “고객”에서 성별이 ‘F’이거나 가입일자가 ‘ ’이후인 고객을 모두 출력하시오. 정답 : SELECT * FROM 고객 WHERE 성별= ‘F’ OR 가입일자 >= ‘ ’
22
조건 질의 ■ 실습 : “ 제품테이블에서 단가가 50000에서 300000원 사이에
속하지 않는 제품의 모든 정보를 검색하시오. “ ■ 명령 : SELECT * FROM 제품 WHERE NOT (단가 >= and 단가 <= ); ■ 결과 :
23
② BETWEEN : 특정 범위 내에 속하는 필드들 검색
조건 질의 4.3 특수연산자 사용 ① LIKE, % : 부분 문자열이 일치하는 필드들 검색 ② BETWEEN : 특정 범위 내에 속하는 필드들 검색 ③ IN : 주어진 조건 값들 중 하나 이상의 값과 일치하는 데이터 검색 소속 이름 나이 A반 이순신 23 B반 김미영 22 손성희 20 김영철 21 소속 이름 나이 B반 김미영 22 A반 김영철 21 LIKE(김%) BETWEEN (나이20~22) 소속 이름 나이 B반 김미영 22 손성희 20 A반 김영철 21 IN(나이23, 20, 18) 소속 이름 나이 A반 이순신 23 B반 손성희 20
24
조건 질의 ■ 실습 :”제품테이블에서 품명이 ‘점퍼‘로 끝나는 제품의 품명, 단가를 검색하시오. ”
■ 명령 : SELECT 품명, 단가 FROM 제품 WHERE 품명 LIKE '%점퍼‘ ■ 결과 : 연습 : 테이블 “고객”의 내용 중 이름이 “김”씨에 해당하는 고객의 아이디, 이름, 주소1 필드를 출력하시오 정답 : SELECT 아이디, 이름, 주소1 FROM 고객 WHERE 이름 LIKE ‘김%’;
25
조건 질의 ■ 실습 :” 제품테이블에서 단가가 50000 에서 100000 범위의 값인
제품의 품명, 단가, 종류를 검색하시오. ” ■ 명령 : SELECT 품명, 단가, 종류 FROM 제품 WHERE 단가 BETWEEN AND ■ 결과 : 연습 : 테이블 “고객”의 내용 중 포인트가 5000에서 10000점 사이에 속하는 고객을 모두 출력하시오 정답 : SELECT * FROM 고객 WHERE 포인트 BETWEEN 5000 AND 10000
26
조건 질의 ■실습 :”제품테이블에서 종류가 ‘정장’ 이나 ‘코트’ 인 제품의 종류, 품명, 단가를 검색하시오. ”
■ 명령 : SELECT 종류, 품명, 단가 FROM 제품 WHERE 종류 IN ('정장’, ’코트’); ■ 결과 : 연습 : 테이블 “고객”의 내용 중 우편번호가 ‘600-01’, ‘500-07’, ‘500-13’에 해당하는 고객의 아이디, 성명, 우편번호를 출력하시오 정답 : SELECT 아이디, 성명, 우편번호 FROM 고객 WHERE 우편번호 IN(‘600-01’,’500-07’,’500-13’)
27
조건 질의 4.4 수식 사용 산술연산자, 상수, 열 이름 등에 수식을 적용하여 검색
4.4 수식 사용 산술연산자, 상수, 열 이름 등에 수식을 적용하여 검색 ■ 실습 : “ 제품테이블에서 품명, 단가와 단가를 10% 인상한 값을 ‘단가인상’란 이름으로 검색하시오. ” ■ 명령 : SELECT 품명, 단가, 단가*1.1 as 단가인상 FROM 제품 ■ 결과 : 연습 : 테이블 “고객”에서 포인트를 각각 300점을 가산하여 아이디,이름, 포인트, 추가포인트를 검색하시오 정답 : SELECT 아이디,이름, 포인트, 포인트+300 AS 추가포인트 FROM 고객
28
WHERE (입고일자 – ‘2004-09-01’) > 30
조건 질의 ■ 실습 : “ 제품테이블에서 ‘ ’ 이후에 입고된 제품 중 30일이 지난 제품을 검색하시오. ■ 명령 : SELECT * FROM 제품 WHERE (입고일자 – ‘ ’) > 30 ■ 결과 : 연습 : 오늘을 기준으로 가입한지 30일이 지난 고객의 이름, 전화, 포인트를 출력하시오 정답 : SELECT 이름, 전화, 포인트 FROM 고객 WHERE (GETDATE() – 가입일자) > 30
29
조건 질의 ■ 실습 : “ 종류가 ‘바지’인 제품 중에서 품명과 색상을 하나로 하여 품명+색상, 단가를 검색하시오. ”
■ 명령 : SELECT 품명+색상, 단가 FROM 제품 WHERE 종류 = ‘바지’ ■ 결과 : 연습 : ’고객’테이블에서 이름, 주소1+주소2의 값을 주소로 하여 출력하시오. 정답 : SELECT 이름, 주소1+주소2 AS 주소 FROM 고객
30
조건 질의 4.5 NULL 항목 검색 항목에 값이 주어지지 않는 데이터 검색
■ 실습 : “ 제품테이블에서 단가나 색상이 주어지지 않은 항목이 있으면 검색하시오. ” ■ 명령 : SELECT * FROM 제품 WHERE 단가 IS NULL OR 색상 IS NULL ■ 결과 : 연습 : ‘고객’ 테이블에서 주소1 이나 주소2가 없는 고객을 검색하시오. 정답 : SELECT * FROM 고객 WHERE 주소1 IS NULL OR 주소2 IS NULL
31
5. SQL의 함수 SQL의 함수 종류 함수명 의미 자료형 변환 CONVERT
문자, 숫자, 날짜 등 다양한 자료형을 원하는 다른 자료형으로 변환해 줌 숫자 함수 ABS 절대값 RAND 0과 1 사이의 임의 값 SIGN 양수, 음수, 0 문자 CHAR ASCII 코드에 해당하는 문자 LEFT/RIGHT 문자열의 왼/오른쪽 지정된 수의 글자 REPLACE 주어진 문자열로 치환 STR 숫자를 지정한 형식의 문자로 변환 날짜 GETDATE 현재 날짜와 시간 반환 DAY/MONTH/YEAR 날짜에서 일/월/년 반환 DATEADD 날짜에 주어진 값을 더함
32
SQL의 함수 5.1 문자함수 ■ 실습 :“종류가 ‘바지’인 제품 중 품명과 색상을 하나로 하여 품명+색상, 단가를 검색하시오. 단, 함수를 사용하여 출력을 보기 좋게 하시오 ” ■ 명령 : SELECT RTRIM(품명) + RTRIM(색상) AS 제품명, 단가 FROM 제품 WHERE 종류 = ‘바지’ ■ 결과 : 연습 : ‘고객’ 테이블에서 고객의 이름과 생년월일을 구하시오. (참고:주민번호를 이용해 생년월일을 구함) 정답 : SELECT 이름, SUBSTRING(주민번호, 1, 6) AS 생년월일 FROM 고객
33
SQL의 함수 5.2 숫자함수 ■ 실습 :제품테이블의 모든 제품의 단가를 2.5% 인상하되 100단위까지 반올림하여 품명, 종류, 단가를 출력하시오. ■ 명령 : SELECT 품명, 종류, ROUND(단가*1.025, -2) AS 인상단가 FROM 제품 ■ 결과 : 연습 : 1000 이하의 임의의 정수를 출력하시오. 정답 : SELECT STR(RAND( )*1000, 3, 0)
34
SQL의 함수 5.3 날짜함수 ■ 실습 : 오늘부터 100일째 되는 날을 구하시오.
5.3 날짜함수 ■ 실습 : 오늘부터 100일째 되는 날을 구하시오. ■ 명령 : SELECT DATEADD(DD, 100, GETDATE()) AS ‘100일째 되는 날’ ■ 결과 : 연습 : ‘고객’ 테이블에서 가입한지 1년이 된 고객의 정보를 검색하시오. 정답 : SELECT * FROM 고객 WHERE YEAR(GETDATE()) - YEAR(가입일자) = '1'
35
SQL의 함수 5.4 형 변환함수 ■ 실습 : 제품 테이블의 품명과 단가를 검색하되 단가 뒤에 모두 ‘원’ 이 붙은 형태로 출력하라. ■ 명령 : SELECT 품명, CONVERT(CHAR(10), 단가) + ‘원’ AS 금액 FROM 제품 ■ 결과 : 연습 : 고객의 주민등록 번호에서 출생년도와 예상학번을 찾아 출력하시오 정답 : SELECT 성명, LEFT(주민번호,2) AS 출생년도, CONVERT(INT, LEFT(주민번호,2)) AS 예상학번 FROM 고객
36
답: 검색(또는 조회) 답: FROM 단원 요약 단원요약 1
★ 데이터 조작어 (DML : Data Manipulation Language): DML은 데이터베이스 스키마 내의 데이터 조작에 사용되며, 데이터의 , 삽입, 삭제, 수정에 사용된다. 대화식으로 질의를 작성한 것을 SQL이라고 한다. ? 답: 검색(또는 조회) 단원요약 2 ★ 검색질의: SELECT문에서 SELECT절과 절은 반드시 사용 해야 하며, 기타 WHERE, GROUP BY, ORDER BY절 및 논리/관계/특수연산자, 그룹함수, 수식사용은 같은 선택사항은 필요한 경우에만 사용한다. ? 답: FROM
37
답: WHERE 답: LIKE, GETDATE()
단원 요약 단원요약 3 ★ 검색질의에서 특정 조건을 만족하는 데이터만을 검색하고자 할 때에 SELECT문의 절에 관계연산자( >, >=, <, <=, =,<> )를 추가하여야 하며, 2개 이상의 관계연산자를 사용하는 경우에는 논리연산자(AND, OR, NOT)를 함께 사용하여야 한다. ? 답: WHERE 단원요약 4 ★ 검색질의에서 수식을 사용하거나 특수 연산자를 사용하여 검색할 수 있다 는 부분 문자열의 검색을 위해서 사용된다. 데이터의 형 변환이나 작업 결과의 재사용을 위해 숫자, 문자, 날짜 함수 등이 사용된다. 오늘의 날짜를 얻기 위해서 함수 를 사용한다. ? ? 답: LIKE, GETDATE()
Similar presentations