본문 바로가기

전체 글160

2022-11-12 JDBC 정리, 복습하기 1. 드라이버 로딩 java.lang패키지의 Class라는 클래스의 forName이라는 메소드를 이용해서 오라클 드라이버의 핵심클래스를 메모리에 로딩 Class.forName("oracle.jdbc.driver.OracleDriver"); 2. DB서버에 연결하기 => java.sql패키지의 API를 이용 DriverManeger의 getConnection메소드를 이용해서 DB서버에 연결 1) static메소드이므로 클래스 이름으로 엑세스 static { Class.forName("oracle.jdbc.driver.OracleDriver"); } 2) throws하고 있는 SQLException은 Exception클래스의 하위 클래스이르모 문법적으로 Exception처리를 해야 한다. static { /.. 2022. 11. 12.
2022-11-11 Servlet 등록, 요청 실행방법에 따른 자바 클래스의 구분 - Application(main메소드) - Applet - Servlet Servlet - 클라이언트의 요청을 처리하기 위한 기술 - 서버에서 클라이언트의 요청을 처리하고 응답할 수 있도록 만들어진 객체 - 클라이언트가 요청을 하면 서버에서 실행되면서 DB에 대한 처리, 서버의 리소를 이용해서 만들어진 결과를 클라이언트에 응답 - 클라이언트가 요청하면 서버가 자동으로 요청한 서블릿을 찾아서 실행하므로 서버가 인식하는 위치에 있어야 한다. ** 서버가 인식하는 위치 : 서블릿 디렉토리(표준화된 폴더 구조의 classes폴더) - 서버를 구성하는 많은 클래스내부에서 우리가 만든 서블릿 객체가 실행되도록 하기 위해서는 서버가 인식할 수 있는 규칙에 맞게 클래스를 작성해야 .. 2022. 11. 12.
2022-11-09~10 JDBC 2. select - 전체 사원 조회하기 2. 전체 사원 조회하기 package jdbc.exam; import java.util.Scanner; public class DAOTest { public static void main(String[] args) { Scanner key = new Scanner(System.in); System.out.println("******인사관리시스템********"); System.out.println("1. 사원등록"); System.out.println("2. 전체사원조회"); System.out.println("3. job별로 사원조회하기"); System.out.println("4. SMITH부서의 전 사원의 급여를 500올려주기"); System.out.println("5. comm이 0인 직원 삭.. 2022. 11. 11.
2022-11-09~10 JDBC 1. insert - 사원등록하기 / 드라이버 로딩, DB서버 연결, 자원반납 jdbc패키지 - DBUtil ,CustomerDAO2, CustomerDTO2, DAOTest, MenuUI .java파일 1. 각각의 클래스로 기능을 나눠서 CustomerDAO에 모으기 2. CustomerDAO에서 중복되는 코드를 분리하여 DBUtil에 모으기 3. 각 계층으로 데이터 전달할 때 DTO객체로 만들어서 주고받기 - 객체생성을 위해 CustomerDTO클래스와 생성자, getter, setter메소드 만들기 * 커넥션설정과 자원반납 등 모든 메소드가 공통으로 처리하는 부분을 구현 * DB연동과 관련된 기능을 유틸리티처럼 제공하는 클래스 1. 드라이버 로딩 2. DB서버 연결 3. 자원반납 => 유틸리티처럼 사용할 것이므로 static으로 구현 package jdbc; import ja.. 2022. 11. 11.
2022-11-08 1-1 시퀀스(Sequence), JDBC Sequence - 시퀀스 만들기 create sequence myseq; * nextval : 1씩 증가 select myseq.nextval from dual; NEXTVAL -------- 1 NEXTVAL -------- 2 * currval : 값 증가하지 않고 값을 불러옴 select myseq.currval from dual; CURRVAL -------- 4 CURRVAL -------- 4 - 시퀀스 삭제하기 drop sequence myseq; - 데이터 추가하기 insert into order_info values('20221107' || order_seq.nextval, sysdate, 'lee'); //이런식으로도 가능 - 외부pc로 오라클 접속하기 - 명령 프롬프트 오라클 sco.. 2022. 11. 8.
2022-11-08 1-2 시퀀스, JDBC 자바로 JDBC연동 - API로 작업 ** 패키지 import 주의! 1. 오라클 드라이버 로딩 클래스로더를 이용해서 드라이버의 핵심 클래스를 메모리에 로딩 java.lang패키지의 Class라는 클래스의 forName이라는 메소드를 이용해서 오라클 드라이버릐 핵심클래스를 메모리에 로딩 핵심클래스는 드라이버클래스라고 하며 드라이버클래스는 어떤 DBMS를 이용하냐에 따라서 달라진다. [문법] class.forName("메모리에 로딩하고 싶은 클래스명(패키지까지 명시)") [오라클] Class.forName("oracle.jdbc.driver.OracleDriver") //oracle.jdbc.driver패키지의 OracleDriver.class 파일 -------------------------------.. 2022. 11. 8.
2022-11-07 서브쿼리, 뷰, 데이터 조작어, 데이터 정의어, 제약 조건 서브쿼리 종류 3. 다중컬럼 서브쿼리 - 두 개 이상의 컬럼을 리턴하는 서브쿼리 - select절에 비교할 데이터를 여러 개 지정하는 반식 - 메인쿼리에 비교할 열을 괄호로 묶어 명시하고 서브쿼리에서는 괄호로 묶은 데이터와 같은 자료형 데이터를 select절에 명시 where (컬럼1, 컬럼2...) in (서브쿼리의 실행결과 값1, 값2...) select empno, deptno, sal from emp where (deptno, sal) in (select deptno, min(sal) from emp group by deptno); 4. 상호연관 서브쿼리 (효율 안 좋음) -서브쿼리를 실행할 때 메인쿼리 테이블의 컬럼을 참조해서 작업해야 하는 서브쿼리 - 서브쿼리의 비교 값이 계속 바뀌는 경우 메.. 2022. 11. 8.
블로그 과제 코드모음 22/11/05 -조인 주말과제 1.select e.EMPLOYEE_ID, e.FIRST_NAME, nvl(e2.FIRST_NAME, '관리자 없음' from EMPLOYEES e, EMPLOYEES e2 where e.EMPLOYEE_ID = e2.manager_id and e.FIRST_NAME like '_t%'; 2.select d.department_name, round(avg(e.salary),0) from employees e, DEPARTMENTS d where e.DEPARTMENT_ID = d.DEPARTMENT_ID and e.salary >= 5000 group by d.department_name order by avg(e.salary) desc; 3.select e.first_n.. 2022. 11. 5.
Do it! 오라클로 배우는 데이터베이스 입문 p.240 4번 문제 리뷰 자체 조인, 외부 조인을 알아야 풀 수 있는 문제 SQL> SELECT D.DEPTNO, D.DNAME, E.EMPNO, E.ENAME, E.MGR, E.SAL, E.DEPTNO, 2 S.LOSAL, S.HISAL, S.GRADE, E2.EMPNO AS MGR_EMPNO, E2.ENAME AS MGR_ENAME 3 FROM EMP E, DEPT D, SALGRADE S, EMP E2 4 WHERE E.DEPTNO(+) = D.DEPTNO 5 AND E.SAL BETWEEN S.LOSAL(+) AND S.HISAL(+) 6 AND E.MGR = E2.EMPNO(+) 7 ORDER BY D.DEPTNO, E.EMPNO; DEPTNO DNAME EMPNO ENAME MGR SAL DEPTNO LOSAL HIS.. 2022. 11. 5.