Infrastructure/Database

    MySql Database 생성, 유저 생성

    MySql을 설치하고 Database 생성하는법과 유저 생성하는 법을 기록한다 해당 명령어를 통해 데이터베이스 생성 유저 생성 { } 중괄호 부분은 본인에게 맞게 입력 Database 생성 -- 데이터 베이스 생성, 문자는 UTF8 형태를 기본으로 create database {database명} default character set UTF8; User 생성 -- database에 사용할 유저 아이디, 비밀번호 생성 -- '%'는 외부에서 접속이 가능하도록 한다는 표식, '%' 대신 Localhost 사용시 해당 컴퓨터만 사용 가능 create user {userid}@'%' identified by '{password}'; create user {userid}@localhost identified b..

    oracle 스케쥴러 작성하여, 자동으로 반복 일정(지정한 쿼리 or 프로시저)을 실행하기

    oracle 스케쥴러 작성하여, 자동으로 반복 일정(지정한 쿼리 or 프로시저)을 실행하기

    우선, 스케쥴러란? 간단하게 표현하자면 날짜 또는 시간에 맞춰 어떤 일을 수행할지 설정 할 수 있는 기능이라고 할 수 있다. 구글에 검색해보면 스케쥴러 작성하는 방법에 대해 여러 글이 있다. 하지만 내 기준에서는 코드만 적혀있기 때문에 이해가 되지 않아서 참고는 하되 오라클 sql developer 자체의 기능으로 만들어봤다. 순서는 아래와 같다. 스케쥴러를 작성하기 위해서는 첫번째, 해당 명령문을 실행해서 job(스케쥴러)를 사용 할수 있는 권한을 부여한다 grant create any job to 사용자명; ex) grant create any job to c##scott; 첫번째, 스케쥴러에서 사용할 프로시저를 생성한다 아래의 프로시저의 작성내용은 이러하다 -> orderdetail 테이블의 ord..

    oracle 게시판 Rownum 사용

    oracle 게시판 Rownum 사용

    oracle에서 rownum은 셀렉트된 데이터들에 번호를 매겨 그 데이터만을 가져오는것으로 알고 있다. 그래서 순서대로 데이터를 가져오기 위해서 사용하고 있었다.그런데!! 어느순간 아무리 해도 절대 이해 할 수 없는 순서로 데이터를 가져오기 시작했다. 아래의 쿼리문 조건을 보자1. rownum 이 10보다 이하인 데이터2. orderdate가 2021-01-01 ~ 2021-05-06 일까지인 데이터3. orderstatus가 구매확정인 데이터를 조건으로 검색하고 orderdate를 기준으로 정렬한다 고 적어놓았다.원래의 데이터 순서는 이렇다. 헌데, 아래의 조건으로 검색시 이렇게 나온다.3월달부터 5월달 사이의 값이 없다!!! 5월달이 아니라 3월 ~ 4월달 데이터가 나와야 하는 것이다.select d..

    oracle 이전글, 다음글 구하기

    oracle 이전글, 다음글 구하기

    lag('기준','몇번째','기본값') : 이전값 lead('기준','몇번째','기본값') : 다음값 over(order by no desc) : 정렬 방법 prevSubject : 별칭 정해주어야 한다. select * from( select no, lag(no, 1, 0) over(order by no desc) prevNo,--이전글 글번호 lag(subject, 1, '이전글이 없습니다.') over (order by no desc) prevSubject, --이전글 제목 lead(no,1,0) over (order by no desc) nextNo,--다음글 글번호 lead(subject,1,'다음글이 없습니다.') over (order by no desc) nextsubject from cla..

    oracle 커서

    -- 여러행의 레코드 선택을 처리할수 있다. -- 부서코드를 입력받아 사원번호, 사원명, 입사일, 급여, 부서코드를 선택하는 프로시져 create or replace procedure emp_cursor(p_deptno in emp.deptno%type) is --커서정의 cursor deptno_select is select empno, ename, hiredate, sal, deptno from emp where deptno=p_deptno; r_emp emp%rowtype; begin --커서 open open deptno_select; --커서 fetch LOOP fetch deptno_select into r_emp.empno, r_emp.ename, r_emp.hiredate, r_emp.sa..

    oracle 트리거

    -- trigger: update, insert, delete문이 실행되기 전후에 처리할 실행문 select * from all_triggers; -- 트리거 생성 create or replace trigger dept_trigger before update on dept for each row begin dbms_output.put_line('update전 ->'|| :old.dname); dbms_output.put_line('update후 ->'|| :new.dname); end; set serveroutput on; select * from dept; update dept set dname='세일즈맨' where deptno=30; -- 사원등록insert하거나 사원을 수정update, 사원삭제d..

    oracle 프로시저 (pl/sql)

    sql의 장점과 단점 장점 1) 사용자가 이해하기 쉬운 단어로 구성 2) 쉽게 배울 수 있다 3) 복잡한 로직을 간단하게 작성할 수 있다. 4) ansi에 의해 문법이 표준화되어 있다. 단점 1) 반복처리를 할 수 없다 2) 비교처리를 할 수 없다 3) error 처리를 할 수 없다. 4) sql문을 캡슐화 할 수 없다. 5) 변수선언을 할 수 없다. 6) 실행할 때 마다 분석작업 후 실행 7) Network Traffic을 유발한다 이러한 단점을 극복하기 위해 pl/sql을 사용한다 pl/sql의 사용 이유 1) 반복 처리를 할 수 있다 2) 비교 처리를 할 수 있다 3) error 처리를 할 수 있다. 4) sql 문을 캡슐화 할 수 있다. 5) 변수 선언을 할 수 있다 6) 실행할 때 마다 분석된 ..

    oracle 시퀀스

    oracle 시퀀스

    -- sequence 생성 예제 create sequence emp_seq start with 1 increment by 1 maxvalue 100000; -- insert into emp(empno, ename, hiredate) values(emp_seq.nextval, 'honggildong'. sysdate); -- select emp_seq.currval from dual; -- select emp_seq.nextval from dual; -- 시퀀스 수정: 2씩 증가하고, maxvalue에 도달시 cycle 처음부터 순환하도록 수정 alter sequence emp_seq increment by 2 cycle; -- 시퀀스 삭제 drop sequence emp_seq;