본문 바로가기
Oracle SQL

SQL 기본 2

by Nowkeeh Ahc

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.

http://www.yes24.com/Product/Goods/99002458

댓글