Day 26

·2023년 7월 12일
0

Global_2023_2

목록 보기
25/56

1. 오라클 emp table을 출력하는 자바 프로그래밍을 쓰시오.

DTO

package edu.global.dto;

import java.sql.Timestamp;

//이름       널?       유형           
//-------- -------- ------------ 
//EMPNO    NOT NULL NUMBER(4)    
//ENAME             VARCHAR2(10) 
//JOB               VARCHAR2(9)  
//MGR               NUMBER(4)    
//HIREDATE          DATE         
//SAL               NUMBER(7,2)  
//COMM              NUMBER(7,2)  
//DEPTNO            NUMBER(2)    

public class Dto {
    private int empno;
    private String ename;
    private String job;
    private int mgr;
    private Timestamp hiredate;
    private int sal;
    private int comm;
    private int deptno;

    public Dto() {}

    public int getEmpno() {
        return empno;
    }

    public void setEmpno(int empno) {
        this.empno = empno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public int getMgr() {
        return mgr;
    }

    public void setMgr(int mgr) {
        this.mgr = mgr;
    }

    public Timestamp getHiredate() {
        return hiredate;
    }

    public void setHiredate(Timestamp hiredate) {
        this.hiredate = hiredate;
    }

    public int getSal() {
        return sal;
    }

    public void setSal(int sal) {
        this.sal = sal;
    }

    public int getComm() {
        return comm;
    }

    public void setComm(int comm) {
        this.comm = comm;
    }

    public int getDeptno() {
        return deptno;
    }

    public void setDeptno(int deptno) {
        this.deptno = deptno;
    }

}

DAO

package edu.global.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import edu.global.dto.Dto;

public class Dao {
    private String driver = "oracle.jdbc.driver.OracleDriver";
    private String url = "jdbc:oracle:thin:@localhost:1521:xe";
    private String user = "scott";
    private String pwd = "tiger";

  public Dao() {
      try {
          Class.forName(driver);
          System.out.println("드라이버 검색 성공");
      } catch (Exception e) {
          e.printStackTrace();
      }
  }
  public List<Dto> getEmps(){
      List<Dto> emps = new ArrayList<>();

      Connection connection = null;
      PreparedStatement pstmt = null;
      ResultSet rs = null;

      String sql = "select * from emp";

      try {
          connection = DriverManager.getConnection(url,user,pwd);
          pstmt = connection.prepareStatement(sql);

          rs = pstmt.executeQuery();

          while(rs.next()) {
              Dto emp = new Dto();

              emp.setComm(rs.getInt("comm"));
              emp.setDeptno(rs.getInt("deptno"));
              emp.setEmpno(rs.getInt("empno"));
              emp.setEname(rs.getString("ename"));
              emp.setHiredate(rs.getTimestamp("hiredate"));
              emp.setJob(rs.getString("job"));
              emp.setMgr(rs.getInt("mgr"));
              emp.setSal(rs.getInt("sal"));
          }
      } catch (Exception e) {
          // TODO: handle exception
      }
      return emps;
  }
  }

Main

package edu.global.Dmain;

import java.util.List;

import edu.global.dao.Dao;
import edu.global.dto.Dto;

public class DMain {
    public static void main(String[] args) {
    Dao dao = new Dao();
    List<Dto> emps = dao.getEmps();

  for (Dto emp : emps) {
      System.out.println("사원번호 " + emp.getEmpno()+" ");
      System.out.println("사원이름 " + emp.getEname()+" ");
      System.out.println("입사일" + emp.getHiredate()+" ");
      System.out.println("업무" + emp.getJob()+" ");
      System.out.println("담당 매니저"+emp.getMgr()+" ");
      System.out.println("업무번호"+emp.getDeptno()+" ");
      System.out.println("봉급" + emp.getSal());
      System.out.println("보너스"+emp.getComm());
  }
  }
  }

2. 아래의 객체에 대하여 설명하시오.

  • Connection connection

    데이터베이스에 연결하는데 사용됨

  • PreparedStatement pstmt

