일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- java 상속
- sqld grant
- java string
- JAVA 제어문
- java 로또
- java 구구단
- java 성별
- java 논리연산자
- SQLD 핵심포인트
- Java Cat
- SQLD 옵티마이저
- sqld trigger
- sqld deny
- PLSQL
- java
- java 단축키
- Java 메소드
- sqld revoke
- SQLD 특강
- java Fish
- java spider
- SQL
- sqld 자격증
- sqld remame
- java Animal
- SQLD 자격시험 개념정리
- java 함수
- JAVA 연산자
- sqld 옵티마이져
- JAVA for문
- Today
- Total
SQLD, ECLIPS, JAVA,PYTHON, NODE....
[Oracle] SQL Class 2 - 데이터의 종류(유형), 예제 본문
2023.10.26.
## 데이터 타입(DB): 데이터 종류
1) 숫자
- 정수: number(3) -->3자리 정수공간, number(7) --> 7자리 정수공간
- 실수: number(5 , 3) --> 5자리 정수+ 3자리 소수점 이하로 구성된 실수 ex 12345.678 이란 의미
(참고) number만 선언하면, 총 28공간 확보 의미 --> 현업에선 데이터 없이 공간만 차지하므로 미사용(비추천)
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인 사람을 추출
예제3) 급여가 1000~2000가 아닌 사람을 추출
(주의) 부정연산자(not)를 사용하는건 좋지 않음
예제4) 커미션이 null인 사람을 추출
## 주의사항 ##
null인 경우, 데이터 연산에 결과값 추출이 제외되서 나오므로 주의필요.
결과가 null인 경우는 없다.
-- null 대체함수 : nvl(컬럼, 대체값)
null은 문자화로 변경 후, 입력문자 넣는 로직임.
(예제4) 업무(job)가 salesman, clerk인 사람을 추출하시오.
- tip: 오라클은 문자열에 영어는 대문자/소문자 구별됨.
소문자 를 대문자로 변경조회 할 수 있는 연산자는 lower를 사용험
테이블에 행데이터 추가입력
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) 부서별로 정렬하되, (같은 부서 사람들은) 급여가 높은 순서대로 정렬하여 추출
예제 12) 단, 홍동우(101) 사원은 제외하고 추출하라.