★★★★★★★★★
★##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 절을 만족하는 다음 레
벨의 행들이 존재하지 않을 때까지 진행된다.
오라클 추가 필기 JOIN , 제약조건 , 트랜잭션의 특징 2014년 12월29일 (0) | 2014.12.29 |
---|---|
이클립스 자바 파일 이름변경 하는 방법 (0) | 2014.12.23 |
SubQuery를 이용한 테이블 생성 (0) | 2014.12.20 |
자바 한글 , 문자열가 차지하는 바이트 수 필기 (0) | 2014.12.19 |
Oracle 공부 필기내용 (계속해서 추가) 141215 (0) | 2014.12.15 |