SQLD, ECLIPS, JAVA,PYTHON, NODE....

[Oracle] SQL Class 2 - 데이터의 종류(유형), 예제 본문

SQL

[Oracle] SQL Class 2 - 데이터의 종류(유형), 예제

D_Aiden 2023. 10. 26. 10:07
728x90
반응형
SMALL

2023.10.26.

## 데이터 타입(DB): 데이터 종류

1) 숫자

- 정수: number(3) -->3자리 정수공간, number(7) --> 7자리 정수공간

- 실수: number(5 , 3) --> 5자리 정수+ 3자리 소수점 이하로 구성된 실수                   ex 12345.678 이란 의미  

 (참고) number만 선언하면, 총 28공간 확보 의미 --> 현업에선 데이터 없이 공간만 차지하므로 미사용(비추천)

number의 유형

2) 문자 

- 고정형: 'CHAR(X)' --> 고정된 DB이므로 chain화 불필요.

 

- 가변형: 'VARCHAR2(X)' --> var+char+숫자(X)로 구성됨을 의미. 데이터가 입력된 후, 미입력된 공간은 반환하는 형태로 구성.

               (장점) 변경된 데이터 히스토리 추척가능.(chain화 라고 함)

               (단점) 동적데이터인 업데이트발생할때마다 chian화가 발생되므로 유지관리가 번거로움.

                          마이그레이션으로 해결됨.

 

3) 날짜

: DB에만 있는 데이터 타입, 사용하는 함수가 정해져 있음.

 

- date: 8byte(연/월/일)로 구성됨.                                           ex'23/10/26' Oracle에선 23년 10월 26일 로 인식함. 

 

4) 기타

- 대용량문자열:  CLOB(RAW) --> 자기소개서에 들어가는 문자열은 대용량으로 구성:

 

- 멀티미디어(사진, 음향):  BLOB 멀티미디어 자료는 문자열로 별도 저장.

 

## 데이터 추출

1) select 

 select 컬럼명 (as) "별칭", ... from 테이블명 (as), ...                                 // 제한된 컬럼 추출 명령어 select 임.

 select로는 컬럼 변경은 가능하나, 행 변경은 안됨.  행은 데이터란의미. 데이터가 DB라고 표현하는 의미

 

 컬럼 별칭변경 가능함.

mgr은 나의 직송상관 사원번호

테이블 확인 명령어

select * from emp;

## 연산자(명령어)

1. where절

: 출력될 데이터(DB,행)의 추출 명령어                       //where 절에 참(true)인 행만 출력대상임.

 

1) 산술 연산자: +, -, *, /, mod(10,3)=1

2) 관계 연산자: =, !=(<>), >, <, >=, <=

3) 문자열 연산자: like + ( %는 모든문자, _(언더바)는 한자리를 차지한다는 의미  ) 

------------------------------------

4) 논리 연산자: not > and > or

 

예제1) 부서번호가 20번인 부서의 사원들을 추출

예제2) 급여가 1000~2000인 사람을 추출

1000~2000 사이
between 사용도 가능

예제3) 급여가 1000~2000가 아닌 사람을 추출

            (주의) 부정연산자(not)를 사용하는건 좋지 않음

예제4) 커미션이 null인 사람을 추출 

## 주의사항 ##

null 경우, 데이터 연산에 결과값 추출이 제외되서 나오므로 주의필요.

결과가 null인 경우는 없다.

-- null 대체함수 : nvl(컬럼, 대체값)

null은 문자화로 변경 후, 입력문자 넣는 로직임.

 

(예제4) 업무(job)가 salesman, clerk인 사람을 추출하시오.

- tip: 오라클은 문자열에 영어는 대문자/소문자 구별됨.

소문자 를 대문자로 변경조회 할 수 있는 연산자는 lower를 사용험

정확한 값을 저장할때만 사용.upper는 대문자를 소문자로..

테이블에 행데이터 추가입력

insert into emp(컬럼, 컬럼, 컬럼) values(값, 값, 값)

예제5) 입사일이 '87/01/01'~'23/10.26'인 사람추출(날짜 제한)

예제6) 입사일이 '23/10.26'자정 ~오후6시까지인 사람 추출(시간 제한)

 

연결연산자:  ||

예제7) [XXX의 급여는 XXX이다] 형태로 추출(||는 연결연산자)

예제8) 이름이 A로 시작하는 사람을 추출

예제9) 이름의 L을 포함하는 사람을 추출

예제9) 이름의 두번째 문자가 L인 사람을 추출

예제10) 이름에 L을 두번 이상 포함하는 사람을 추출

 

## 정렬작업

1) 가급적 정렬작업 회피 --> 정렬할때 메모리를 사용하기 때문에 회피임

2) select 명령에서 가장 마지막에 위치하며, 연산작업은 없다.

3) 영문보다 한글이 큰 값이며, null은 큰 값으로 처리 됨 (내림차순)

 

4) 형식

 order by 컬럼명(별칭 | 순서번호)  asc(오름차순 함수) | desc(내림차순 함수) ,...

오름차순: 숫자가 내려갈 수록 커짐  /  내림차순: 숫자가 내려갈 수록 커짐

 

 

예제11) 부서별로 정렬하되, (같은 부서 사람들은) 급여가 높은 순서대로 정렬하여 추출

desc 내림차순임.

예제 12) 단, 홍동우(101) 사원은 제외하고 추출하라.

 

728x90
반응형
LIST