상세 컨텐츠

본문 제목

오라클 개인공부 필기 141220 기준

관리X 과거글

by 까먹기전에 2014. 12. 20. 12:40

본문

반응형

★★★★★★★★★

★##Oracle##★

★★★★★★★★★


데이터서버의 장점: 중앙집중관리 , 동시접근


sqlplus /nolog


SELECT (DISTAINCT) NAME (FROM TABLENAME) WHERE (조건식을 이용한TRUE값만리턴); 

                      (FROM)  ->산술 연산 불가능한 자리


DISTINCT 중복데이터의 리턴 방지


dual 1번 출력


SQL 비교 연산자

BETWEEN           AND

IN(list)

LIKE  -> where empno LIKE '%8'; -> 8로 끝나는 // 8% -> 8로 시작하는

IS NULL -> null 값이 포함된걸 찾을때는 null이 있으면 무조건 결과값이 null 이라서 제대로된 조건이 되지 않는다. 그래서 null이 들어간 데이터를 추출할때는 is null을 사용해야한다.

null이 아닌값을 추출할때는 is not null 을 사용

<>  은   !=


nvl(타이틀,0) -> 타이틀값이 null이면 0을 리턴-->null도 타입이 int 인지 string인지 보고 리턴값에 맞춰야함

안맞을때는 nvl(TO_CHAR(타이틀),'구민정바보') 처럼 맞춰야한다.

형변환 종류


to_char

to_number

to_date

1985년 -> '85/01/01'

|| 셀렉트 안에서 컬럼과 컬럼을 연결시켜줌

   IN (?,?,?) 은 프롬 이후 where 에서 = or 의 기능

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

create table 테이블명(컬럼명 타입(비트 길이);

insert into 테이블명 (컬럼명) values(데이터);

데이터형

number(숫자길이) , number(총 숫자길이,소수점 길이)

char(255까지)

varchar2(최대 4000바이트) - 한글 - 한글3바이트

desc 테이블명; ->> 컬럼 조회하기


save 파일명 - sql버퍼에 있는 현재의 내용을 파일로 저장

get 파일명 - 이전에 저장된 파일의 내용을 버퍼로 불러냄

@파일명 == start 파일명 - 명령파일을 실행

L -> 현재 버퍼에 있는걸 확인


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



alter table 테이블명 modify(컬럼명 타입(변경할속성값)); ㅡ 타입크기변경

alter table 테이블명 add(컬럼명 타입(타입 크기));         ㅡ  컬럼추가

alter table 테이블명 drop column 컬럼명; ㅡ 해당 컬럼만 삭제

alter table 테이블명 rename column 컬럼명 to 바꿀컬럼명 ㅡ 컬럼명 변경

update 테이블명 set 컬럼명 = '바꿀값' where 컬럼명=변경할 데이터의 위치; ㅡ 특정 데이터 변경

->where 안쓰면 전부다 바뀜 ㅡ,.ㅡ;;

delete from 테이블명 where 조건; ㅡ 데이터나 컬럼 삭제


drop table 테이블명; ㅡ 테이블 삭제

lower(컬럼명) -> 소문자

upper(컬럼명) -> 대문자

initcap(컬럼명) -> 첫글자만 대문자

substr(컬럼명, n,n) ->n에서 n까지 짜른문자열을 끝까지 리턴함

betwwen A and B -> A포함 ~ B포함 의 값에 해당하는것만

INSTR(컬럼명 or 스트링 , 문자) -> 문자값의 위치를 리턴한다.

order by 컬럼명 정렬기준;

concat (칼럼명,스트링 , 칼럼명,스트링) -> 칼럼명or스트링을 합쳐준다 2개까지 가능

substr(칼럼명 or 스트링 , m , n) -> m에서 n까지 문자를 리턴,

n을 비우면 0에서 m까지 짜르고 남은값을 출력


ROUND(컬럼명 or 숫자값 , n) -> 소수점n자리까지 반올림함 // day 넣으면 목요일이후만 반올림

trunc(컬럼명 or 숫자값 , n) -> 숫자값을 소수점 n의 위치아래 까지 짜름

floor(컬렴명 or 숫자값) -> 숫자값보다 같거나 작은 최대의 정수를 리턴

ceil(컬럼명 or 숫자값) -> 숫자값보다 같거나 큰 최소의 정수를 리턴

MOD(컬럼명 or 숫자값 , 컬럼명or숫자값) -> 첫번째인수를 두번째 인수로 나눈 나머지를 리턴함;

sysdate - 숫자 = 날짜

sysdate - 날짜 = 숫자

add_months(날짜값 , n) -> n개월 뒤의 날짜를 리턴함;

months_between(날짜값1,날짜값2) -> 두날짜사이의 개월수를 리턴

next_day(날짜값 , 요일) 

next_day(날짜값,금요일)

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


공통된 컬럼의 연관관계가 성립되는 데이터들을 SQL문장에서 연결하여 조회하는 것을 

★★JOIN★★ 이라고 한다


------------from에 써야함-----------------------------------------------------------


INNER JOIN 테이블명 on 조인조건 INNER JOIN 테이블명 on 조인조건


★★OUTER JOIN★★

A(+) = B

A테이블에 행이 부족해서 B의 데이터가 다 안나올때

NULL 값을 추가해서 B의 데이터가 다 나오게 해준다

(+) 붙는쪽에 NULL행을 추가해줌

그냥 행이 긴 테이블 위치에 맞춰서 left outer or rigth outer 선언하면 됨


ex)A가 15row , B가 14row 일때 A가 기준이 되어야하니깐

