23.07.12 -1

OH オハ~~~オッス!!·2023년 7월 12일
0
post-thumbnail
  1. 오라클 emp table을 출력하는 자바 프로그래밍을 쓰시오.

-dao

package edu.global.emp.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.emp.dto.EmpDto;
public class EmpDao {
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 EmpDao() {
try {
Class.forName(driver);
System.out.println("드라이버 검색 성공");
} catch (Exception e) {
e.printStackTrace();
}
}
public List getEmps(){
List emps = new ArrayList<>();
Connection connection = null;
PreparedStatement pstmt = null;
ResultSet rs= null;
String sql = "select * from emp";
try {
connection = DriverManager.getConnection(url,user,pwd); //DB 연결
pstmt = connection.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()) {
EmpDto emp = new EmpDto();
emp.setEmpno(rs.getInt("empno"));
emp.setEname(rs.getString("ename"));
emp.setJob(rs.getString("job"));
emp.setMgr(rs.getInt("mgr"));
emp.setHiredate(rs.getTimestamp("hiredate"));
emps.add(emp);
}
} catch (Exception e) {
// TODO: handle exception
}
return emps;
}
}

-dto

package edu.global.emp.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 EmpDto {
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 EmpDto() {}
public EmpDto(int empno, String ename, String job, int mgr, Timestamp hiredate) {
this.empno = empno;
this.ename = ename;
this.job = job;
this.mgr = mgr;
this.hiredate = hiredate;
this.sal = sal;
this.comm = comm;
this.deptno = deptno;
}
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;
}
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;
}
}

- main

package edu.global.emp;
import java.util.List;
import edu.global.emp.dao.EmpDao;
import edu.global.emp.dto.EmpDto;
public class EmpMain {
public static void main(String[] args) {
EmpDao dao = new EmpDao();
List emps = dao.getEmps();
for (EmpDto emp : emps) {
System.out.print("사원번호" + emp.getEmpno());
System.out.println("사원번호" + emp.getEname());
System.out.println("사원번호" + emp.getJob());
System.out.println("사원번호" + emp.getMgr());
System.out.println("사원번호" + emp.getHiredate());
System.out.println("사원번호" + emp.getSal());
System.out.println("사원번호" + emp.getComm());
System.out.println("사원번호" + emp.getDeptno());
}
}
}

  1. 아래의 객체에 대하여 설명하시오.
  • Connection connection

    JDBC를 통해 데이터베이스에 연결하는 객체
    DriverManager 클래스의 getConnection() 메소드로 생성할 수 있다.
    연결이 종료되면 close() 메소드를 호출하여 닫아야 한다

  • PreparedStatement pstmt

    SQL 문을 미리 컴파일하여 저장하는 객체.
    SQL 문을 실행할 때마다 컴파일할 필요가 없기 때문에 성능이 향상.
    setXXX() 메소드를 사용하여 SQL 문에 매개변수를 설정할 수 있다.

  • ResultSet rs

    데이터베이스로부터 조회된 결과를 저장하는 객체.
    ResultSet 객체는 커서를 사용하여 조회된 결과를 한 줄씩 읽을 수 있다.
    getXXX() 메소드를 사용하여 ResultSet 객체의 각 열에서 데이터를 가져올 수 있다.

  1. 아래의 개념에 대하여 설명하시오.
  • DTO

    데이터를 전달하는 객체

    • DAO

      데이터베이스에 대한 액세스를 제공하는 객체
      컨트롤

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

    DDL : 테이블에 관련된 것
    DML : 데이터 조작
    DCL: 오라클 컨트롤

  1. 아래의 쿼리에서 WHERE 1=0 의 의미는?
    CREATE TABLE DEPT03 AS SELECT * FROM DEPT WHERE 1=0;

    WHERE 1=0 조건은 항상 거짓이므로 SELECT * FROM DEPT WHERE 1=0 쿼리는 DEPT 테이블의 아무런 행도 반환하지 않는다.

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

    조건을 만족하는 행이 하나라도 있으면 참을 반환

  • all

    조건을 만족하는 모든 행이 참이어야 참을 반환

  1. 아래 쿼리를 완성하시오.
    -- 연봉을 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 ENAME, SAL FROM EMP WHERE SAL > ALL (SELECT SAL FROM EMP WHERE DEPTNO = 30);

  • all 없이 입력시

    SELECT ENAME, SAL FROM EMP WHERE SAL > (SELECT MAX(SAL) FROM EMP WHERE DEPTNO = 30);

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

    DELETE 는 특정 조건을 만족하는 행을 삭제. 예를 들어, DELETE FROM table WHERE id = 1 명령어는 table 테이블에서 id 값이 1인 행을 삭제

TRUNCATE 명령어는 테이블의 모든 행을 삭제. TRUNCATE TABLE table 명령어는 table 테이블의 모든 행을 삭제.

DROP 명령어는 테이블을 삭제. DROP TABLE table 명령어는 table 테이블을 삭제

10.데이터 딕셔너리 란?

데이터베이스에 저장된 데이터의 구조와 의미를 설명하는 문서
데이터베이스의 설계, 개발, 유지 관리, 보안, 성능 최적화 역할

profile
現在俺の人生(時間)は暗記だ!暗記だけが道だ!!

0개의 댓글

관련 채용 정보