본문 바로가기
프로그래밍/Database & SQL

[Oracle | 오라클] SELECT문 - 기본 SELECT문

by 불타는홍당무 2015. 8. 10.

※ 이 글은 오지영 강사님의 <업무에 바로 쓰는 SQL 활용실습>의 강의내용을 바탕으로 작성하였습니다.



SQL 작성규칙


  • SQL문은 특별히 표시하지 않는 한 대소문자를 구분하지 않는다.

  • SQL문은 여러 라인에 걸쳐서 작성이 가능하고 가독성을 위해 들여쓰기를 하는 것이 좋다.
  • 키워드는 여르 행에 나누어 쓰거나 약어로 쓸 수 없다.
  • 여러 컬럼을 검색할 때 쉼표로 컬럼을 구분한다.
  • SELECT절에서 출력 결과에 표시할 순서대로 컬럼을 지정한다.
  • SELECT결과 열 머리글(Heading)은 기본적으로 대문자로 표시된다.



01 기본 SELECT

 


1. 형식


SELECT 컬럼1, 컬럼2, 컬럼3, …

FROM 테이블명;

 

SELECT ename, sal

FROM emp;

 

SELECT *

FROM emp;

별표(*)는 모든 컬럼을 조회하겠다는 뜻이다.

 

컬럼은 대소문자 구분를 구분하지 않는다.

SELECT ENAME, sal

FROM emp;

 

컬럼의 중복도 상관 없다.

SELECT ename, sal, ENAME

FROM emp;

 

컬럼을 이용한 연산이 가능하다(기존 테이블에는 영향이 없다. 단순히 값을 꺼내온 후 연산하여 보여줄 뿐이다)

SELECT ENAME, 2*sal

FROM emp;

 

 

2. 별칭(Alias)


컬럼명을 원래의 이름이 아닌 별도의 이름으로 지정할 수 있다.


SELECT ename Ename, sal Sal

FROM emp;

 

주로 연산이 수행된 컬럼에 사용된다.


컬럼명 다음에 AS를 쓴 뒤 그 뒤에 별칭으로 사용할 단어를 제시한다(AS는 생략 가능).


대소문자를 구분하지 않는다. 단, 큰 따옴표(” ”)로 묶어주면 대소문자 구분이 가능하다.


SELECT ename "Ename", sal "Sal"

FROM emp;


특수 문자나 공백을 컬럼의 별칭으로 사용하고자 하면 별칭에 큰 따옴표(" ")를 사용한다.(Sal7은 큰 따옴표가 필요 없으나 7Sal은 필요하다)


SELECT ename "Ename", sal*7 "7Sal"

FROM emp;

 

주의!

Where절에서는 별칭을 사용할 수 없다!!!! 왜냐하면 DB from절 다음에 select절이 아닌 where절을 바라보기 때문이다.

 

SELECT ename name, sal*12 newsal

FROM emp

WHERE newsal > 100;

 

SELECT ename name, sal*12 newsal

FROM emp

WHERE sal*12 > 100;

 

 별칭은 조회값들은 전부 가져온 후 붙여지는 것이지 하나하나씩 값이 가져온 후에 붙여지는 것이 아니다. 때문에 아래와 같은 쿼리는 정상적으로 작동하지 않는다.


SELECT ename name, sal*12 newsal, newsal+200

FROM emp

WHERE sal*12 > 100;

 

3. 리터럴


특정 문자, 숫자, Date 타입 등의 상수를 출력하고 싶을 때 사용한다.


Date 타입이나 문자열은 작은 따옴표('')로 둘러싸야 한다.


SELECT 'ename', 'sal'

FROM emp;


각 문자열은 각 행(Row)가 반환될 때마다 한 번씩 출력된다.


SELECT 77, sal+77, 'sal*2+100'

FROM emp;



4. 연결 연산자

 

컬럼 또는 문자를 다른 컬럼과 연결해서 표현할 때 사용한다.

 

SELECT ename||' : '||job FROM emp;

SELECT ename||' : '||job 결과 FROM emp;

SELECT ename||'('||empno||')' FROM emp;


SELECT ename, job FROM emp;

SELECT CONCAT(ename,job) FROM emp;

SELECT CONCAT(ename||':',job) FROM emp;

※ CONCAT함수는 무조건 인자를 두 개만 사용할 수 있다.  


SELECT ename+job FROM emp; --> 에러



5. DISTINCT 중복 행 제거


같은 컬럼에 있는 동일한 값을 한번만 출력한다SELECT 바로 뒤에 사용한다.


SELECT DISTINCT deptno

FROM emp;

 

DISTINCT 다음에 여러 열을 지정할 수 있다(선택한 모든 열에 영향을 주어 결과로 고유한 열 조합이 표시된다)

 

SELECT DISTINCT deptno, job

FROM emp;