본문 바로가기

wif LiNoUz/Oracle,Sql

Oracle SQL문

set linesize 100

한라인에 출력할수있는 기본 문자수는 80인데 조로케 하거니꼬롬 100으로 变换了呀!





11g scott/tiger


select ename, 'is a ', job from emp; // 이건 안이뻐 탭으로 나뉘어

select ename || ' is a ' || job from emp; // 요게 이어지는 맛이 이찌잉 







부서 번호 출력

select deptno from emp;


DISTINCT - 중복값 제거  // distinct는 '여러 개 섞여 있는 중에서 손을 찔러(stinct) 넣어 필요한 것만 따로(dis) 두다'

select deptno from emp; -->> select distinct deptno from emp;



 















SQL* PLUS 문

list 축약 L ... 뭥미?


/ 과 R 의 차이는... R누르면 버퍼에썼던 명령어까지 보여줌 明白吗?

EDIT ->  ED

ED 우분투에서 vi로 돌리는것 잘不知到呀 , 有问题(wenti , ASK)






컬럼 제목 출력

set heading on(off) 니꼴뤼


라인사이즈

set linesize 80(기본) 100주면 좋고


페에지 출력라인수

set pagesize 10 



컬럼에 저장된 데이터 출력형식 변경위한 column format

desc emp  // 뭐 컬럼 길이변경으로 알자


column ename format a25  

문자 형식의 컬림 출력길이 조정 

























숫자형은 원래 길이에맞게 컬럼길이가 조정된다 굳이 할라믄

a다음에 원하는 길이입력대신 999999 나 000000으로 느믄 댄다잉


column sal format 9,999,999

column comm format 0,000,000




where 문

=,>=, <=, // 이건 알잖어

<>, !=, ^=  다르다


select * from emp where sal >=3000;




부서 번호가 10인놈 출력

select * from emp where deptno=10;



급여가 1500이하 사원의 사원번호, 사원명, 급여를 출력하라

select empno, ename, sal from emp where sal>=1500;





문자 데이터 출력

select empno, ename, sal from emp where ename=FORD;

FORD사원 위처럼 찾으면 에러 난다

select empno, ename, sal from emp where ename='FORD'; // 반드시 작은따옴표 출력





select * from emp where sal>=2000 and sal<=3000;



아직까지는 엑셀보다 훨씬 쉽다 닝기리



select * from emp where sal between 2000 and 3000; 


select * from emp where sal not between 2000 and 3000;  // not 도 있네 희안 




select * from emp where comm=300 or comm=500 or comm=1400;

커미션이 300,500,1400 인 녀석들 뽑아내는건디 더 쉽게 하는 방봅 in 연산자 함수 사용 밑에

select * from emp where comm in(300, 500, 1400);


select * from emp where comm<>300 or comm<>500 or comm<>1400;

커미션  숫자들이 아닌 연산자 뽑아내기

select * from emp where comm not in(300, 500, 1400);



like 연산좌와 와일드카드

FORD라는 이름 찾을때 f로 시작하는건 알지만 딴건 모를떄 워쩔까?

select * from emp where enam='F'; // 요로커럼 하믄 안된당께

select * from emp where ename LIKE 'F%' ;


와일드카드 -> %는 문자없거나, 하나이상의 문자+가 되어도 没关系

                         _하나의 문자에 어떤 값이 와도 상관읍다


select * from emp where ename like '%A%' // ename 중간에 A포함된거 어떤것이든 찾아내


select * from emp where ename like '_A%'// ename 두번째 글자가 A이고 그뒤는 무엇이든 찾아내 

select * from emp where ename like '__A%' // ename 세번째 글자가 A인고 


ESCAPE 연산자 옵션 - 못쓰는 문자열 검색해주게 하귀

select empno, ename from emp where ename like '%\%%' escape'\';

위에서 \%구문은 %를 검색하게 한다 암턴 알잖어.......




커미션이 0인 사람 검색할때 과욘

select * from emp where comm=null; //으로 검색하면될까? 안된다

select * from emp where comm is null;





드디어 order by!


select * from emp order by sal asc; // asc 오름차순 암턴 asc안써도 디폴트값이다

select * from emp order by sal desc; // desc 내림차순