A a LEFT OUTER B b;

B b RIGHT OUTER A a;


집계함수 ---> max , min , sum , count , average ,표준편차 , 분산 

group by 컬럼명 --> 컬럼명값을 기준으로 집계함수를 적용해줌

having ---> (select절에 조건을 사용하여 결과를 제한할떄는 where절에 사용하지만) 

그룹의 결과를 제한 할때는 having 절을 사용해야한다.

order by 를 사용하려면 제일 뒤에 사용해야한다.

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


subquery 과 subquery 사이의 집합연산

UINION 행들의 합집합

UNION ALL         ``

INTERSECT 중복을 제거해준다. 교집합

MINUS 행들의 차집합


Outer query의 테이블과 Inner Subquery의 테이블이 조인

된 형태를 Co-related Subquery 라고 하며 다음의 순서로 실행된다.

1) Outer query의 테이블에서 행(또는 다음 행)을 하나 읽는다. 더 이상 읽을

행이 없으면 끝난다.

2) 1)에서 읽은 행의 데이터를 이용하여 Subquery를 수행한다.

3) 2)의 결과값으로 Outer query의 WHERE 절이 만족되는 지 확인하여 만족

되면 선택하고 아니면 버린다.

4) 1)번으로 돌아간다.



create table s_ord09

AS

select * from s_ORD

where date_ordered LIKE '92/09%'


s_ord 에서 나온 결과값을 table s_ord09 라는 이름의 테이블로 만든다.


START WITH : 첫 번째로 조회할 행의 조건을 명시하며, 첫 번째로 조회된

행들의 레벨은 1 이된다. manager_id IS NULL 이라는 조건은 회사의 사

장을 조회하는 것이다.

-. CONNECT BY : 다음 번에 조회할 행의 조건을 명시한다. PRIOR id 란 직

전 레벨에 찾아진 행들의 id 값을 의미한다. 즉, PRIOR id = manager_id

란 전 레벨의 id 가 다음 찾을 행의 manager_id 와 같은 행들을 찾는 것이

다.

-. 이와 같은 계층 구조 질의는 더 이상 CONNECT BY 절을 만족하는 다음 레

벨의 행들이 존재하지 않을 때까지 진행된다.

관련글 더보기