Oracle

SELECT

sejin2 2024. 6. 10. 10:08

테이블 컬럼의 정보 조회

( ' ) 홑따옴표 : 문자열일 때

( " ) 쌍따옴표 : 컬럼명일 때 

 

SELECT

: 데이터를 조회할 때 사용하는 구문

RESULT SET : SELECT문을 통해 조회된 결과물 ( 조회된 행들의 집합 )

[표현법]
SELECT 조회하려는 컬럼명, 조회하려는 컬럼명, ...
FROM 테이블명

 

컬럼 값을 통한 산술 연산

SELECT절 컬럼명 작성 부분에 산술 연산 기술이 가능하다. ( 이때 산술 연산된 결과 조회 )

SELECT 
    emp_id, 
    emp_name, 
    salary, 
    salary * 1.10 AS salary_with_bonus
FROM 
    emp;

위 예시는 직원 테이블에서 (emp) 월급(salary)에 보너스(10%)를 더한 값을 계산하여 조회하는 것으로 

보너스를 구하는 부분에 산술 연산이 기술되었다. 

 

컬럼명에 별칭 지정하기

산술 연산시 산술에 들어간 수식 그대로 컬럼명이 되는데, 이때 별칭을 부여하면 깔끔하게 처리된다.

[표현법]
컬럼명 별칭 / 컬럼명 AS 별칭 / 컬럼명 "별칭" / 컬럼명 AS "별칭"
별칭에 띄어쓰기나 특수문자 포함되면 반드시 (") 쌍따옴표를 넣어줘야 한다

 

리터럴

임의로 지정된 문자열 ( ' )

SELECT절에 리터럴을 제시하면 마치 테이블상에 존재하는 데이터 처럼 조회 가능
조회된 RESULT SET의 모든 행에 반복적으로 출력
SELECT 
    emp_name, 
    'Company XYZ' AS company_name
FROM 
    emp;

위 예시는 emp 테이블 각 행에 대해 emp_name 컬럼과 고정된 문자열 리터럴 'company XYZ'를 조회한다. 
아래와 같이 각 행에 대해 리터럴 값인 'Company XYZ'가 반복적으로 출력되는 것을 확인할 수 있다. 

연결연산자 ||

여러 컬럼 값들을 마치 하나의 컬럼 값인 것처럼 연결하거나, 컬럼 값과 리터럴을 연결할 수 있다. 

  • 여러 컬럼 값을 하나의 컬럼 값 처럼 연결
SELECT 
    emp_name || ' (' || job_title || ')' AS employee_info
FROM 
    emp;

  • 컬럼 값과 리터럴 연결
SELECT 
    'Employee: ' || emp_name AS employee_label
FROM 
    emp;

 

DISTINCT

컬럼의 중복된 값들을 한 번씩만 표시하고자 할 때 

※ SELECT절에서 DISTICT는 한번만 기술이 가능하다. 

SELECT DISTINCT DEPT_CODE, JOB_CODE
FROM EMPLOYEE;

=> DEPT_CODE, JOB_CODE 2개의 조합 중에 중복된 것 제외

 

WHERE절

: 조회하고자 하는 테이블에서 특정 조건에 만족하는 데이터만 조회할 때 사용한다. 

WHERE절에 조건식을 제시한다. 

[표현법]
SELECT 컬럼, 컬럼, 산술연산, ...
FROM 테이블명
WHRER 조건식;

 

  • 비교연산자
  • >, <, >=, <= : 대소비교
  • = : 같은지 비교
  • !=, ^=, < > : 같지 않은지 비교

 

  • 논리연산자 : 여러 개의 조건을 묶어서 제시하고자 할 때
  • AND( ~이면서, 그리고 )
  • OR ( ~ 이거나, 또는 )
  • NOT ( 부정 ) : 컬럼명 앞 또는 BETWEEN 앞에 쓴다

 

  • BETWEEN AND : ~이상 ~이하인 범위의 조건을 제시할 때
[표현법]
  비교대상컬럼 BETWEEN 하한 값 AND 상한 값

 

  • LIKE : 비교하고자하는 컬럼 값이 내가 제시한 특정 패턴에 만족하는 경우 조회
[표현법]
비교대상컬럼 LIKE '특정패턴'
: 특정패턴 제시시 '%', '_' 와일드카드로 사용할 수 있음

- % : 0 글자 이상
EX) 비교대상컬럼 LIKE '문자%' => 비교대상 컬럼 값이 '문자'~로 시작되는  것들을 조회
    비교대상컬럼 LIKE '%문자' => 비교대상 컬럼 값이 '~문자'로 끝나는 것들을 조회
    비교대상컬럼 LIKE '%문자%' => 비교대상 컬럼 값이 '문자'가 포함되는 것들을 모두 조회

- '_' : 1 글자
EX) 비교대상컬럼 LIKE '_문자' => 비교대상 컬럼 값의 '문자' 앞에 무조건 한 글자가 올 경우 조회 
            ( 3 글자만 가능 )
    비교대상컬럼 LIKE '문자_' => 비교대상 컬럼 값의 '문자' 뒤에 무조건 한 글자가 올 경우 조회 
            ( 3 글자만 가능 )
    비교대상컬럼 LIKE '_문자_' => 비교대상 컬럼 값의 '문자' 앞과 뒤에 무조건 한 글자씩 올 경우 
            조회 ( 4 글자만 가능 )

 

이메일 중 앞에 글자가 3글자인 사원들의 사번, 사원 명, 이메일 조회
SELECT EMP_ID, EMP_NAME, EMAIL
FROM EMPLOYEE
WHERE EMAIL LIKE '___%'; → 언더바 4개로 인식                                                                                  
 _가 와일드 카드로 인식이 됨 -> 데이터와 와일드카드를 구분지어야 함
: 데이터 값으로 취급하고자하는 값 앞에 나만의 와일드카드 ( 아무거나 ( 문자, 숫자, 특수문자 ))를 제시하고, 
나만의 와일드카드 escape로 등록해야 함 !


SELECT EMP_ID, EMP_NAME, EMAIL
FROM EMPLOYEE
WHERE NOT EMAIL LIKE '__#%'ESCAPE'#';

 

  • IS NULL / IS NOT NULL : 컬럼 값에 NULL이 있는 경우 NULL값 비교에 사용되는 연산자

 

  • IN / NOT IN
    • IN : 컬럼 값이 내가 제시한 목록 중에 일치하는 값이 있는 것만 조회
    • NOT IN : 컬럼 값이 내가 제시한 목록 중에 일치하는 값이 있는 것을 제외한 나머지 조회
[표현법]
비교대상컬럼 IN ( '값1', '값2', '값3', .... )
<< 연산자 우선순위 >>
1. ( )
2. 산술연산자
3. 연결연산자
4. 비교연산자
5. IS NULL / LIKE '패턴' / IN
6. BETWEEN AND
7. NOT ( 논리연산자 )
8. AND ( 논리연산자 )
9. OR ( 논리연산자 )

 

ORDER BY절

: 정렬, SELECT문 가장 마지막 줄에 작성하고, 실행 순서 또한 맨 마지막에 실행된다. 

[표현법]
SELECT 컬럼, 컬럼, ....
FROM 테이블명
WHERE 조건식
ORDER BY 정렬기준이 되는 컬럼명 | 별칭 | 컬럼순번[ ASC | DESC ] | [NULLS FIRST | NULLS LAST]
  • ASC : 오름차순 정렬 ( 생략 시 기본 값 )
  • DESC : 내림차순 정렬
  • NULLS FIRST : 정렬하고자 하는 컬럼 값에 NULL이 있는 경우 해당 데이터를 맨 앞에 배치
    ( 생략 시 DESC일 때의 기본 값 )
  • NULLS LAST : 정렬하고자 하는 컬럼 값에 NULL이 있는 경우 해당 데이터를 맨 뒤에 배치
    ( 생략 시 ASC일 때의 기본 값 )

'Oracle' 카테고리의 다른 글

SELECT  (0) 2024.06.04
데이터베이스  (0) 2024.06.04