본문으로 바로가기

SELECT

category DataBase/OracleDB 2020. 8. 31. 23:10

SELECT

 : 데이터 검색, 칼럼을 가공 처리하여 조회 가능

 

(테스트를 위한 테이블)

Oracle SQL Developer

모든 컬럼 값 출력

SELECT * FROM 테이블명;

 

컬럼 조회

DESC 테이블명;

 : DESCribe 의 약자

 : 해당 테이블에 어떤 컬럼이 있는지를 조회하는 명령어

 

테이블에서 원하는 컬러만 조회

SELECT 컬럼명 FROM 테이블명;

 : 조회할 컬럼이 여러개 일 경우 ,(콤마)로 구분하고 이름을 여러 개 작성 가능

NAME 컬럼 1개 조회
NAME, AGE 컬럼 2개 조회

표현식을 사용하여 출력

SELECT 컬럼명, '표현식' FROM 테이블명; 

 : 표현식(Expression)이란 컬럼 이름 이외에 출력하기를 원하는 내용을 의미

 : SELECT 구문 뒤에 ' '(작은 따옴표)로 묶어서 사용

 : 리터럴(literal) 상수(문자)라고 부르기도 함

 : 표현식 안에 작은 따옴표가 있을 경우 작은 따옴표 1개를 출력하기 위해서 2개를 사용해야 한다.

작은 따옴표 사용

컬럼 별칭 사용하여 출력

 : 컬럼 별칭(Column Alias)

 : 테이블의 컬럼 이름이 변경되는 것이 아니라 출력될 때 임시로 바꾸어 보여주는 것

SELECT 컬럼명 AS "별칭" FROM 테이블명;
SELECT 컬럼명 "별칭" FROM 테이블명;

 

SELECT 컬럼명 AS "별칭" FROM 테이블명;
SELECT 컬럼명 "별칭" FROM 테이블명;

 

DISTINCT 명령어로 중복된 값을 제거하고 출력

 : 10g R2 버전부터는 별도 정렬작업을 해주어야 함 (정렬기능 없음)

SELECT DISTINCT 컬럼명 FROM 테이블명;

 

연결 연산자로 컬럼을 붙여서 출력

 : 연결(합성) 연산자 (CConcatenation)

SELECT 컬럼명1 || 컬럼명2 FROM 테이블명;

 

SELECT 컬럼명1 || '표현식' || 컬럼명2 FROM 테이블명;

 

원하는 조건만 골라내기 - WHERE절

SELECT 컬럼명
FROM 테이블명
WHERE 조건;

 : 숫자 외에는 꼭 작은 따옴표를 사용

 : 문자는 대소문자 구분을 함

 : 날짜는 대소문자 구분이 없음

 

기본 산술 연산자 사용

 : 덧셈, 뺄셈, 곱셈, 나눗셈 연산자를 사용하여 조회 가능

 

연산자 종류 설명    
=  비교 대상에서 같은 조건을 검색  
!= , <>  비교 대상에서 같지 않은 조건을 검색  
>  비교 대상에서 큰 조건을 검색  
>=  비교 대상에서 크거나 같은 조건을 검색  
<  비교 대상에서 작은 조건을 검색  
<=  비교 대상에서 작거나 같은 조건을 검색  
BETWEEN A AND B  A와 B 사이에 있는 범위 값을 모두 검색  
IN( A, B, C )  A이거나 B이거나 C인 조건을 검색  
LIKE  특정 패턴을 가지고 있는 조건을 검색  
IS NULL / IS NOT NULL  Null 값을 검색 / Null이 아닌 값을 검색  
A AND B  A 조건과 B 조건을 모두 만족하는 값만 검색  
A OR B  A 조건이나 B 조건 중 한 가지라도 만족하는 값을 검색  
NOT A  A가 아닌 모든 조건을 검색  

 

BETWEEN 연산자

SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 BETWEEN 조건1 AND 조건2;

 : 결과는 동일하지만 데이터가 많을수록 BETWEEN의 속도가 더 느리다.

 

IN 연산자

SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 IN (조건1, 조건2, ...);

 

LIKE 연산자

 : % 글자 수에 제한이 없고(0개 포함) 어떤 글자가 와도 상관 없음.

 : _ (Underscore) 글자 수는 한 글자만 올 수 있고 어떤 글자가 와도 상관 없음.

 : '작은 따옴표'로 묶어서 사용해야함.

 : '%'나 '_' 가 조건 부분에서 가장 먼저 나올 경우 SQL의 성은은 대부분 최악으로 늦어질 경우가 많음

 : 절대로 %나 _를 가장 먼저 쓰지 않는다!

SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE '조건%';
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE '조건_';

 

값이 무엇인지 모를 경우

SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 IS NULL;
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 IS NOT NULL;

정렬하여 출력하기 - ORDER BY

 : SQL 문장에서 가장 마지막에 적어야 함

 : ASC 오름차순 (기본 값. 생략가능)

 : DESC 내림차순

SELECT 컬럼명 FROM 테이블명 ORDER BY ASC;
SELECT 컬럼명 FROM 테이블명 ORDER BY DESC;

 

집합 연산자

 : 여러 건의 데이터가 모여 있다

연산자 종류 내용  
UNION  두 집합의 결과를 합쳐서 출력. 중복 값 제거하고 정렬함
UNION ALL  두 집합의 결과를 합쳐서 출력. 중복 값 제거 안 하고 정렬 안함
INTERSECT  두 집합의 교집합 결과를 출력 및 정렬함
MINUS  두 집합의 차집합 결과를 출력 및 정령함. 쿼리의 순서가 중요함

 

UNION / UNION ALL (두 집합의 결과들을 더합니다)

SELECT 컬럼명 FROM 테이블명1 WHERE 조건
UNION ( UNION ALL )
SELECT 컬럼명 FROM 테이블명2 WHERE 조건;

 

INTERSECT 연산자

SELECT 컬럼명 FROM 테이블명1 WHERE 조건
INTERSECT
SELECT 컬럼명 FROM 테이블명2 WHERE 조건;

 

 

MINUS 연산자

SELECT 컬럼명 FROM 테이블명1 WHERE 조건
MINUS
SELECT 컬럼명 FROM 테이블명2 WHERE 조건;

반응형

'DataBase > OracleDB' 카테고리의 다른 글

DDL 명령과 딕셔너리  (0) 2020.09.04
Constraint (제약 조건)  (0) 2020.09.04
JOIN  (0) 2020.09.03
복수행 함수  (0) 2020.09.02
단일행 함수  (0) 2020.09.01