급여 많이 받는 순서중 겹치는 사람분명 있다. 이때 이름순으로 하기

select * from emp order by sal desc, ename asc;



select empno, ename, job, hiredate from emp order by hiredate asc;// 

select empno, ename, from emp order by empno dsc;

select * from emp order by  empno asc, hiredate asc;



dual 테이블 // 뭐 dummy같은 가상공간 정도.... 한번 뿌리기

select sysdate from daul; // 현재날짜 얻어내기 




숫자함수

 ABS

 절대값

 COS  COSIEN값 반환
 EXPT

 e(2.7xxxxx)의 n승 반환

 FLOOR

 소수점 아래 버려 

 LOG  log값 반환
 POWER

 power(m,n)m의 n승 반환

 SIGN

 sign(n) n<0이면 -1,n=0이면 0, n>0이면 1 반환

 SIN

 sine값을 반환

 TAN

tagnet값 반환

 ROUND

 특정 자릿수 반올림
 TRUNC 특정자릿수에서 버림
 MOD 나머지 값 반환 



select 34.567,round (34.5678), round (34.5678, 2) from dual; 


select trunc(34.5678, 2), trunc(34.5678, -1), trunc(34.5678) from dual;


select mod(27,2 --------------귀찮어 나머지 구하기 




문자 처리 함수

lower, upper, initcap 


   
   
   
   
   
   
   
   
   
   


귀찮어 시간남을때 정리

substr, substrb 함수 아주 유용 






문자옆의 맨앞자를 대문자로 변환하는 inicap 함수

select '



이거 좀 중요 

직급이 manager인 사원을 검색할때

select empno, ename, job, from emp where job='manager'; // 라고 치게되면 검색안된다.

컬럼에 저장된 데이터는 도무 대문자 형태이기 때문에 소문자 형태로 검색할라믄 LOWER써주자

select empno, ename, job, from emp where lower(job)='manager'; // 好好!



select length('Oracle'), length('오라클') from dual; // 글자 갯수 구하기 

select lengthb('Oracle'), lengthb('오라클') from dual; // 바이트수 구하기

//한글은 2바이트알잖어.. 

select substr('Welcome to Oracle', 4, 3) from dual; // 아 이거 조아, 앞 4번째부터 뒤3칸까지

select substr('Welcome to Oracle', -4, 3) from dual; //쪽에서 4번째부터, 뒤 3칸


사원들 입사년도 추출해보자

 select substr(hiredate, -2, 2), substr(hiredate, 4,3) from emp;

9월에 입사한 사원 추출

select substr(hiredate,4,3) from emp where substr(hiredate,4,3)='SEP';

select ename, hiredate from emp where substr(hiredate,4,3)='sep';

 위처럼 치면 안나온다

select ename, hiredate from emp where substr(hiredate,4,3)='SEP';

select ename, hiredate from emp where lower(substr(hiredate,4,3))='sep';

위에 두개처럼 하면 된다 위에껀 SEP지정해준거고 밑엔 Lower로 변환요구

substr, substrb로 글자수 환원할때 한글은 2바이트로 계산훼라


select instr('welcome to oracle', 'o') from dual; // 결과값 5
o가 저장된 위치값 출력, 가장 첫번째걸로하며, '시작위치' '몇번째 발견' 조절가능
select instr('welcome to orcle', 'o',5,2) from dual; // 시작위치m부터2번째o인 결과값 10

lpad 왼쪽부터 채우기, rpad 오른쪽 채우기 


ltrim 왼쪽공백문자 읍애기 rtrim은 뭐 오른쪽이지


TRIM 함수 -대상 문자열 첫or마지막글자열에서 잘라내기



날쫘 구하귀 



연봉계솬



DECODE 함수

부서번호 10대신 'A', 20대신'B', 그외번호 'DEFAULT' 출력


딴것도 해보지 뭐 

10~40까지 주었고 DNAME 이라는 이름 줌


























'wif LiNoUz > Oracle,Sql' 카테고리의 다른 글

DW ERD  (0) 2012.10.16
이게 2번인듯  (0) 2012.08.15
2  (0) 2012.08.15
Oracle 설치  (0) 2012.08.09
Oacle 10g for Linux 다운로드 링크  (0) 2012.08.09