본문 바로가기

Database/Oracle

SELECT 문 -1

『 기본 SELECT 문 』

 

SELECT  [컬럼명] ( Select list 절 ) 보고자 하는 data를 소유하고  있는 컬럼(속성) 이름

FROM [테이블명] 명시된 컬럼을 소유하고 있는 테이블 이름 

 

 

desc [테이블명] : 콘솔상에서 테이블을 표기함

*[all] : 모든 데이터를 선택

 

Select * -> 테이블의 모든 컬럼을 선택하라.

 

Select Department_id를 기준으로 검색했을 때 

이는 회사에 22종류의 직무가 있음을 나타낸다.

 

 

select 문으로 모든 컬럼을 타이핑 하여 검색하였다.

Select 문에 들어가는 순서대로 출력되는 것을 확인할 수 있다. (id, name, id, id 순으로 검색)

 

PROJECTION 기능 :  select 문에 넣을 컬럼의 수를 특정(제한) 하여 표기시킴.

위는 select 문에 department_id 와 Location_id 만을 검색 하였음.

 

 

 

 

select 문을 사용하여 직원의 연봉을 구하는 문장. (월급 * 12)

Select 문에는 산술연산자를 활용 가능하다.

 

산술 연산은 문자열에는 불가능하며, 날짜는 증감연산만 사용가능하다. 

 

숫자 속성 * 숫자 속성또한 가능하다.

 

직원들의 연봉에 대한 보너스가 있는 사람은 보너스를 받을 수 있도록

하였다, 하지만 보너스가 없는 사람들은 NULL 값을 가진다.

이에 대해 우리는 NULL 값에 대한 산술 연산은 NULL값을 표출한다는 것을 알 수 있다.

 

이에 대해 nvl(속성, x) 함수는 해당 속성에 연산되는 NULL값을 x로 치환한다.

본문에서는 NULL 연산을 nvl(속성, 1) 로 1로 치환해 곱셈 연산에 대해 보너스가 없는 경우

그대로 반영되게 하였다. 

 

as 절은 앞의 출력 컬럼 이름(헤딩)을 바로 뒤의 출력 컬럼이름(헤딩)으로 치환하여 주며 항상 대문자가 처음으로 혼다.

as 절이 붙은 뒤부터 공백을 넣어서 쓰임도 가능하다

select last_name AS name 에서 As 뒤의 name으로 치환하며 commission_pct comm 은 이미 이전에 as절이 

나왔으므로, 뒤의 공백을 생략된 as절로 인식하여 comm으로 치환한다.

 

하나의 as절이 끝나고 다음 as절로 넘어갈 때에 , 로 속성을 구분하여야 한다.

 

쌍따옴표 "" 로 as절을 명시할 수도 있다.

다만 쌍따옴표 "" 사이에 들어오는 것은 공백을 포함한 문자열이기 때문에

AS절로 인식하지 않는다. 그리고 복수의 문장을 표현하며, 대소문자를 구분하기 때문에 맨 첫번째에 대문자가 붙지 않는다.

 

여기서 as 절을 여러개 사용할 수 있는데

select employee_id as first_name, salary as money 는 다른식으로 표현 하면

select employee_id id, first_name name

select employee_id "id", first_name "name"

select employee_id as id, first_name name

 

와 같이 표현할 수도 있다.

 

 

『리터럴 문자열』

리터럴은 select 목록에 포함된 숫자나 문자, 날짜이다.

날짜 및 문자 리터럴 값은 작은 따옴표로 묶는다.  'a'

각 행이 반환될 때마다 한 번씩 출력

'' -> literal -> 리터럴

"" -> alias -> as절

select last_name ||' is a '|| job_id  -> || || 구분 필수

 

리터널 is a 를 명시하였기에 출력으로 last_name 뒤에 is a 가 붙게되고, 그 다음 job_id 를 as절을 통해

"employee Details" 로 치환하였다.

 

사원이 근무하는 부서의 수 -> 모든 부서의 종류 식으로 치환할 수 있다.

distinct 옵션을 이용하여 중복을 제거한 결과로.

select distinct 와 같이 사용한다, 이는 사원들과 관계되는 부서에 중복을 제거하여 모든 부서만을 1개씩 표기한다

즉, 부서의 종류가 된다.

여기서 테이블에 비어있는 행이 있는데, 이는 본래 데이터가 가지는 값이 NULL임을 알 수 있다.

 

distinct 명령어는 중복을 제거하기 위해 그룹화를 수행한다

그룹화는 같은 값의 데이터들끼리 묶어서 중복을 제거하는 역할을 한다.

이 경우, 두개의 속성이 제시가 되었는데, 멀티플 중복제거라 하여, 첫번째 컬럼을 기준으로 그룹화가 이루어지고

두번째 컬럼은 그룹내에서 중복 제거를 하게 된다.

그러니까 여기서는 같은 department_id 를 가지는 컬럼중에서, 같은 job_id가 있으면 지워라 라고 하는 것이다. 

80 SA_MAN

80 SA_MAN

이렇게 있어야만 첫번째 하나를 표기하게 된다.

 

 

 

 

'Database > Oracle' 카테고리의 다른 글

데이터 조작어 [DML] 와 트랜잭션  (0) 2021.01.05
Select 문 -3 (join)  (0) 2020.12.31
Select문 -2  (0) 2020.12.30
SQL 운용 상식  (0) 2020.12.29
오라클 기본 세팅  (0) 2020.12.29