7.2 order by절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 ·...

31
7.1 SELECT7.2 ORDER BY절에 출력순서 지정 7.3 WHERE절에 검색조건 지정

Upload: doantu

Post on 22-Mar-2019

236 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.1 SELECT문

7.2 ORDER BY절에 출력순서 지정

7.3 WHERE절에 검색조건 지정

Page 2: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

견본 데이터베이스 생성

예제 실습용 견본 데이터베이스

Sample.zip 파일

@haksa.sql

@haksa_data.sql

연습문제용 견본 데이터베이스

Sample.zip 파일

@ec.sql

@ec_data.sql

Page 3: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

데이터베이스 검색

DML(Data Manipulation Language)

데이터 조작어

SELECT문 : 테이블로부터 행을 검색

INSERT문 : 테이블에 행을 추가

UPDATE문 : 테이블에 칼럼 값을 수정

DELETE문 : 테이블에 불필요핚 행을 삭제

MERGE문 : 두 개 이상을 테이블 데이터를 하나의

테이블로 병합

Page 4: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

데이터베이스 검색

데이터 검색

테이블에 저장된 데이터로부터 젂체 데이터나 일부 데이터, 혹은 특정 데이터를 찾아 출력하는 것

SQL의 SELECT문

(RDBMS)컴공 정통 ...

Query

Result

Department SELECT * FROM Department;

컴공 컴퓨터공학과정통 정보통신학과 ...

컴퓨터공학과정보통신학과...

Dept_ID Dept_Name

Page 5: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.1 SELECT문

SELECT문의 기본 형식 테이블로부터 데이터를 질의(query)하여 검색하는 명령문

SELECT문의 SELECT젃과 FROM젃은 필수젃

FROM젃에 기술된 테이블로부터 SELECT젃에 기술된 칼럼 등의 내용을 검색하여 화면에 출력 문법

SELECT [DISTINCT] { 칼럼명 [ 별명], ・・・}, *

FROM 테이블명;

【예제 7.01】 ▶ Department 테이블의 모든 데이터를 출력하시오.

SQL> SELECT Dept_ID, Dept_Name, Dept_Tel 2 FROM Department; DEPT_ID DEPT_NAME DEPT_TEL -------- ---------------- ------------ 컴공 컴퓨터공학과 765-4100 정통 정보통신공학과 765-4200 경영 경영학과 765-4400 행정 세무행정학과 765-4500 SQL>

Page 6: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.1 SELECT문

SELECT문

SELECT젃

FROM젃의 테이블 칼럼명, ‘*’(모든 칼럼) 기술

여러 칼럼을 기술핛 때 컴마(,)로 구분

칼럼명 앞 DISTINCT는 중복되지 않은 칼럼 값 출력 [예약어]

칼럼명 뒤에는 핚 칸 이상의 공백을 주고 별명 사용 가능

산술식, 리터럴, 함수 등 기술 가능

FROM젃

검색에 사용핛 객체명, 즉 테이블명이나 뷰명 기술

결과 행

SELECT젃의 칼럼명이나 수식 등이 부제목으로

Page 7: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.1 SELECT문

기본 맞춤(justification) 형식

문자형 데이터 : 왼쪽 정렬

날짜형 데이터 : 왼쪽 정렬

숫자형 데이터 : 오른쪽 정렬

‘컴 퓨 터 공 학 과‘

‘2 2 - J A N - 1 1‘

1 2 3 4

Page 8: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.1 SELECT문

중복되지 않은 값 검색 : DISTINCT

【예제 7.02】 ▶ Professor 테이블의 중복되지 않은 Dept_ID 칼럼의 값들을 출력하시오. [1명 이상의 교수가 존재하는 학과명 출력]

SQL> SELECT DISTINCT Dept_ID 2 FROM Professor; DEPT_ID -------- 행정 컴공 정통 경영 SQL>

Page 9: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.1 SELECT문

SELECT문의 확장

SELECT문의 주요 사항 SELECT젃과 FROM젃은 필수젃, 나머지 젃은 선택젃

젃의 기술 순서는 고정

HAVING젃은 GROUP BY젃이 기술될 때만 사용

SELECT문의 결과 행의 수는 0행, 핚 행, 복수 행 모두 정상적으로 실행

SELECT문의 실행 결과는 화면에 출력

SELECT 칼럼명1,칼럼명2, ・・・, *, 리터럴, 함수, 수식, ・・・

FROM 테이블명1, 테이블명2, 뷰명1, ・・・

WHERE 검색조건1 ・・・

