DML 3
DML (SELECT 2)
형 변환
형번환이란 두 개의 데이터의 데이터타입이 일치하도록 변환하는 것이다.
형변환은 명시적(Explict) 암시적 (Implicit) 형변환이 있다.
명시적 형변환은 사용자가 직접 함수를 통해 데이터 타입을 바꾸는 것을 의미하며, 암시적 형변환은 DBMS 가 자동으로 형변환 하는 것을 의미한다.
형 변환 함수
형변환 함수 | 설명 |
---|---|
TO_NUMBER(문자열) | 문자열을 숫자로 변환한다. |
TO_CHAR(숫자or날자,[FORMAT] | FORMAT의 문자로 변환한다. |
TO_DATE(문자열,FORMAT) | 문자열을 지정된 FORMAT의 날짜형으로 변환한다. |
인덱스 칼럼을 형변환 하게 된다면 인덱스를 사용하지 못 한다.
내장형 함수
문자열 함수
문자열 함수 | 설명 |
---|---|
ASCII(문자) | 문자 호는 숫자를 아스키 코드로 변환 |
CHAR(아스키코드) | 아스키 코드를 문자로 변환 |
SUBSTR(문자열,m,n) | 문자열을 m번째 위치에서 n개만큼 슬라이싱 |
CONTACT(문자열1,문자열2) | 문자열을 합침 |
LOWER(문자열) | 문자열 소문자로 변환 |
UPPER(문자열) | 문자열 대문자로 변환 |
LEN or LENGTH | 공백 포함 문자열 길이 산출 |
LTRIM(문자열,지정문자) | 왼쪽에서 지정문자 삭제 |
RTRIM(문자열,지정문자) | 오른쪽에서 지정문자 삭제 |
TRIM(문자열, 지정문자) | 왼쪽 오른쪽에서 지정된 문자 삭제 |
날짜형 함수
날짜형 함수 | 설명 |
---|---|
SYSDATE | 오늘의 날짜를 날짜 타입으로 알려줌 |
EXTRACT(‘YEAR’|’MONTH’|’DAY’ from dual) | 날짜에서 년 월 일 조회 |
숫자형 함수
숫자형 함수 | 설명 |
---|---|
ABS | 절대값 |
SIGN | 양수 음수 0 을 구별 |
MOD(숫자1,숫자2) | 숫자1을 숫자2로 나누어 나머지 계산 (%로 대체 가능) |
CEIL/CEILING | 숫자보다 크거나 같은 최소의 정수를 반환 |
FLOOR | 숫자보다 작거나 같은 최대의 정수를 반환 |
ROUND(숫자,m) | 소수점 m 자리에서 반올림 |
TRUNC(숫자,m) | 소수점 m 자리에서 절삭 |
DECODE와 CASE
DECODE
DECODE문은 IF문과 동일한 기능을 한다.
SELECT DECODE(칼럼명,조건,'TRUE','FALSE') FROM 테이블명 ;
-- 위 칼럼의 속성이 조건과 일치하다면 TRUE는 반환하고 불일치하다면 FALSE를 반환한다.
CASE
CASE문은 else if 와 같이 사용된다.
SELECT CASE
WHEN 칼럼명 = 조건 THEN 'A'
WHEN 칼럼명 = 조건 THEN 'B'
WHEN 칼럼명 = 조건 THEN 'C'
ELSE 'D'
END
FROM 테이블명 ;
ROWNUM & ROWID
ROWNUM
오라클 DB는 SELECT 결과에 대해서 논리적인 일련번호 (=ROWNUM) 을 부여한다.
ROWNUM은 조회되는 행 수를 제한할 때 사용한다.
페이지 단위 출력을 위해서는 인라인 뷰 를 사용해야 한다.
SELECT * FROM 테이블명 WHERE ROWNUM BETWEEN 1 and 10 ;
-- ROWNUM이 1~10인 모든 행을 출력한다.
SELECT * FROM (SELECT ROWNUM 별칭 FROM 테이블명)WHERE 별칭 BETWEEN 5 and 10 ;
-- ROWNUM은 SELECT의 실행 결과에 대해서 순차적으로 부여되기 때문에 중간값부터 조회하기 위해선 추가적인 쿼리문이 필요하다.
ROWID
ROWID는 DB내에서 데이터를 구분할 수 있는 유일한 값이다.
ROWID를 통해 데이터가 어떤 데이터 파일, 어느 블록에 저장되어 있는지 알 수 있다.
ROWID의 구조는 다음과 같다.
구조 | 길이 | 설명 |
---|---|---|
오브젝트 번호 | 1~6 | 오브젝트 별로 유일한 값을 가지고 있으며, 해당 오브젝트가 속해 있는 값이다. |
상대파일 번호 | 7~9 | 테이블스페이스에 속해 있는 데이터 파일에 대한 상대 파일번호이다. |
블록번호 | 10~15 | 데이터 파일 내부에서 어느 블록에 데이터가 있는지 알려준다. |
데이터번호 | 16~18 | 데이터 블록에 데이터가 저장되어 있는 순서를 의미한다. |
WITH
WITH 구문은 서브쿼리를 사용해서 임시 테이블이나 뷰처럼 사용할 수 있게 기능한다.
WITH NEW테이블 AS (SELECT * FROM 테이블명) SELECT * FROM NEW테이블명;
댓글남기기