데이터베이스 데이터 조작어(DML) - 조건검색, 정렬검색

데이터베이스 데이터 조작어(DML)

조건검색, 정렬검색


조건검색: WHERE

SLECT문과 같이 사용하는 WHERE 키워드는 논리 연산자와 비교 연산자로 조건을 만족하는 데이터만 검색 할 수도 있습니다.

비교 연산자

= 같다

<> 다르다

< 작다

> 크다

<= 작거나 같다

>= 크거나 같다

※왼쪽을 기준으로 읽음

논리 연산자

AND 모든 조건을 만족해야 검색

OR 여러 조건 중 하나만 만족해도 검색

NOT 조건을 만족하지 않는 것만 검색

조건 검색 방법

SELECT [ALL | DISTINCT] 속성명 FROM 테이블명
[WHERE 속성명 논리연산 비교연산];
대괄호[]는 생략가능

WHERE절은 무조건 테이블명 뒤에 나와야 합니다.

숫자 뿐만 아니라 문자나 날짜 값을 비교하는것도 가능하며 문자나 날짜 값을 비교 할 때는 작은 따옴표로 묶어서 표현합니다.

SELECT 제품명, 재고량, 단가 FROM 제품 WHERE 제조업체='롯데';

 -속성명 제품명, 재고량, 단가를 제품 테이블에서 제조업체가 롯데인것만 검색

SELECT 주문제품, 주문일자 FROM 주문 WHERE 주문고객='홍길동' AND 수량 >= 15;

 - 속성명 주문제품, 주문일자를 주문 테이블에서 홍길동이 15개 이상 주문한것만 검색

SELECT 주문제품, 주문일자 FROM 주문WHERE 주문고객='홍길동' OR 수량 >=15;

- 속성명 주문제품, 주문일자를 주문고객이 홍길동이거나 15개 이상 주문한것만 검색

- 주문고객이 홍길동인것은 모두 검색 (수량이 15개 이하도 검색됨)

- 수량이 15개 이상인것은 모두 검색 (주문고객이 홍길동이 아니여도 갬색됨)

SELECT 제품명, 단가 FROM 제품 WHERE 단가 >= 2000 AND 단가 <= 3000;

- 속성명 제품명, 단가를 제품 테이블에서 단가가 2000원 이상이고, 3000원 이하인것만 검색

LIKE를 이용한 검색

LIKE는 부분적으로 일치하는 데이터를 검색합니다. 문자열을 이용하는 조건에만 LIKE 키워드를 사용합니다.

%(퍼센트): 0개 이상의 문자(문자의 내용과 길이는 상관없음)

_ (언더바): 한개의 문자(문자의 내용은 상관없지만 길이는 상관있음), 언더바 하나에 한개의 글자.

LIKE  '홍길동%'

- 홍길동으로 시작하는 문자열이며, 홍길동으로 시작하기만 하면 문자의 길이는 상관없음

LIKE  '%홍길동'

- 홍길동으로 끝나는 문자열이며, 홍길동으로 끝나기만 하면 문자의 길이는 상관없음

LIKE '%홍길동%'

- 문자열 가운데에 홍길동이 포함된 길이와 상관없는 문자열

LIKE '홍길동_ _ _'

- 홍길동을 포함해서 6자 길이의 문자열

LIKE '_ _ 동%'

 - 첫 번째, 두 번째 글자는 상관없이 세 번째 글자가 '동'인 문자열. 뒤에는 길이가 상관없음

SELECT 고객이름, 나이 FROM 고객 WHERE 고객이름 LIKE '김%';

- 속성명 고객이름, 나이를 고객테이블에서 고객이름이 김씨인(길이 상관없음) 고객만 검색

SELECT 고객아이디, 고객이름 FROM 고객 WHERE 고객아이디 LIKE '_ _ _ _ _';

속성명 고객아이디, 고객이름을 고객테이블에서 고객아이디가 5글자인것만 검색

NULL을 이용한 검색

IS NULL

- 검색 조건에서 특정 속성의 값이 널값인지 비교

IS NOT NULL

 - 특정 속성의 값이 널값이 아닌지를 비교

※ 검색 조건에서 널값은 다른 값과 크기를 비교하면 결과가 모두 거짓

SELECT 고객이름 FROM 고객 WHERE 나이 IS NULL;

- 고객 테이블에서 나이가 아직 입력되지 않은 고객이름을 검색

SELECT 고객이름 FROM 고객 WHERE 나이 IS NOT NULL;

- 고객테이블에서 나이가 NULL값이 아니고 입력이 된 고객이름을 검색

정렬검색: ORDER BY

결과 테이블 내용을 사용자가 원하는 정렬 순서로 출력하는 키워드 입니다.

ASC: 오름차순(작은 숫자에서 큰 숫자로 표시)

DESC: 내림차순(큰 숫자에서 작은 숫자로 표시) 

※ ASC, DESC를 생략하면 ASC가 기본

※ 널 값은 오름차순에서는 맨 마지막에 출력, 내림차순에서는 맨 먼저 출력

SELECT [ALL | DISTINCT] 속성명 FROM 테이블명
[WHERE 속성명 논리연산 비교연산] 
[ORDER BY 속성명 정렬];
대괄호[]는 생략 가능 

SELECT 고객이름, 나이 FROM 고객 ORDER BY 나이 DESC;

- 고객테이블에서 고객이름과 나이를 검색하되, 나이를 기준으로 내림차순 정렬

- 나이가 가장 많은 순이고 NULL값은 가장 마지막에 출력됨

댓글

이 블로그의 인기 게시물

[정보처리기사] OSI 7계층 정리

블로그스팟 상위노출 시작하기

데이터베이스 데이터 정의어(DDL), 자료형(데이터 타입)