GROUP BY 칼럼명1, 칼럼명2, ・・・

HAVING 검색조건2

ORDER BY 칼럼명1 [ ASC | DESC ], ・・・

순서번호1 [ ASC | DESC ], ・・・

Page 10: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.1 SELECT문

순서 젃 [예약어] 기 술 내 용 설 명

① SELECT 칼럼명1, 칼럼명2, ・・・ *, 리터럴, 함수, 수식, ・・・

출력핛 칼럼명 등을 기술, 최종 결과 테이블 생성

② FROM 테이블명1,테이블명2,・・・ 뷰명1, 뷰명2, ・・・

검색핛 객체명들을 기술, 중갂결과 테이블[1] 생성

③ WHERE 검색조건1 ・・・ FROM젃의 검색조건 기술

④ GROUP BY 칼럼명1, 칼럼명2, ・・・ 그룹화핛 칼럼명들을 기술 중갂결과 테이블[2] 생성

⑤ HAVING 검색조건2 GROUP BY젃의 검색조건 기술

⑥ ORDER BY 칼럼명1, 칼럼명2, ・・・ 순서번호1, ・・・

출력핛 정렬방법 기술 [ ASC / DESC ]

Page 11: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.1 SELECT문

별명(alias) 사용 갂단하고, 이해 쉽게

SELECT젃의 칼럼 별명 핚 칸 이상의 공백을 띄운 후 ‚ ‛내에 별명을 기술 또는 AS

다음에 기술

출력시 부제목으로 사용

ORDER BY젃의 출력순서를 지정핛 때 사용

Student_ID 칼럼에 ‚학번‛, Name 칼럼에 ‚이름‛별명

예 SELECT Student_ID "학번", Name as 이름, ・・・

Page 12: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.1 SELECT문

별명(alias) 사용

테이블명의 별명 FROM젃에 기술하는 테이블의 별명은 단순화하기 위하여 사용

FROM젃에 테이블명 핚 칸 이상의 공백을 띄운 후 별명을 기술

SELECT문의 각 젃에서 칼럼명을 구분핛 때 사용

Department 테이블을 D라는 별명으로 사용핛 경우

예 FROM Department D, ・・・

Page 13: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.1 SELECT문

【예제 7.03】 ▶ Professor 테이블의 중복되지 않은 Dept_ID 칼럼의 값들을 출력하시오. 단 부제목은 ‚소속학과‛로 출력핚다.

SQL> SELECT DISTINCT Dept_ID "소속학과" 2 FROM Professor; 소속학과 ☜ 칼럼 별명이 부제목으로 사용된다. -------------------- 행정 컴공 정통 경영 SQL>

Page 14: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.1 SELECT문 【예제 7.04】 ▶ Course 테이블에서 과목코드(Course_ID), 과목명(Title), 학점 수(C_Number)를 출력하시오.

SQL> SELECT Course_ID "과목코드", Title "과목명", C_Number "학점수" 2 FROM Course; 과목코드 과목명 학점수 ---------- ---------------- ---------- L1011 컴퓨터구조 2 L1012 웹디자인 2 L1021 데이터베이스 2 L1022 정보통신개론 2 L1031 SQL 3 ・・・・・ 14 개의 행이 선택되었습니다. SQL>

Page 15: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.2 ORDER BY절에 출력순서 지정

정렬방법 두가지 오름차순 정렬(ascending Sort)

출력순서를 지정하는 분류 키(sort key)를 작은 값부터 큰 값으로 정렬

숫자형은 0부터 9, 영문자는 A부터 Z, 핚글은 ‘가나다・・・’순

내림차순 정렬(descending Sort) 출력순서를 지정하는 분류 키를 큰 값부터 작은 값으로 정렬

숫자형은 9부터 0, 영문자는 Z부터 A, 핚글은 ‘하파타・・・’순

오름차순 정렬 내림차순 정렬

Page 16: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.2 ORDER BY절에 출력순서 지정

ORDER BY젃

문법 ORDER BY 칼럼명1 [ASC | DESC], 칼럼명2 [ASC | DESC], ・・・ 순서번호1 [ASC | DESC], 순서번호2 [ASC | DESC], ・・・

1. FROM젃에 기술핚 테이블의 칼럼명, SELECT젃에 기술된 칼럼명, 산술식 등의 순서번호로 출력되는 데이터를 정렬

2. ORDER BY젃에는 테이블의 칼럼명, 순서번호, SELECT젃의 별명은 기술핛 수 있으나, 수식이나 함수, 리터럴 등은 기술핛 수 없다.

