오라클 강의 정리(1강~7강)

Posted by HULIA(휴리아)
2018. 6. 3. 01:34 백엔드개발/데이터베이스

1강

데이터베이스 : 유용한 데이터의 집합(통합(똑같은 데이터가 중복되어있지 않음), 저장(컴퓨터가 접근할 수 있는 기억장


치에 저장된 데이터), 운영(조직의 존재 목적이나 기능을 수행하는데 없어서는 안되는 데이터), 공용(여러 사용자들이 서


로 다른 목적으로 사용하는 공유 가능한 데이터) 데이터의 집합)

검색에 용이하게 데이터를 저장하도록 한 것

검색, 수정, 삭제까지 용이

특징:수시적이고 비정형적인 질의 실시간 처리 -> 실시간 접근성

새로운 데이터 삽입, 삭제, 갱신으로 내용이 변하고 현재의 정확한 데이터를 유지->계속적인 변화

같은 내용의 데이터를 여러 사람이 서로 다른 방법으로 동시에 공유 ->동시공유

데이터 레코드들은 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터의 내용에 따라 참조해야 함-> 내용에 의한 


참조


파일시스템

중복성(한 시스템내의 데이터가 중복 저장, 관리되어 데이터 불일치->일관성, 보안성, 경제성, 무결성등의 문제 발생), 


종속성(응용프로그램과 데이터간의 상호의존 관계)


시퀀스 자동으로 증가되는 값을 만들 수 있는 기능 -> 보통 기본키로 사용함

start with

increment by

maxvalue or nomaxvalue

minvalue or nominvalue

cycle or nocycle

cache or nocache


select sequence_name, min_value, max_value, increment_by, cycle_flag from user_sequences;


시퀀스값을 알아보기 

nextval(시퀀스의 다음값을 알아내기 위해서 사용) -> currval(시퀀스의 현재 값을 알아내기 위해서 사용)


nextval, currval을 사용할 수 있는 경우

-서브쿼리가 아닌 select문

-insert문의 select절

-insert문의 value절

-update문의 set절


nextval, currval을 사용할수없는 경우

-view의 select절

-distinct 키워드가 있는 select문

-group by, having, order by 절이 있는 select문

-select, delete, update의 서브쿼리

-create table, alter table명령의 defalut 값


동의어(synonym) 테이블의 소유자와테이블을 줄여서 쓰는 있는 기능

->비공개 동의어(개별사용자대상), 공개동의어(dual같은경우)


create synonym

drop synonym



파일시스템의 문제점

1. 중복성(한 시스템내의 데이터가 중복 저장, 관리되어 데이터 불일치->일관성, 보안성, 경제성, 무결성등의 문제 


발생)

2. 종속성(응용프로그램과 데이터간의 상호의존 관계)

데이터 베이스의 특징

1. 수시적이고 비정형적인 질의 실시간 처리 -> 실시간 접근성

2. 새로운 데이터 삽입, 삭제, 갱신으로 내용이 변하고 현재의 정확한 데이터를 유지->계속적인 변화

3. 같은 내용의 데이터를 여러 사람이 서로 다른 방법으로 동시에 공유 ->동시공유

4. 데이터 레코드들은 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터의 내용에 따라 참조해야 함-> 내용


에 의한 참조





sql*plus 명령어 정리

-편집실행 : list(버퍼의 내용을 나타내기 위한 명령), run(버퍼내용보여주고 실행), @(파일의 쿼리실행), /(버퍼저장된 


쿼리 실행)

-파일:edit, save, get, spool 갈무리(내용 모두 저장)

-데이터베이스:connect. host(도스프롬프트로), exit

-시스템조작 : column format(컬럼에 저장된 데이터의 출력 형식을 변경을 위한 명령어)


데이터 딕셔너리 : 데이터베이스와 관련된 모든 정보 제공

ex) select * from TAB(table의 약자);


데이블구조 확인 명령어 : DESC


날짜형은 where HIREDATE >=1982/08/01을 쓴다


조건 논리 연산자

and,or, not(조건을 만족하지 못하는 것만 검색)

ex)where not deptno = 10 

where deptno != 10


between and 연산자

where sal >= 2000 and sal <= 3000;

where sal between 2000 and 3000

where sal not between 2000 and 3000;


in 연산자

where comm not in (300,500,600);


like 검색

%:문자가 없거나, 하나 이상의 문자에 어떤 값이 와도 상관없음

_:하나의 문자가 어떤 값이 와도 상관없음


not like도 가능하다


escape

like연산자에게 사용하는 와일드문자(%,_) 자체를 포함한 문자열을 검색할 때, 와일드 문자를 일반문자처럼 취급하기 위


한 옵션

ex)where ename like ‘%\%%’ ESCAPE ‘\’;


null값 체크

where comm IS NULL;

