정보보안공부

Oracle_ select명령을 이용한 다양한 데이터조회 본문

데이터베이스/Oracle

Oracle_ select명령을 이용한 다양한 데이터조회

Steady_sp 2018. 4. 5. 16:47

데이터들을 조회하기위해서는 SELECT쿼리는 반드시 필요하다. SELECT쿼리를 어떻게 사용하는가에 따라서 조회하는 내용을 깔끔하게 정리할 수 있다. 하지만 데이터가 무수히 많을때 같은 결과값이 조회되지만 방법에 따라 SQL수행 속도가 늦어지는 경우도 있으므로 SELECT쿼리를 조회하는 여러가지 방법에 대해 알아보자.


먼저 SELECT쿼리를 다음과같은 형식을 따른다.


SELECT 컬럼 FROM 테이블명




# desc

-> 해당 테이블에 있는 컬럼 정보들을 출력해준다.




-> 테이블 목록을 출력한다.




-> 해당 테이블의 컬럼이름과 타입을 출력해준다.

# 컬럼에 별칭을 사용해보기

 

'Good morning'이라는 문자열을 "Hello"라는 별칭으로 출력했다 별칭은 " " 큰따음표 안에 사용한다.

 

-> dual이라는 테이블은 존재하지않지만 오라클에서 임의로 테스트를 할때 유용하게 사용할 수 있다.

 

# DISTINCT

-> 중복된 값들을 제외하고 하나만 출력한다.

 

 

emp테이블에서 deptno컬럼을 출력하는데 중복된 값을 하나로 하기위해 사용되는 distinct가 있다.

# 연결 연산자

-> 컬럼이나 문자를 연결할 때 사용한다.

 

 

두개의 컬럼의 결과를 연결하려면 아래와같이 || 연결연산자를 사용한다 이때 문자열을 연결하려면 ' ' 안에 문자열을 넣고 '표시는 ''두개를 이용해 표현가능하다.

 

 

# where조건

-> where조건을 이용해 해당 조건의 내용만 출력할 수 있다.

 

 

where조건을 이용해 해당 조건의 내용만 출력할 수 있다.

 

숫자외에는 꼭 작은 따음표를 사용한다.

문자는 대소문자 구분을 하고 날짜는 대소문자 구분이 없다.

 

# 산술 연산자
-> 산술연산자로는 +, -, x, / 를 의미하며 SQL에서도 해당 연산자를 사용할 수 있다.

 

 

# 비교 연산자

-> 비교 연산자에는 여러가지가 있다. BETWEEN, IN, LIKE, IS NULL, IS NOT NULL, AND, OR 등등

 

## BETWEEN

 

 

BETWEEN 연산자는 특정 구간에 속한 모든 값을 다 출력한다. 주의 사항으로는 첫째는 작은 값을 앞에, 큰 값을 뒤에 두번째는 두 값을 포함하는 결과를 출력한다는 점이다.

 

 

BETWEEN 연산자 보다는 가급적 부등호를 이용하면 데이터가 많은경우 더 빠르게 처리할 수 있다는 것을 알아두자.

 

## IN 연산자

 

 

IN 연산자를 사용하면 다른 연산자에비해 빠르게 처리되는 장점이 있다. 조건에는 숫자 뿐만 아니라 문자나 날짜도 올 수 있다.

 

## LIKE 연산자

 

 

LIKE 연산자에 사용하면 %는 글자수는 제한이 없고 어떤 글자가 와도 상관이 없다는 뜻이다. _는 글자수는 한 글자만 올 수 있고 어떤 글자가 와도 상관 없다는 뜻이다.

 

## IS NULL / IS NOT NULL

 

 

위와같이 조회했을때 COMM컬럼에 아무런 표시도 안되어있는 값들이 NULL값들이다.

 

IS NULL을 사용하면 NULL값인 항목을 찾을때 조건으로 사용하며 = NULL로 사용하지 않는다. IS NOT NULL은 NULL값이 아닌 항목을 찾을때 사용한다.

 

## AND/OR

 

 

AND/OR 연산자는 검색 조건이 두 개 이상일 경우 사용한다.

 

 

AND와 OR중 우선순위는 AND에게 있다 산술연산자에서 X와 +중 우선순위가 X에 먼저있다는점이랑 똑같다. OR을 우선순위가 빠르게 하려면 ( ) 처리를 해주어야 한다.

 

# 조건을 입력받기

-> &을 사용하면 조건을 입력받을 수 있다.

 

 

7902를 입력받아 해당조건으로 쿼리가 실행되었다.

 

# ORDER BY

-> 오름차순과 내림차순 두 가지의 경우가 있으며 기본값은 오름차순이다.

 

 

오름차순을 이용해 deptno를 정렬하고 내림차순을 이용해 sal을 정렬하였다.

 

 

ename컬럼의 기준 abcd순서 기준으로 asc, desc를 설정하지 않았으므로 기본값인 오름차순 정렬이 실행되었다.

 

 

order by 뒤에 숫자가 올 수 있는데 이경우 2는 2번째 컬럼인 sal, 1은 1번째 컬럼인 deptno를 나타낸다 sal로 먼저정렬하고 동일한 값이 있는경우 deptno로 다시한번 정렬한다.

 

-> order by 대신 다른 방법들이 많으므로 데이터가 많을수록 최대한 사용하지 않는게 좋다.

 

# 집합 연산자

-> 집합 연산자로는 UNION, UNION ALL, INTERSECT, MINUS가 있다.

-> 집합 연산자는 컬럼의 개수가 같고, 데이터 형도 같아야 사용이 가능하다.

 

# UNION

-> 두 집합의 결과를 합쳐서 출력, 중복 값 제거하고 정렬한다.

 

 

# UNION ALL

-> 두 집합의 결과를 합쳐서 출력, 중복 값 제거 안 하고 정렬 안한다.

 

 

 

# INTERSECT

-> 두 집합의 교집합 결과를 출력 및 정렬한다.

 

 

# MINUS

-> 두 집합의 차집합 결과를 출력 및 정렬한다. 쿼리의 순서가 중요하다.

 

 

 

-> MINUS를 사용하지 않아도 가능하다.

 


 

Comments