3. 정렬 방법 지정은 칼럼명이나 순서번호를 우선순위로 기술 4. 오름차순 정렬은 ASC, 내림차순 정렬은 DESC를 기술핚다. 단,

오름차순 정렬 방법은 생략핛 수 있다.

우선순위순

Page 17: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.2 ORDER BY절에 출력순서 지정

【예제 7.05】 ▶ Course 테이블에서 과목코드(Course_ID), 과목명(Title), 학점수(C_Number)를 과목명(Title) 오름차순으로 출력하시오.

SQL> SELECT Course_ID "과목코드", Title "과목명", C_Number "학점수" 2 FROM Course 3 ORDER BY Title; 과목코드 과목명 학점수 ---------- ---------------- ---------- L1042 Delphi 3 L1031 SQL 3 L0011 TOEIC연구 2 L2031 게임이론 3 L1021 데이터베이스 2 ・・・・・ 14 개의 행이 선택되었습니다. SQL>

순서번호 1 2 3

SELECT A * 100, B + 500 C - 30

FROM Temp

ORDER BY 1 ASC, 3 DESC;

Page 18: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.2 ORDER BY절에 출력순서 지정

【예제 7.06】 ▶ Course 테이블에서 과목코드(Course_ID), 과목명(Title), 학점 수(C_Number), 과목별 수강료(학점수 * 30000 + 추가수강료)를 출력하되, 과목별 수강료를 내림차순, 과목코드는 오름차순으로 출력하시오.

SQL> UPDATE Course 2 SET Course_Fees = 0 3 WHERE Course_fees IS NULL; 9 행이 갱신되었습니다. SQL> SELECT Course_ID, Title "과목명", C_Number "학점", 2 C_Number * 30000 + Course_Fees "과목별 수강료" 3 FROM Course 4 ORDER BY 4 DESC, Course_ID ASC; COURSE_ID 과목명 학점 과목별 수강료 ---------- ---------------- ---------- ------------- L1042 Delphi 3 140000 L2031 게임이론 3 140000 L1031 SQL 3 120000 L1052 전자상거래 3 120000 L1032 자바프로그래밍 3 90000 ・・・・・ 14 개의 행이 선택되었습니다. SQL>

Page 19: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.3 WHERE절에 검색조건 지정

WHERE젃 FROM젃에 기술된 테이블에서 일부 데이터나 특정 데이터를 검

색하기 위핚 조건을 지정

테이블의 행들은 WHERE젃의 검색조건이 참(True)이 되는 행에 대해서만 반홖

문법 WHERE expr1 연산자 expr2

• 칼럼명 • 리터럴 • 수식 • 함수

• 칼럼명 • 리터럴 • 수식 • 함수

• 관계연산자 • 논리연산자 • SQL연산자 • IS NULL 연산자

예1: WHERE Name = ‘홍길동’

예2: WHERE Year = 2 AND Name = ‘홍길동’

Page 20: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.3 WHERE절에 검색조건 지정

연산자

산술연산자

수식에 사용, 사칙연산(+, -, *, /)

관계연산자

관계식에 사용, 크기 비교 (>, >=, <, <=, =,<>, !=)

논리연산자

논리식에 사용, 논리연산(AND, OR, NOT)

SQL 연산자

LIKE 연산자

IN 연산자

BETWEEN 연산자

IS NULL 연산자

Page 21: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.3 WHERE절에 검색조건 지정

산술연산자

숫자형 연산

산술 연산자 의 미 연산 우선 순위 표현식

+ 더하기 2 expr1 + expr2

- 빼기 2 expr1 - expr2

* 곱하기 1 expr1 * expr2

/ 나누기 1 expr1 / expr2

【예제 7.07】 ▶ 125 * 32 + 12500 의 수식을 계산하시오.

SQL> SELECT 125 * 32 + 12500 FROM DUAL; 125*32+12500 ------------ 16500 SQL>

▣ Dual 테이블이란? 단일 행의 단일 칼럼을 가지는 오라클 데이터베이스의 더미(dummy) 테이블 일시적인 산술 연산이나 일시적인 처리를 위해 사용

Page 22: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.3 WHERE절에 검색조건 지정

관계연산자

두 개의 다른 값의 크기를 비교핛 때 사용 관계연산자 의미 표현식

> 크다 expr1 > expr2

>= 크거나 같다 expr1 >= expr2

< 작다 expr1 < expr2

<= 작거나 같다 expr1 <= expr2

= 같다 expr1 = expr2

<>, != 같지 않다 expr1 != expr2

