SELECT 문: 데이터 조회
테이블의 전체 데이터 검색
SELECT *
FROM 테이블명;
테이블의 특정 데이터 검색
SELECT 컬럼명[, 컬럼명, …, 컬럼명]
FROM 테이블명;
산술 연산자를 이용한 데이터 검색
순위 | 연산자 혹은 조건 | 설명 |
1 | +, - | 양수, 음수 |
2 | *, / | 곱하기, 나누기 |
3 | +, - | 더하기, 빼기 |
4 | =, !=, <, >, <=, >= | 비교 |
5 | IS [NOT] NULL, LIKE, [NOT] BETWEEN AND, [NOT] IN | 비교 |
6 | NOT | 부정 |
7 | AND | 논리곱 |
8 | OR | 논리합 |
ex. 고객에게 총구매가격의 0.1%를 적립금으로 지급한다고 했을 때, 구매 테이블에서 구매코드, 고객ID, 총구매가격 그리고 적립금(총구매가격*0.001)을 출력하여라.
SELECT 구매코드, 고객ID, 총구매가격, 총구매가격 * 0.001
FROM 구매;
별명을 이용한 검색
SELECT 컬럼명 [AS] “별명”
FROM 테이블명;
연결 연산자
SELECT 컬럼명 | | 컬럼명
FROM 테이블명;
중복 데이터 제거
SELECT DISTINCT 컬럼명
FROM 테이블명;
WHERE 절: 조건을 만족하는 데이터 검색
SELECT 컬럼명
FROM 테이블명
WHERE 조건식;
비교 연산자
연산자 | 설명 |
= | 같다 |
!=, <>, ^= | 같지 않다 |
>, < | 크다, 작다 |
>=, <= | 보다 크거나 같다, 보다 작거나 같다 |
ex. 상품 테이블에서 상품정가가 100만원 이상인 상품의 상품코드와 상품명, 상품정가를 검색하여라.
SELECT 상품코드, 상품명, 상품정가
FROM 상품
WHERE 상품정가 >= 1000000;
논리 연산자
연산자 | 설명 |
AND | 조건이 모두 참이면 결과도 참이다. → 조건을 모두 만족한다. |
OR | 조건 중 하나라도 참이면 결과도 참이다. → 두 개의 조건 중 하나만 만족해도 된다. |
NOT | 조건이 참이면 거짓, 조건이 거짓이면 참이다. → 조건을 부정한다. |
ex. 지점상품 테이블에서 상품코드가 ‘2_I’인 상품을 25개 이상 보유하고 있는 지점의 지점코드를 출력하라.
SELECT 지점코드
FROM 지점상품
WHERE 상품코드 = '2_I' AND 보유량 >= 25;
BETWEEN 연산자
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 [NOT] BETWEEN 하한값 AND 상한값;
IN 연산자
SELECT 컬럼명
FROM 테이블명
WHERE 항목명 IN (값1, 값2, 값3, …);
LIKE 연산자
와일드카드 문자 | 설명 |
% | % 위치에 0개 이상의 문자(열)와 대체한다. |
_ | _ 위치에 반드시 한 개의 문자를 대체한다. |
ex. 고객 테이블에서 고객주소에 ‘동작구’가 들어가는 고객의 모든 정보를 추출하라.
SELECT *
FROM 고객
WHERE 고객주소 LIKE '%동작구%';
IS NULL 연산자
테이블의 컬럼에 저장된 데이터가 없는 경우에 해당 컬럼은 널 (NULL)값을 갖는다고 말하며 기본적으로 오라클은 널값이 저장되는 것을 허용한다. 그러나, 명시적으로 컬럼 정의에서 NOT NULL 제약조건을 설정하면 널값을 가질 수 없게 된다.
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 IS [NOT] NULL;
ORDER BY절: 데이터 정렬
SELECT 컬럼명
FROM 테이블명
[WHERE 조건식]
ORDER BY {컬럼명, 표현식} [ASC, DESC];
수치 데이터 정렬
ex. 상품 테이블에서 모든 상품 정보를 ‘상품정가’가 높은 순으로 정렬하여라.
SELECT *
FROM 상품
ORDER BY 상품정가 DESC;
문자 데이터 정렬
ex.공급사ID가 ‘S01’인 공급사에서 공급한 상품 목록을 확인하고자 한다. 상품공급 테이블에서 상품코드를 기준으로 내림차순 정렬하여 상품코드, 상품공급코드, 공급단가, 공급수량을 검색하여라.
SELECT 상품코드, 상품공급코드, 공급단가, 공급수량
FROM 상품공급
WHERE 공급사ID = 'S01'
ORDER BY 상품코드;
날짜 데이터 정렬
ex. 고객 테이블의 전체 레코드를 생년월일 컬럼을 기준으로 내림차순 정렬하여라
SELECT*
FROM 고객
WHERE 생년월일 IS NOT NULL
ORDER BY 생년월일 DESC;
다중 데이터 정렬
SELECT 컬럼명
FROM 테이블명
[WHERE 조건식]
ORDER BY {컬럼명, 표현식} [ASC, DESC], {컬럼명, 표현식} [ASC, DESC];
This post was written based on what I read and studied the book below.
댓글