    SQL문을 실행하는데 사용됨

  • ResultSet rs

    SQL문의 실행 결과를 저장하는데 사용됨

3. 아래의 개념에 대하여 설명하시오.

  • DTO

    데이터를 전송하는 데 사용되는 객체

  • DAO

    데이터베이스에 접근하고 데이터를 조작하는 데 사용되는 객체

4. 아래에 대하여 설명하시오.

  • DDL

    테이블 구조를 정의하는 create table (자동 커밋)
    예) create, alter, drop, rename, truncate

  • DCL

    데이터베이스 사용자의 권한을 제어하는 데 사용되는 SQL 언어

  • DML

    데이터베이스 테이블의 데이터를 조작하는 데 사용되는 SQL 언어
    예) insert, delete, update, select

5. 아래의 쿼리에서 WHERE 1=0 의 의미는?

CREATE TABLE DEPT03 AS SELECT * FROM DEPT WHERE 1=0;

1=0은 false 라서 안나온다
(아무것도 보여주지 않고 구조만 복사함)

6. 다중행 쿼리에서 아래를 설명하시오.

  • any

    or와 같음

  • all

    and와 같음

7. 아래 쿼리를 완성하시오.

-- 연봉을 3000이상 받는 사원이 소속된 부서와 동일한 부서에서 근무하는 사원들의 정보를 출력하는 쿼리문

select ename, sal, deptno
from emp
where deptno in (select distinct deptno from emp where sal >= 3000);

-- 부서 번호가 30번인 사원들의 급여 중 가장 낮은 값(800)보다 높은 급여를 받는 사원의 이름, 급여를 출력하는 쿼리문

select *
from emp
where deptno = 30 and sal > (select min(sal) from emp);

--30번 소속 사원들 중에서 급여를 가장 많이 받는 사원보다 더 많은 급여를 받는 사람의 이름과 급여를 출력하는 쿼리문

select *
from emp
where sal > all (select sal from emp where deptno = 30); 

8. DELETE, TRUNCATE, DROP 명령어의 차이점은?

9.데이터 딕셔너리 란?

데이터베이스 관리 시스템(DBMS)에 저장된 데이터와
데이터의 구조에 대한 정보를 저장하는 데이터베이스
(유저가 변경 불가)


DROP은 그냥 쓸 생각 하지마라🔞🈲🆖🛐☣💥☢


Point

SQL

  • 다중행 서브 쿼리

    • any는 oracle만 지원
      • or연산
    • all은 and 연산
  • 오라클은 대소문자 구분x

    • mysql은 구분할수도
  • char20은 20개가 고정됨(주민번호)
    varchar20은 1개 넣고 19개를 잡음(게시판 2000자)

  • varchar1은 쓰면 안되고 varchar2를 써야함

  • DDL (테이블 구조를 정의하는 create table)

    • ALTER: 기존 테이블 구조 변경
      해당 컬럼에 자료가 없을땐 데이터 타입 변경과 크기 변경 가능,
      자료가 있으면 데이터타입 변경 불가 (크기는 늘리는것만 가능)
    • DROP TABLE: 기존 테이블 존재 제거 (복구 힘듦)
      • 테이블 삭제와 무결성 제약 조건
        기본키나 고유키를 다른 테이블에서 참조해서
        사용하고 있을땐 참조하는 테이블들을
        먼저 제거하고 삭제해야 함 (java의 상속개념)
      • DROP은 매우 위험하므로
        직속상관에게 완전히 확인받거나(서류,녹음등 받아야)
    • Truncate table은 테이블의 모든 로우 제거
    • 데이터는 컬럼값의 순서대로 들어간다
  • 은행권에서 비상사태에 대비

    • 데이터센터는 지하 60m
    • 10원이라도 차이나면 은행원 전부 야근💦
  • 자바 오라클 연결은
    "프로젝트에서 우클릭 -> properties -> Java Build Path -> Libraries -> Add External jar를 눌러서 해당 jdk버전에 맞는 ojdbc"

0개의 댓글