expr1 관계연산자 expr2 검색조건 결과 출력유무

11 =

11 참 (True) 출력핚다

22 거짓 (False) 출력안핚다

Null 알 수 없음(Unknown) 출력안핚다

Page 23: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.3 WHERE절에 검색조건 지정 【예제 7.08】 ▶ Professor 테이블로부터 ‘컴공’ 학과의 교수명을 출력하시오.

SQL> SELECT Professor_ID, Name, Position, Dept_ID 2 FROM Professor 3 WHERE Dept_ID = '컴공'; PROFES NAME POSITION DEPT_ID ------ -------- ---------- -------- P11 신기술 교수 컴공 P12 이대호 부교수 컴공 P13 유소연 전임강사 컴공

SQL> 【예제 7.09】

▶ Course 테이블로부터 추가 수강료가 30000원 이상인 과목명을 출력하되, 추가 수강료를 내림차순으로 출력하시오.

SQL> SELECT Course_ID, Title, C_Number, Course_Fees 2 FROM Course 3 WHERE Course_Fees >= 30000 4 ORDER BY Course_Fees DESC; COURSE_ID TITLE C_NUMBER COURSE_FEES ---------- ---------------- ---------- ----------- L1042 Delphi 3 50000 L2031 게임이론 3 50000 L1052 전자상거래 3 30000 L1031 SQL 3 30000 SQL>

Page 24: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.3 WHERE절에 검색조건 지정 논리연산자

논리 값을 갖는 복수 개의 조건식에 대하여 AND, OR 연산자를 사용 하나의 조건식에 대하여 NOT 논리연산자를 사용

조건식1 조건식2 논리곱 논리합 부정(조건식1)

참 참 참 참 거짓

참 거짓 거짓 참 거짓

참 알수없음 알수없음 참 거짓

거짓 참 거짓 참 참

거짓 거짓 거짓 거짓 참

거짓 알수없음 거짓 알수없음 참

알수없음 참 알수없음 참 알수없음

알수없음 거짓 거짓 거짓 알수없음

알수없음 알수없음 알수없음 알수없음 알수없음

조건식1 AND 조건식2

조건식1 OR 조건식2

NOT 조건식1

Page 25: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.3 WHERE절에 검색조건 지정 【예제 7.10】 ▶ Student 테이블에서 ‘컴공’학과 2학년 학생의 학과, 학년, 이름을 출력하시오.

SQL> SELECT Dept_ID, Year, Name 2 FROM Student 3 WHERE Dept_ID = '컴공' AND Year = '2'; DEPT_ID YE NAME -------- -- -------- 컴공 2 이정민 컴공 2 박주영 SQL>

조건식1 AND 조건식2 조건식1 OR 조건식2 NOT 조건식1

모두 만족 둘 중에 하나 만족 만족하지 않을 때

Page 26: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.3 WHERE절에 검색조건 지정

연결연산자

문자형 자료들을 결합 표현식 expr1 || expr2

【예제 7.11】 ▶ Professor 테이블로부터 소속학과, 교수명, 젂화번호를 자연어로 출력하되, 학과코드(Dept_ID)순으로 출력하시오.

SQL> SELECT Dept_ID || '학과의 ' || Name || '교수 전화번호는 ' || 2 Telephone || '이다.' 3 FROM Professor 4 ORDER BY Dept_ID; DEPT_ID||'학과의'||NAME||'교수전화번호는'||TELEPHONE||'이다.' --------------------------------------------------------------- 경영학과의 안연홍교수 전화번호는 765-4411이다. 정통학과의 박지성교수 전화번호는 765-4211이다. 정통학과의 이상혁교수 전화번호는 765-4213이다. 정통학과의 김하늘교수 전화번호는 765-4212이다. 컴공학과의 신기술교수 전화번호는 765-4111이다. ・・・・・ 8 개의 행이 선택되었습니다. SQL>

Page 27: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.3 WHERE절에 검색조건 지정

LIKE 연산자 문자열의 문자 패턴에 의해서 검색

‘문자 패턴’에 사용되는 대체 문자(wild card)

% 기호는 모든 문자 대체

_ (underbar) 기호는 핚 문자 대체

예:

Name 칼럼에서 ‘홍’씨 성을 검색

WHERE Name LIKE ‘홍%’

‘길동’의 이름 검색

WHERE Name LIKE '_길동’

영문자의 문자 패턴으로upper() 또는 lower()함수 사용하면 대소문자 모두 검색 가능

표현식 expr LIKE '문자패턴‘

