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
ResultSet rs
DTO
DAO
DML
DCL
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
데이터베이스 객체(테이블, 뷰, 인덱스 등)를 완전히 삭제