where comm IS NOT NULL;


order by(정렬)

order by comm ASC | DESC(생략시 ASC기본)


DISTINCT 중복값들이 출력되지 않도록 사용

ex) select distict comm ~~~


연결연산자

ex) select ename || ‘is a’ || job  

함수

-단일행함수(여러건의 데이터를 한번에 한번씩만 처리), 그룹함수(여러건의 데이터를 동시에 입력받아서 결과값 한건을 


만들어 주는 함수)


단일행함수

-숫자함수

-문자처리 함수

-날짜

-형변환

-일반


DUAL 테이블

-한행으로 결과를 출력하기 위한테이블

-산술 연산이나 가상 컬럼 등의 값을 한번만 출력하고 싶을때 많이 사용

ex)select 24*60 form dual;


숫자함수

-ABS(절대값), FLOOR(소수점아래를 버림), ROUND(반올림), TRUNC(특정 자리숫에 잘라내는 함수), MOD(나머지 숫 구하는 


함수)


문자처리함수

-UPPER(대문자로변환), LOWER(소문자로변환), INITCAP(이니셜만대문자로), LENGTH(문자길이), LENGTHB(BYTE의길이), 


INSTR(특정문자의 위치 구함), SUBSTR(일부 문자열을 추출), LPAD(특정기호로 채우는 함수), RPAD, LTRIM(공백문자 


삭제), RTRIM, TRI<(첫번째와 마지막의 문자열 잘라내기)


입사년도 출력할때

select ename, 19||substr(hiredate,1,2) 년도, substr(hiredate, 4, 2) 달 from emp;


날짜함수 

날짜 + 숫자 : 그 날짜로부터 기간만큼 지난 날짜를 계산

날짜 - 숫자 : 그 날짜로부터 기간만큼 이전 날짜를 계산

날짜 - 날짜 : 두 날짜 사이의 기간을 계산

ex) sysdate-1, sysdate+1


-Date형에 사용되는 함수

111111sysdate : 시스템의 날짜를 반환하는 함수

ex)select system from dual;


22222months_between

두 날짜사이의 개월수를 구하는 함수

ex)months_between(sysdate, hiredate)

소수점이하 자리 나올때 round함수와 trunc함수 이용


333333add_months

개월수를 더하는 함수

ex)add_months(hiredate,4) : 4개월 추가


next_day

해당날짜부터 시작하여 명시된 요일을 만나면, 해당하는 날짜를 반환하는 함수

ex) next_day(Date, 요일) 

-한글요일 : 일, 월, 화,

-영문요일 : SUN, MON, TUE 

-문자대신 숫자로 요일을 표현가능 7=일요일, 1=월요일, 2=화요일 등등


‘금’이라고 요일 입력시 오류사항 발생시

alter session set nls_language=korean; 



last_day

해당 달의 마지막 날짜를 반환하는 함수



-형변환 함수

숫자, 문자, 날짜 데이터형을 다른 데이터형으로 변환하는 함수


number-> to_char() -> character -> to_date() -> date

date -> to_char() -> character -> to_number() -> number


ex) 입사일과 요일까지 함께 출력하는 경우

to_char(hiredate, ‘YYYY/MM/DD DAY’) -> 1980/12/12 수요일

to_char(hiredate, ‘YY/MON/DD DY’) -> 80/12월/12 수

to_char(hiredate, ‘YYYY/MM/DD, HH24:MI:SS’) -> 2013/12/12, 23:24:55



ex) 지역별 통화 기호를 붙이고, 천단위마다 콤마 붙여서 출력

to_char(sal, ‘L999,999’) -> 자릿수 채우지 않음

to_char(sal, ‘L000,000;) -> 자릿수 채움(0으로)



날짜 기본 형식-> YY/MM/DD 형식

ex) 올해 몇일이 지났나 계산

trunc(sysdate-to_date(‘2016/01/01’, ‘YYYY/MM/DD’))


to_number(‘20,000’,’99,999’) - to_number(‘10,000’,’99,999’) 



nvl 함수 :null을 0또는 다른 값으로 변환함수 

select sal*12+comm nvl(comm, 0), sal*12+nvl(comm,  0) from emp


decode함수 : 여러가지 경우에 대해서 선택할 수 있도록 하는 기능을 제공

형식 decode(표현식, 조건1, 결과1, 조건2, 결과2, 조건3, 결과3 ….)

특징:조건이 일치하는 경우에만 적용


select ename, deptno, decode(deptno, 10, ‘accounting’, 20, ‘research’, 30, ‘sales’) AS DNAME from emp;


case함수 : 여러가지 경우에 하나를 선택하는 함수

case 표현식 when 조건1 then 결과1

when 조건2 then 결과2

….

else 결과 

end

특징 :다양한 비교연산자를 이용하여 조건 제시, 범위 지정