부트캠프(END)/Oracle에 해당하는 글 19

  1. 프로시저를 이용한 댓글 구현(코드만 정리) 2022.09.14

    --댓글 추가 CREATE OR REPLACE PROCEDURE replyInsert ( pCno spring_reply2.cno%TYPE, pType spring_reply2.type%TYPE, pId spring_reply2.id%TYPE, pName spring_reply2.name%TYPE, pMsg spring_reply2.msg%TYPE ) IS BEGIN INSERT INTO spring_reply2 VALUES( (SELECT NVL(MAX(no)+1,1) FROM spring_reply2), pCno, pType, pId, pName, pMsg, SYSDATE ); COMMIT; END; / --댓글 읽기 CREATE OR REPLACE PROCEDURE replyListData( pCn..


  2. regexp - 수정중 2022.08.18

    보호되어 있는 글입니다.


  3. MyBatis : JOIN, IN 2022.08.09

    MyBatis에서 JOIN과 IN을 어떻게 사용하는지 간단한 예제로 한 번 구현해 보자. 아래처럼 직원들의 이름과 체크박스가 나오고, 원하는 직원을 선택하여 전송버튼을 누르면 선택한 직원의 정보를 출력하는 애플리케이션이다. 1. EmpVO와 DeptVO와 같은 데이터형을 세팅한다. EmpVO.java (Class) 부서 정보를 JOIN하여 함께 가져올 것이므로! EmpVO 내에 DeptVO의 객체를 매개변수(포함 클래스)로 선언한다. package doodoo.dao; import java.util.*; import lombok.Getter; import lombok.Setter; @Getter @Setter public class EmpVO { private int empno, mgr, comm, sa..


  4. PL/SQL : TRIGGER 2022.07.07

    TRIGGER : 데이터의 변경이 일어날 때 자동으로 같이 실행되는 프로시저 프로시저/수동 처리 ↔ 트리거/자동처리 데이터베이스에 이벤트 발생 이벤트 : 어떤 액션을 했을 때 내용이 바뀌는 것=INSERT, UPDATE, DELETE → 트리거 작동 〓 데이터베이스 관리의 자동화 잘 활용하면 서로 관계가 있는 여러 테이블끼리의 데이터 관리를 자동화할 수 있다. 같은 테이블에서는 트리거를 만들 수 없다. → 항상 다른 테이블에 연쇄 반응을 일으키도록 만들어야 한다. 테이블에서만 사용이 가능하고, VIEW, 인라인 뷰, 서브쿼리 다 사용이 불가하다. AutoCommit을 가지고 있어 insert, update, delete시 commit과 rollback이 불가능하다. 웹 이벤트 : 메뉴/버튼/이미지 클릭됨..


  5. PL/SQL : PROCEDURE 2022.07.06

    PROCEDURE : 리턴형이 없는 함수 → 기능 수행만 한다 프로시저는 함수와 달리 리턴형이 없다. 대신, 매개변수를 통해 값을 받아 온다! 매개변수(parameter) : 프로시저가 호출될 때 그 프로시저에 전달되는 값 변수(variable) : 프로시저나 트리거 내에서 사용되는 값 → 이 때, 매개변수를 IN/OUT 으로 구분하여 연산에 필요한 값인지, 값을 받아오는 데 필요한지 등을 구분한다. →IN : SQL 처리에 필요한 변수 →OUT: 값을 받아오는 변수 기본적인 형식은 아래와 같다. CREATE [OR REPLACE] PROCEDURE proc_name( 매개변수 name IN VARCHAR2(34), --일반 변수(Call by Value) addr OUT VARCHAR2(100), --..


  6. PL/SQL : FUNCTION, CURSOR 2022.07.05

    PL(Procedure Language)/SQL PL : 프로시저 언어 = 함수를 만드는 언어 즉, 데이터베이스 응용 프로그램을 작성하는 데 사용하는 오라클의 전용 언어이다. PL로 만들 수 있는 것 3가지 → Function, Procedure, Trigger Function 리턴형이 있는 함수 Procedure 리턴형이 있거나 없을 수도 있는 함수 Call by Reference를 중심으로 짜인다. Trigger 이벤트 발생 시에 처리한다. (ex) 입고/출고/재고 테이블이 각각 있다고 했을 때, 입고 및 출고에 따른 데이터 변경을 재고 테이블에도 자동처리도록 한다. PL/SQL에는 아래의 요소들이 사용된다. 1) 변수 - 일반 변수(지역 변수), 매개 변수 - 스칼라 변수 - %TYPE - %ROW..


  7. INDEX 2022.07.04

    INDEX 검색 속도를 빠르게 하기 위한 기능이다. 데이터량이 많고 검색 위주로 수행하는 프로그램을 위해 사용한다. INSERT, UPDATE, DELETE 등의 작업이 많으면 굳이 사용하지 않아도 된다. PRIMARY KEY로 지정된 컬럼은 자동으로 INDEX가 된다. 인덱스의 종류 1. 비고유 인덱스 주로 검색 대상이 되는 컬럼명 → 맛집명, 위치, 영화명, 등... 2. 고유 인덱스 UNIQUE, PRIMARY KEY → 인덱스가 자동 생성되어있음. 언제 사용하는가? - 구별된 값이 많은 컬럼(PRIMARY KEY)의 데이터가 많은 경우 KEY를 주면 저장된 위치를 바로 갖고 오는 인덱스가 저장되는 구조 : B-Tree 쉽고 빠르게 데이터를 찾을 수 있는 구조다! (자료를 쉽고 빠르게 찾을 수 있도..


  8. VIEW, Sequence 2022.07.01

    VIEW 한 개 이상의 테이블을 합쳐서 만든 가상 테이블. SELECT를 통해 데이터를 얻은 최종 결과로, 일반 테이블처럼 사용이 가능하다. 복잡한 쿼리를 저장해 놓고 필요할 때 쉽게 조회하기 위해서 많이 사용한다. --뷰는 일반 계정(사용자 계정)에는 뷰를 생성하는 권한이 없다. GRANT CREATE VIEW TO user_name --권한 부여 REVOKE CREATE VIEW FROM user_name --권한 취소 --일반 생성 CREATE VIEW view_name AS SELECT ... --생성/수정 CREATE OR REPLACE VIEW view_name AS SELECT ... --삭제 DROP VIEW view_name --만들고 나면 일반 테이블처럼 동일하게 쓸 수 있다. SELE..


  9. JDBC 예제(JOIN 데이터 불러오기) 2022.06.30

    테이블끼리 JOIN한 결과를 Java에서 불러오려면 어떻게 해야 할까? 3개의 테이블이 있다. 1) 직원의 정보를 저장하는 Employee(이하 emp) 2) 회사의 부서 정보를 저장하는 Department(이하 dept) 3) 월급의 등급 정보를 저장하는 SalGrade 위 테이블들을 JOIN 해서... 각 직원의 정보를 불러올 때 직원 정보와 부서의 이름, 월급의 등급 정보까지 한 번에 불러오려고 한다. Dept.java package dao; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Dept { private int deptno; private String dname; private String loc; } S..


  10. JDBC 예제(CURD 게시판) 2022.06.29

    일단 간단한 데이터베이스 생성 CREATE TABLE freeboard( no NUMBER,--sequence name VARCHAR2(34) CONSTRAINT fb_name_nn NOT NULL,--작성자 subject VARCHAR2(2000) CONSTRAINT fb_subject_nn NOT NULL, content CLOB CONSTRAINT fb_content_nn NOT NULL, pwd VARCHAR2(10) CONSTRAINT fb_pwd_nn NOT NULL, regdate DATE DEFAULT sysdate, hit NUMBER DEFAULT 0,--조회수 CONSTRAINT fb_no_pk PRIMARY KEY(no) ) CREATE TABLE boardMember( id VAR..