[면접예상] 20230712

neul·2023년 7월 12일
0

면접예상

목록 보기
25/36
post-thumbnail

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

package DB.emp.dao;

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;
	
	public EmpDto() {}

	public EmpDto(int empno, String ename, String job, int mgr, Timestamp hiredate) {
		super();
		this.empno = empno;
		this.ename = ename;
		this.job = job;
		this.mgr = mgr;
		this.hiredate = hiredate;
	}

	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;
	}
	
	

}
package DB.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;

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<EmpDto> getEmps(){
		List<EmpDto> emps = new ArrayList<>();
	     //데이터 베이스 접속을 위한 암기필수3종세트
		Connection connection = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		String sql = "select * from emp";
		
		try {
			//Class.forName(driver);
			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) {
			
		}
		
		return emps;
	} 
	

}
package DB.emp.dao;

import java.util.List;

public class EmpMain {

	public static void main(String[] args) {
		EmpDao dao = new EmpDao();
		
		List<EmpDto> emps = dao.getEmps();
		
		for (EmpDto emp : emps) {
			System.out.print("사원번호 " + emp.getEmpno());
			System.out.println(" 사원이름 " + emp.getEname());
			System.out.println("입사일 " + emp.getHiredate());
		
		}
	}

}

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

Connection connection

  • 데이터베이스와의 연결을 나타내는 객체
  • 데이터베이스에 연결하고 상호작용하기 위해 사용

PreparedStatement pstmt

  • 미리 준비된 SQL 문을 실행하기 위한 객체
  • 파라미터화된 쿼리를 실행하고자 할 때 사용

ResultSet rs

  • SQL 쿼리의 결과를 담는 객체
  • 실행된 쿼리의 결과 집합을 탐색하며, 각 행의 열 값을 읽어올 수 있음

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

DTO

  • Data Transfer Object
  • 데이터 전송을 위한 단순한 객체로, 데이터를 저장하고 전달하기 위해 사용

DAO

  • Data Access Object
  • 데이터베이스나 외부 데이터 소스에 접근하는 객체
  • 데이터의 CRUD 작업을 수행하는 메서드를 제공
  • 데이터베이스와의 상호작용을 추상화하여 비즈니스 로직과 분리하여 사용하며, 데이터 엑세스 로직을 단순화하고 재사용성을 높임

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

DML

  • Data Manipulation Language
  • 데이터를 조작하는데 사용되는 SQL 명령어
  • 데이터의 삽입, 갱신, 삭제 등의 작업을 수행

DCL

  • Data Control Language
  • 데이터베이스의 보안과 권한 관리를 위한 SQL 명령어
  • 데이터베이스 객체에 대한 접근 권한을 부여하거나 취소하는 등의 작업을 수행

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

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

: select문의 결과를 가져와서 새로운 테이블인 'dept03'을 생성하지만, where 조건을 1=0(항상 거짓 조건)으로 설정하여 결과 집합이 비어 있도록 한다. (실제 데이터는 복사되지 않음)

이 패턴은 단순히 테이블 구조를 복제하고자 할 때 사용되며, 데이터를 포함하지 않는 빈 테이블을 생성하는 데 유용

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

any
: 조건식과 함께 사용하여 조건을 만족하는 값이 '하나'라도 있는 경우 참(true)을 반환

all
: 조건식과 함께 사용하여 '모든 값'이 조건을 만족하는 경우에만 참(true)을 반환

둘 다 다중행 쿼리에서 조건을 평가

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

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

SELECT ENAME, SAL, DEPTNO
FROM EMP
WHERE DEPTNO in (SELECT DISTINCt DEPTNO FROM EMP WHERE SAL >= 3000);

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

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

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

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

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

delete
테이블에서 특정 행 또는 조건에 맞는 데이터를 삭제

truncate
테이블의 모든 데이터를 한 번에 삭제

drop
데이터베이스 객체(테이블, 뷰, 인덱스 등)를 완전히 삭제

🌵데이터 딕셔너리 란?

  • 데이터베이스에 저장된 데이터에 대한 메타데이터(데이터에 대한 데이터)의 모음
  • 데이터베이스 객체의 정보를 설명하는 데이터베이스 내의 특별한 저장소
profile
🍙

0개의 댓글

관련 채용 정보