* 질의 절차
SELECT player_name, e_player_name, height
FROM PLAYER_T
WHERE e_player_name LIKE '%!%%' ESCAPE '!'; -> escape로 구분자를 지정해주어서 문자에 %가 있는걸 찾음..
1. 접속 : sqlplus scott/tiger
sqlplus hr/hr : 여기까지 일반 권한
sqlplus / as sysdba : 최고권한 접속
등등..
2. 테이블 리스트 확인
select * from tab;
3. 컬럼 리스트 확인
desc EMP
4. 질의
* SELECT Statement
SELECT * | {[DISTINCT] column | expression [alias], ...}
FROM table;
DISTINCT : 중복제거
alias : heading 표시
heading을 표현시 kjin's 처럼 외따를 쓸려면 앞에 한번더 '를 써주던지 q() 문을 써준다.
ex) select ename || '''salary is ' || sal from emp;
select ename || q'('salary is )' || sal from emp; -> 10g 방식 괄호말고 다른 특수문자로 써도 가능
이렇게 두가지 방식으로 가능
SELECT player_name, e_player_name, height
FROM PLAYER_T
WHERE e_player_name LIKE '%!%%' ESCAPE '!'; -> escape로 구분자를 지정해주어서 문자에 %가 있는걸 찾음..
*스크립트 저장
select * from tab; - 1
sav t - 2
@t - 3
하나의 예로써 매번 명령어를 치는 것보다 자주쓰는 명령어를 스크립트로 저장시켜서 사용하기 쉽게 함.
* sqlplus 명령정리
- l : 버퍼보기
- r : 버퍼실행
- ed : 버퍼수정
- ed 파일명 : 해당 파일을 수정
- show user : 유저명
- conn id/pw : 접속
- sav 파일명 : 저장
- get 파일명 : 저장된 파일 버퍼로
- @파일명 : 파일 실행. - 여러개 가능
- host o/s 명령 : os 명령 실행
- host : command창으로 나감. 리눅스에서는 !가능
- exit : 나가기
- a : 버퍼 끝에 내용 붙이기
- show all : sqlplus의 모든 셋팅 보기
* where 문 : select 문에서 필요한 정보를 추출
- and
or
not
between A and B
in(A,B,C,D,E) , = some(A,B,C,D,E) , = any(A,B,C,D,E)
like ( %, _ )
ex) select ename from emp
where regexp_like(ename,'^.O.*$')
* order by 문 : 검색결과를 정렬해서 보기
ASC : default
DESC
ex> order by deptno, sal desc;
* 변수
& 변수명 : 저장해 두고 쓰면 여러값에 대한 처리를 할때 좋음, 실행할때 마다 물어봄
&& 변수명 : 처음만 물어보고 그 다음부터 안물어봄 설정된것을 해지 할때는 undefine 변수명
* 출력설정
set pagesize 50
set line 111
col 컬럼이름 for 표현방식 : 문자일경우 a숫자
숫자일경우 자리수만큼의 숫자나 표현방식 -> 5자리일때 99999
천자리 표시 99,999
* 함수
upper('내용') : 대문자로 바꾸기
nvl(내용,0) : 내용이 null 이면 0으로
nvl2(expr1,expr2,expr3) : expr1이 널이 아니면 expr2 널이면 expr3을 리턴
nullif(expr1,expr2) : 같으면 널, 다르면 첫번째 값 리턴
coalesce(expr1,expr2,expr3, ... ,expr n) : 널이 아닌 첫번째 값을 리턴
todate('1999-12-31','yyyy-mm-dd') : 명시적 날짜 입력
to_char(sal*12,'9,999,999$') : 숫자를 문자열로
to_char(hiredate,'yyyy') : 날짜를 문자로
power(2,3) : 2의 3승
함수는 중첩이 가능하다 power(2,power(2,power(2,2)))
concat('aaa','bbb') : aaabbb 문자를 합치기
substr('abcdef',2,3) : 2번째 문자부터 3개 잘라내기 결과 bcd
instr('abcdef','bc') : bc가 시작되는 캐릭터 위치 결과 2
lpad(sal,10,'##') : sal을 10자리로 표현하고 왼쪽 빈칸은 ##로 채움
trim('&T') : 입력값에서 공백(빈칸)잘라내기
replace('In the fucking world..','fuck','####') : 글자치환, fuck이라는 글자를 ####로 치환한다.
translate(ename,'1234567890','일이삼사오육칠팔구영') : 내용에서 하나라도 일치하는 부분이 있으면 교체
translate(ename,'1234567890','일이삼사오육칠팔구영') : 내용에서 하나라도 일치하는 부분이 있으면 교체
round(45.926 , 2) : 소수점 둘째 자리까지 남기고 반올림 -> 45.93
trunc(45.926 , 2) : 소수점 둘째 자리까지 남기고 내림 -> 45.92
avg() : 평균
sum() : 총합
count() : 라인수 null은 집계에서 제외됨
group by : 컬럼에 대해서 그룹지어주기
having : group by 에 대해서 조건 걸어주기
min()
max()
round(수,자리) : 반올림
trunc(수,자리) : 내림 자리가 -3이라고 하면 10의 3승으로 기억하면 계산하기 쉽다.
mod(수,수) : 나머지
ceil(3.3) , ceil(-2.4) : 소수점 이하 자리를 올림함 결과값 : 4 , -2
floor(3.3), floor(-2.4) : 소수점 이하 자리를 내림함 결과값 : 3, -3
trunc(수,자리) : 내림 자리가 -3이라고 하면 10의 3승으로 기억하면 계산하기 쉽다.
mod(수,수) : 나머지
ceil(3.3) , ceil(-2.4) : 소수점 이하 자리를 올림함 결과값 : 4 , -2
floor(3.3), floor(-2.4) : 소수점 이하 자리를 내림함 결과값 : 3, -3
length() : 글자길이 계산
* 시간설정
select sysdate from dual;
alter session set nls_date_format='yy-mm-dd dy hh24:mi:ss';
sysdate : 현재시간
set nls_date_format : 시간출력방식 설정
months_between(날짜1,날짜2) : 월차이(날짜1-날짜2)
add_months(날짜,개월수) : 월 더하기
next_day : 돌아오는 해당요일
last_day : 월의 마지막 날
round : 반올림
trunc : 내림
* 데이터 타입 변경
to_char to_date
------------------> ------------------->
NUMBER CHARACTER DATE
<---------------- <-------------------
to_number to_char
날짜 -> 문자 to_char 사용이유 : 날짜 정보중 특정 정보(년도, 월, 일자, 요일, 분기, 주..)만 이용.
사용방법 : 1. to_char(날짜,'보고싶은정보')
ex) select to_char(sysdate,'mm') from dual;
select to_char(sysdate,'day') from dual;
숫자 -> 문자 to_char 사용이유 : 숫자값에 천단위 문자를 붙여서 좀더 빨리 숫자값을 읽도록 도와줌.
사용방법 : ex) select 12345, to_char(12345,'999,999') from dual;
select 12345, to_char(12345,'000,000') from dual; 빈자리는 0으로 채움
2070년 12월 25일은 무슨요일??
SQL> SELECT TO_CHAR(TO_DATE('2070-12-25','yyyy-mm-dd'),'day') FROM dual;
1998년 12월 23일기준 15년뒤는??
사용방법 : 1. to_char(날짜,'보고싶은정보')
ex) select to_char(sysdate,'mm') from dual;
select to_char(sysdate,'day') from dual;
숫자 -> 문자 to_char 사용이유 : 숫자값에 천단위 문자를 붙여서 좀더 빨리 숫자값을 읽도록 도와줌.
사용방법 : ex) select 12345, to_char(12345,'999,999') from dual;
select 12345, to_char(12345,'000,000') from dual; 빈자리는 0으로 채움
2070년 12월 25일은 무슨요일??
SQL> SELECT TO_CHAR(TO_DATE('2070-12-25','yyyy-mm-dd'),'day') FROM dual;
1998년 12월 23일기준 15년뒤는??
SQL> SELECT ADD_MONTHS(TO_DATE('19981223','yyyymmdd'),15*12) FROM dual;
* case 문
select ename,
case deptno
when 10 then 'ACCOUNTING'
when 20 then 'RESEARCH'
when 30 then 'SALES'
else 'OPERATIONS'
end dname
from emp;
select ename,
decode( deptno
, 10 , 'ACCOUNTING'
, 20 , 'RESEARCH'
, 30 , 'SALES'
, 'OPERATIONS'
) dname
from emp;
* 질의 순서
select : 6
from : 1
[ where ] : 2
[ group by ] : 3
[ having ] : 4
[ order by ] : 5
'Oracle' 카테고리의 다른 글
Dictionary View 보는 방법 (0) | 2011.02.13 |
---|---|
oracle 권한보기, 테이블 정리, 시간측정 (0) | 2011.02.07 |
view, index, sequence, synonym (0) | 2011.02.07 |
DDL (0) | 2011.02.06 |
join문 (0) | 2011.02.03 |