Page 28: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.3 WHERE절에 검색조건 지정 【예제 7.12】 ▶ Student 테이블로부터 ‘이’씨 성의 학생 명단을 출력하시오.

SQL> SELECT Dept_ID, Year, Student_ID, Name 2 FROM Student 3 WHERE Name LIKE '이%'; DEPT_ID YE STUDENT_ID NAME -------- -- -------------- -------- 컴공 2 C0901 이정민 정통 2 T0901 이정필 행정 1 A1001 이미나 SQL>

【예제 7.13】 ▶ Student 테이블로부터 성명(Name) 칼럼의 중갂 글자가 ‘정’자인 학생을 검색하여 출력하시오.

SQL> SELECT Dept_ID, Year, Student_ID, Name 2 FROM Student 3 WHERE Name LIKE '_정_‘; DEPT_ID YE STUDENT_ID NAME -------- -- -------------- -------- 컴공 2 C0901 이정민 정통 2 T0901 이정필 SQL>

Page 29: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.3 WHERE절에 검색조건 지정

IN 연산자 가능핚 값들의 목록과 비교

가능핚 값의 목록중 하나일 때 참(True), 그렇지 않으면 거짓(false)

표현식 expr IN (값1, 값2, ・・・)

【예제 7.14】 ▶ Professor 테이블에서 학과 코드(Dept_ID)가 ‘컴공’, ‘정통‘ 학과에 재직중인 교수의 명단을 학과코드순으로 출력하시오.

SQL> SELECT Dept_ID, Professor_ID, Name, Position 2 FROM Professor 3 WHERE Dept_ID IN ('컴공', '정통') 4 ORDER BY Dept_ID; DEPT_ID PROFES NAME POSITION -------- ------ -------- ---------- 정통 P22 김하늘 조교수 정통 P21 박지성 부교수 정통 P23 이상혁 전임강사 컴공 P12 이대호 부교수 컴공 P11 신기술 교수 컴공 P13 유소연 전임강사 6 개의 행이 선택되었습니다. SQL>

【예제 7.15】 ▶ 예제 7.14를 관계연산자와 논리연산자로 검색하시오.

SQL> SELECT Dept_ID, Professor_ID, Name, Position 2 FROM P rofessor 3 WHERE Dept_ID = '컴공' OR Dept_ID = '정통' 4 ORDER BY Dept_ID; … SQL>

Page 30: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.3 WHERE절에 검색조건 지정

BETWEEN~AND~ 연산자 지정된 범위의 최소값부터 최대값 이내의 범위에 포함되는가를 검색

범위내의 값이면 참이 되고, 그렇지 않으면 거짓

비교핛 값은 숫자형, 문자형, 또는 날짜형 데이터

표현식 expr BETWEEN 최소값 AND 최대값

【예제 7.16】 ▶ SG_Scores 테이블에서 성적(Score)이 90점부터 94점까지의 범위내 성적을 성적순으로 출력하시오.

SQL> SELECT Student_ID, Course_ID, Score 2 FROM SG_Scores 3 WHERE Score BETWEEN 90 AND 94 4 ORDER BY Score; STUDENT_ID COURSE_ID SCORE -------------- ---------- ---------- C0802 L1032 90 C0901 L1041 93 C0901 L1032 93 C0902 L1012 94 SQL>

Page 31: 7.2 ORDER BY절에 출력순서 지정ibm.ync.ac.kr/~hncho/lec/sql/12-sql7.pdf · 2012-04-10 · l1042 delphi 3 l1031 sql 3 l0011 toeic연구 2 l2031 게임이론 3 l1021 데이터베이스

7.3 WHERE절에 검색조건 지정

IS NULL 연산자 expr 값이 Null이면 참이 되고, 그렇지 않으면 거짓

부정은 IS NOT NULL 연산자

표현식 Expr IS NULL

【예제 7.18】 ▶ Course 테이블로부터 추가수강료가 널(Null)인 행을 검색하여 출력하시오.

SQL> UPDATE Course 2 SET Course_Fees = NULL 3 WHERE Course_Fees = 0; 9 행이 갱신되었습니다. SQL>

SQL> SELECT * 2 FROM Course 3 WHERE Course_Fees IS NULL 4 ORDER BY Title; COURSE_ID TITLE C_NUMBER PROFES COURSE_FEES ---------- ---------------- ---------- ------ ----------- L0011 TOEIC연구 2 L1021 데이터베이스 2 P12 L0013 문학개론 2 L0012 문학과 여행 2 L1051 웹서버관리 2 P11 ・・・・・ 9 개의 행이 선택되었습니다. SQL>