Data Scientist 옌

매일 발전하는 IT문제해결사

국비지원교육 (22.01-22.07)/강의노트

22-03-14(월) 031일차 [Java, Oracle] Service 패턴, DDL(CREATE, ALTER, DROP), DML(INSERT, UPDATE, DELETE)

옌炎 2022. 5. 11. 10:33
728x90

수업내용


1교시 (09:30-10:20)

  • 지난 시간 복습
    콘솔에서 데이터베이스 연동하는 것 공부 중입니다.
    JDBC 드라이버를 사용해서 오라클 데이터베이스 연동
    검색하는 것 공부하는 중입니다.

    3-Tier 프리젠테이션 레이어
       |
       |------ Service
       |
    비즈니스 레이어 : DAO
    데이터베이스 레이어

    Service 패턴 : 입력하고 - 비즈니스 - 데이터베이스에 입력
              조회하고 - 비즈니스 - 데이터베이스에 조회 요청

    입력, 조회
        콘솔
        웹브라우저
        안드로이드
        iOS 등

    DAO 패턴 : Data Access Object : 데이터베이스 연동하는 패턴

2교시 (10:30-11:20)

선생님이 주신 코드 보면서 정리

  • DateUtil
package a.b.c.common;

import java.text.SimpleDateFormat;
import java.util.Date;

public abstract class DateUtil {

	public static String yyyymmdd() {
		return new SimpleDateFormat("yyyyMMdd").format(new Date()).toString();
	}
	
	public static String cTime() {

		long time = System.currentTimeMillis();

//		SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss");
//		String cTime = sdf.format(new java.util.Date(time));
//		return cTime;

		return new SimpleDateFormat("yyyy.MM.dd hh:mm:ss").format(new Date(time)).toString();
	}

	public static boolean fromtoDate(String fromdate, String todate) {

		boolean bool = false;

		try {

			SimpleDateFormat sDate = new SimpleDateFormat("yyyymmdd");
			Date fromDate = sDate.parse(fromdate);
			Date toDate = sDate.parse(todate);
			long f = fromDate.getTime();
			long t = toDate.getTime();

			bool = f > t;

			if (bool) {
				System.out.println("FROM 날짜가 TO 날짜보다 크면 안됩니다. >>> : " + bool);
				System.out.println("프로그램을 종료합니다. 다시 실행해서 사용하시오 >>> : ");
			}

		} catch (Exception e) {
			System.out.println("FROM TO 비교중 에러가 >>> : " + e.getMessage());
		}

		return bool;
	}

	public static void main(String args[]) {
		
		System.out.println("yyyymmdd >>> : " + DateUtil.yyyymmdd());
		System.out.println("cTime >>> : " + DateUtil.cTime());
	}
}
  • OracleConnProperty
package a.b.c.common;

import java.sql.Connection;
import java.sql.DriverManager;

public abstract class OracleConnProperty {

	// DataSource 정보 : 데이터베이스 연결 정보
	public static final String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver";
	public static final String JDBC_URL = "jdbc:oracle:thin:@localhost:1521:orclKSY00";
	public static final String JDBC_USER = "scott";
	public static final String JDBC_PASSWORD = "tiger";

	// Connection 연결하는 함수 만들기
	public static Connection getConnection() {
		
		Connection conn = null;
		
		try {
			Class.forName(JDBC_DRIVER);
			conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
			
		} catch (Exception e) {
			System.out.println("데이터베이스 연결에 문제가 있어요" + e.getMessage());
		}
	
		return conn;
	}
}
  • EmpSearchVO
package a.b.c.emp.search.vo;

// 자바 Beans 컴포넌트 개념(Setter, getter 함수 사용) : 데이터를 담는 역할
// DTO: Data Transfer Object 패턴 : 데이터를 나르는 역할 <-- 이전 용어
// 현재는 밸류 오브젝트라고 사용한다.
// VO : Value Object : 데이터를 담는 통 역할을 한다. : 깡통 클래스
public class EmpSearchVO {
	
	private String empno;
	private String ename;
	private String job;
	private String mgr;
	private String hiredate;
	private String sal;
	private String comm;
	private String deptno;
	
	// 날짜 검색 변수 추가 
	private String fromdate;
	private String todate;
		
	// 생성자
	public EmpSearchVO() {
		
	}

	public EmpSearchVO(String empno, String ename, String job, String mgr, String hiredate, String sal, String comm,
			String deptno) {
		this.empno = empno;
		this.ename = ename;
		this.job = job;
		this.mgr = mgr;
		this.hiredate = hiredate;
		this.sal = sal;
		this.comm = comm;
		this.deptno = deptno;
	}
	
	// getters
	public String getEmpno() {
		return empno;
	}
	public String getEname() {
		return ename;
	}
	public String getJob() {
		return job;
	}
	public String getMgr() {
		return mgr;
	}
	public String getHiredate() {
		return hiredate;
	}
	public String getSal() {
		return sal;
	}
	public String getComm() {
		return comm;
	}
	public String getDeptno() {
		return deptno;
	}
	
	// setters
	public void setEmpno(String empno) {
		this.empno = empno;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public void setMgr(String mgr) {
		this.mgr = mgr;
	}
	public void setHiredate(String hiredate) {
		this.hiredate = hiredate;
	}
	public void setSal(String sal) {
		this.sal = sal;
	}
	public void setComm(String comm) {
		this.comm = comm;
	}
	public void setDeptno(String deptno) {
		this.deptno = deptno;
	}
	
	// 날짜 검색 getter, setter 추가 
		public String getFromdate() {
			return fromdate;
		}

		public String getTodate() {
			return todate;
		}

		public void setFromdate(String fromdate) {
			this.fromdate = fromdate;
		}

		public void setTodate(String todate) {
			this.todate = todate;
		}
}

3교시 (11:30-12:20)

선생님이 주신 코드 보면서 정리

  • EmpSearchDAO
package a.b.c.emp.search.dao;

import java.util.ArrayList;

import a.b.c.emp.search.vo.EmpSearchVO;

public interface EmpSearchDAO {

	// 전체 검색
	public ArrayList<EmpSearchVO> empSelectAll();
	
	// 사번 검색
	public ArrayList<EmpSearchVO> empSelectEmpno(EmpSearchVO evo);

	// 이름 검색 LIKE
	public ArrayList<EmpSearchVO> empSelectEname(EmpSearchVO evo);
	
	// 사번, 이름 검색
	public ArrayList<EmpSearchVO> empSelectEmpnoEname(EmpSearchVO evo);
	
	// 직책 검색 LIKE
	public ArrayList<EmpSearchVO> empSelectJob(EmpSearchVO evo);
	
	// 날짜 검색
	public ArrayList<EmpSearchVO> empSelectHiredate(EmpSearchVO evo);
}
  • EmpSearchService
package a.b.c.emp.search.service;

import java.util.ArrayList;

import a.b.c.emp.search.vo.EmpSearchVO;

public interface EmpSearchService {
	
	// 전체 검색
	public ArrayList<EmpSearchVO> empSelectAll();
	
	// 사번 검색
	public ArrayList<EmpSearchVO> empSelectEmpno(EmpSearchVO evo);

	// 이름 검색 LIKE
	public ArrayList<EmpSearchVO> empSelectEname(EmpSearchVO evo);
	
	// 사번, 이름 검색
	public ArrayList<EmpSearchVO> empSelectEmpnoEname(EmpSearchVO evo);
	
	// 직책 검색 LIKE
	public ArrayList<EmpSearchVO> empSelectJob(EmpSearchVO evo);
	
	// 날짜 검색
	public ArrayList<EmpSearchVO> empSelectHiredate(EmpSearchVO evo);
}
  • EmpSearchQueryMap
package a.b.c.emp.search.sql;

import java.util.ArrayList;

public abstract class EmpSearchQueryMap {

	// 전체 검색
	public static String getEmpSelectAll() {
		
		StringBuffer sb = new StringBuffer();
		sb.append("SELECT						\n");
		sb.append("	 	 A.EMPNO     AS EMPNO	\n");
		sb.append("		,A.ENAME     AS ENAME	\n");
		sb.append("		,A.JOB       AS JOB		\n");
		sb.append("		,A.MGR       AS MGR		\n");
		sb.append("		,TO_CHAR(A.HIREDATE, 'YYYY-MM-DD')  AS HIREDATE	\n");
		sb.append("		,A.SAL       AS SAL		\n");
		sb.append("		,A.COMM      AS COMM	\n");
		sb.append("		,A.DEPTNO    AS DEPTNO	\n");
		sb.append("FROM    EMP A				\n");
		sb.append("ORDER BY 1 DESC				\n");
		
		return sb.toString();
	}
	
	// 사번 검색
	public static String getEmpSelectEmpno() {
		
		StringBuffer sb = new StringBuffer();
		sb.append("SELECT  						\n");
		sb.append("		 A.EMPNO     AS EMPNO	\n");
		sb.append("		,A.ENAME     AS ENAME	\n");
		sb.append("		,A.JOB       AS JOB		\n");
		sb.append("		,TO_CHAR(A.HIREDATE, 'YYYY-MM-DD')  AS HIREDATE	\n");
		sb.append("		,A.DEPTNO    AS DEPTNO	\n");
		sb.append("FROM    EMP A				\n");
		sb.append("WHERE A.EMPNO = ?			\n"); // place holder 1
		
		return sb.toString();
	}
	
	// 이름 검색
	public static String getEmpSelectEname() {
		
		StringBuffer sb = new StringBuffer();
		sb.append("SELECT  						\n");
		sb.append("		 A.EMPNO     AS EMPNO	\n");
		sb.append("		,A.ENAME     AS ENAME	\n");
		sb.append("		,A.JOB       AS JOB		\n");
		sb.append("		,TO_CHAR(A.HIREDATE, 'YYYY-MM-DD')  AS HIREDATE	\n");
		sb.append("		,A.DEPTNO    AS DEPTNO	\n");
		sb.append("FROM    EMP A				\n");
		sb.append("WHERE A.ENAME = ?			\n"); // place holder 1
		
		return sb.toString();
	}
	
	// 사번, 이름 검색
	public static String getEmpSelectEmpnoEname() {
		
		StringBuffer sb = new StringBuffer();
		sb.append("SELECT  						\n");
		sb.append("		 A.EMPNO     AS EMPNO	\n");
		sb.append("		,A.ENAME     AS ENAME	\n");
		sb.append("		,A.JOB       AS JOB		\n");
		sb.append("		,TO_CHAR(A.HIREDATE, 'YYYY-MM-DD')  AS HIREDATE	\n");
		sb.append("		,A.DEPTNO    AS DEPTNO	\n");
		sb.append("FROM    EMP A				\n");
		sb.append("WHERE A.EMPNO = ?			\n"); // place holder 1
		sb.append("AND A.ENAME = ?				\n"); // place holder 2
		
		return sb.toString();
	}
	
	// 직책 검색
	public static String getEmpSelectJob() {
		
		StringBuffer sb = new StringBuffer();
		sb.append("SELECT  						\n");
		sb.append("		 A.EMPNO     AS EMPNO	\n");
		sb.append("		,A.ENAME     AS ENAME	\n");
		sb.append("		,A.JOB       AS JOB		\n");
		sb.append("		,TO_CHAR(A.HIREDATE, 'YYYY-MM-DD')  AS HIREDATE	\n");
		sb.append("		,A.DEPTNO    AS DEPTNO	\n");
		sb.append("FROM    EMP A				\n");
		sb.append("WHERE A.JOB = ?				\n"); // place holder 1
		
		return sb.toString();
	}
	
	// 날짜 검색
	public static String getEmpSelectHiredate() {
		
		StringBuffer sb = new StringBuffer();
		sb.append("SELECT  						\n");
		sb.append("		 A.EMPNO     AS EMPNO	\n");
		sb.append("		,A.ENAME     AS ENAME	\n");
		sb.append("		,A.JOB       AS JOB		\n");
		sb.append("		,TO_CHAR(A.HIREDATE, 'YYYY-MM-DD')  AS HIREDATE	\n");
		sb.append("		,A.DEPTNO    AS DEPTNO	\n");
		sb.append("FROM    EMP A				\n");
		sb.append("WHERE A.HIREDATE BETWEEN ? AND ?		\n"); // place holder 1, 2

		return sb.toString();
	}
}

4교시 (12:30-13:20)

선생님이 주신 코드 보면서 정리

  • EmpSearchDAOImpl
package a.b.c.emp.search.dao;

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

import a.b.c.common.OracleConnProperty;
import a.b.c.emp.search.sql.EmpSearchQueryMap;
import a.b.c.emp.search.vo.EmpSearchVO;

public class EmpSearchDAOImpl implements EmpSearchDAO {

	// 전체 검색
	@Override
	public ArrayList<EmpSearchVO> empSelectAll() {
		// TODO Auto-generated method stub
		 
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<EmpSearchVO> aList = null;
		EmpSearchVO esvo = null;
		
		
		try {
		
			// 커넥션 연결
			conn = OracleConnProperty.getConnection();
		
			// 쿼리문 전달
			// Statement, preparedStatement : 쿼리문의 위치가 다름. 그 다음 메모리
			String sql = EmpSearchQueryMap.getEmpSelectAll();
			pstmt = conn.prepareStatement(sql);
			System.out.println("전체 검색 >>> : \n" + sql);
		
			// 질의결과 받기
			rsRs = pstmt.executeQuery();
			
			// 받은 결과를 dao에서 service로 전달하기
			/*
			1. 질의 결과가 있는지 확인
			2. 질의 결과가 있으면 ArrayList 인스턴스 하기
			3. 리절트셋에 있는 boolean 커서 next 함수로 레코드 가져오기
			4. 가져온 레코드 VO에 담기
			5. VO를 ArrayList에 담기
			*/
			// 1. 질의 결과가 있는지 확인
			if (rsRs != null) {
				// 2. 질의 결과가 있으면 ArrayList 인스턴스 하기
				aList = new ArrayList<EmpSearchVO>();
				
				// 3. 리절트셋에 있는 boolean 커서 next 함수로 레코드 가져오기
				while (rsRs.next()) {
					// 4. 가져온 레코드 VO에 담기
					esvo = new EmpSearchVO();
					
					esvo.setEmpno(rsRs.getString("EMPNO"));
					esvo.setEname(rsRs.getString("ENAME"));
					esvo.setJob(rsRs.getString("JOB"));
					esvo.setMgr(rsRs.getString("MGR"));
					esvo.setHiredate(rsRs.getString("HIREDATE"));
					esvo.setSal(rsRs.getString("SAL"));
					esvo.setComm(rsRs.getString("COMM"));
					esvo.setDeptno(rsRs.getString("DEPTNO"));
				
					// 5. VO를 ArrayList에 담기
					aList.add(esvo);
				}
			} else {
				System.out.println("EmpSerachDAOImpl :: 전체 검색 결과가 없음 >>> : " + rsRs);
			}
			
		} catch (Exception e) {
			System.out.println("EmpSerachDAOImpl :: DAO :: 전체 검색 중 에러 >>> : " + e.getMessage());
		}
		
		// ArrayList 리턴하기
		return aList;
	}

	// 사번 검색
	@Override
	public ArrayList<EmpSearchVO> empSelectEmpno(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<EmpSearchVO> aList = null;
		EmpSearchVO esvo = null;
		
		try {
			// 커넥션
			conn = OracleConnProperty.getConnection();
			
			// 쿼리문 전달
			String sql = EmpSearchQueryMap.getEmpSelectEmpno();
			pstmt = conn.prepareStatement(sql);
			System.out.println("사번 검색 >>> : \n" + sql);
			pstmt.clearParameters(); // 매개 변수 받기 전 루틴
			pstmt.setString(1, evo.getEmpno());
			
			// 질의 결과 받기
			rsRs = pstmt.executeQuery();
			// 받은 결과를 dao에서 service로 전달하기
			/*
			1. 질의 결과가 있는지 확인
			2. 질의 결과가 있으면 ArrayList 인스턴스 하기
			3. 리절트셋에 있는 boolean 커서 next 함수로 레코드 가져오기
			4. 가져온 레코드 VO에 담기
			5. VO를 ArrayList에 담기
			*/
			// 1. 질의 결과가 있는지 확인
			if (rsRs != null) {
				// 2. 질의 결과가 있으면 ArrayList 인스턴스 하기
				aList = new ArrayList<EmpSearchVO>();
				
				// 3. 리절트셋에 있는 boolean 커서 next 함수로 레코드 가져오기
				while (rsRs.next()) {
					// 4. 가져온 레코드 VO에 담기
					esvo = new EmpSearchVO();
					
					esvo.setEmpno(rsRs.getNString("EMPNO"));
					esvo.setEname(rsRs.getNString("ENAME"));
					esvo.setJob(rsRs.getNString("JOB"));
					esvo.setHiredate(rsRs.getNString("HIREDATE"));
					esvo.setDeptno(rsRs.getNString("DEPTNO"));
					// 5. VO를 ArrayList에 담기
					aList.add(esvo);
				}
			} else {
				System.out.println("EmpSerachDAOImpl :: 사번 검색 결과가 없음 >>> : " + rsRs);
			}
		} catch (Exception e) {
			System.out.println("EmpSerachDAOImpl :: DAO :: 사번 검색 중 에러 >>> : " + e.getMessage());
		}
		
		return aList;
	}

	// 이름 검색
	@Override
	public ArrayList<EmpSearchVO> empSelectEname(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<EmpSearchVO> aList = null;
		EmpSearchVO esvo = null;
		
		try {
			
			conn = OracleConnProperty.getConnection();
			String sql = EmpSearchQueryMap.getEmpSelectEname();
			pstmt = conn.prepareStatement(sql);
			System.out.println("이름 검색 >>> : \n" + sql);
			
			pstmt.clearParameters();
			pstmt.setString(1, evo.getEname());
			
			rsRs = pstmt.executeQuery();
			
			if (rsRs != null ) {
				aList = new ArrayList<EmpSearchVO>();
				
				while (rsRs.next()) {
					
					esvo = new EmpSearchVO();
					
					esvo.setEmpno(rsRs.getNString("EMPNO"));
					esvo.setEname(rsRs.getNString("ENAME"));
					esvo.setJob(rsRs.getNString("JOB"));
					esvo.setHiredate(rsRs.getNString("HIREDATE"));
					esvo.setDeptno(rsRs.getNString("DEPTNO"));
					
					aList.add(esvo);
				}
			} else {
				System.out.println("EmpSearchDAOImpl :: 이름 검색 결과가 없음 >>> : " + rsRs);
			}
		} catch (Exception e) {
			System.out.println("EmpSerachDAOImpl :: DAO :: 이름 검색 중 에러 >>> : " + e.getMessage());
		}
		return aList;
	}
	
	// 사번, 이름 검색
	@Override
	public ArrayList<EmpSearchVO> empSelectEmpnoEname(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<EmpSearchVO> aList = null;
		EmpSearchVO esvo = null;
		
		try {
			
			conn = OracleConnProperty.getConnection();
			String sql = EmpSearchQueryMap.getEmpSelectEmpnoEname();
			pstmt = conn.prepareStatement(sql);
			System.out.println("사번, 이름 검색 >>> : \n" + sql);
			
			pstmt.clearParameters();
			pstmt.setString(1, evo.getEmpno());
			pstmt.setString(2, evo.getEname());
			
			rsRs = pstmt.executeQuery();
			
			if (rsRs != null ) {
				aList = new ArrayList<EmpSearchVO>();
				
				while (rsRs.next()) {
					
					esvo = new EmpSearchVO();
					
					esvo.setEmpno(rsRs.getNString("EMPNO"));
					esvo.setEname(rsRs.getNString("ENAME"));
					esvo.setJob(rsRs.getNString("JOB"));
					esvo.setHiredate(rsRs.getNString("HIREDATE"));
					esvo.setDeptno(rsRs.getNString("DEPTNO"));
					
					aList.add(esvo);
				}
			} else {
				System.out.println("EmpSearchDAOImpl :: 사번, 이름 검색 결과가 없음 >>> : " + rsRs);
			}
		} catch (Exception e) {
			System.out.println("EmpSerachDAOImpl :: DAO :: 사번, 이름 검색 중 에러 >>> : " + e.getMessage());
		}
		return aList;
	}

	// 직책 검색
	@Override
	public ArrayList<EmpSearchVO> empSelectJob(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<EmpSearchVO> aList = null;
		EmpSearchVO esvo = null;
		
		try {
			
			conn = OracleConnProperty.getConnection();
			String sql = EmpSearchQueryMap.getEmpSelectJob();
			pstmt = conn.prepareStatement(sql);
			System.out.println("직책 검색 >>> : \n" + sql);
			
			pstmt.clearParameters();
			pstmt.setString(1, evo.getJob());
			
			rsRs = pstmt.executeQuery();
			
			if (rsRs != null ) {
				aList = new ArrayList<EmpSearchVO>();
				
				while (rsRs.next()) {
					
					esvo = new EmpSearchVO();
					
					esvo.setEmpno(rsRs.getNString("EMPNO"));
					esvo.setEname(rsRs.getNString("ENAME"));
					esvo.setJob(rsRs.getNString("JOB"));
					esvo.setHiredate(rsRs.getNString("HIREDATE"));
					esvo.setDeptno(rsRs.getNString("DEPTNO"));
					
					aList.add(esvo);
				}
			} else {
				System.out.println("EmpSearchDAOImpl :: 직책 검색 결과가 없음 >>> : " + rsRs);
			}
		} catch (Exception e) {
			System.out.println("EmpSerachDAOImpl :: DAO :: 직책 검색 중 에러 >>> : " + e.getMessage());
		}
		return aList;
	}

	// 날짜 검색
	@Override
	public ArrayList<EmpSearchVO> empSelectHiredate(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<EmpSearchVO> aList = null;
		EmpSearchVO esvo = null;
		
		try {
			
			conn = OracleConnProperty.getConnection();
			String sql = EmpSearchQueryMap.getEmpSelectHiredate();
			pstmt = conn.prepareStatement(sql);
			System.out.println("날짜 검색 >>> : \n" + sql);
			
			pstmt.clearParameters();
			pstmt.setString(1, evo.getHiredate());
			pstmt.setString(2, evo.getHiredate());
			
			rsRs = pstmt.executeQuery();
			
			if (rsRs != null ) {
				aList = new ArrayList<EmpSearchVO>();
				
				while (rsRs.next()) {
					
					esvo = new EmpSearchVO();
					
					esvo.setEmpno(rsRs.getNString("EMPNO"));
					esvo.setEname(rsRs.getNString("ENAME"));
					esvo.setJob(rsRs.getNString("JOB"));
					esvo.setHiredate(rsRs.getNString("HIREDATE"));
					esvo.setDeptno(rsRs.getNString("DEPTNO"));
					
					aList.add(esvo);
				}
			} else {
				System.out.println("EmpSearchDAOImpl :: 날짜 검색 결과가 없음 >>> : " + rsRs);
			}
		} catch (Exception e) {
			System.out.println("EmpSerachDAOImpl :: DAO :: 날짜 검색 중 에러 >>> : " + e.getMessage());
		}
		return aList;
	}
}
  • EmpSearchServiceImpl
package a.b.c.emp.search.service;

import java.util.ArrayList;

import a.b.c.emp.search.dao.EmpSearchDAO;
import a.b.c.emp.search.dao.EmpSearchDAOImpl;
import a.b.c.emp.search.vo.EmpSearchVO;

public class EmpSearchServiceImpl implements EmpSearchService {

	// 어노테이션
	@Override
	public ArrayList<EmpSearchVO> empSelectAll() {
		// TODO Auto-generated method stub
		
//		EmpSearchDAO esdao = new EmpSearchDAOImpl();
//		ArrayList<EmpSearchVO> aList = esdao.empSelectAll();
//		
//		return aList;
		
		EmpSearchDAO esdao = new EmpSearchDAOImpl();
		return esdao.empSelectAll();
	}

	@Override
	public ArrayList<EmpSearchVO> empSelectEmpno(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		
		EmpSearchDAO esdao = new EmpSearchDAOImpl();
		ArrayList<EmpSearchVO> aList = esdao.empSelectEmpno(evo);
		
		return aList;
	}

	@Override
	public ArrayList<EmpSearchVO> empSelectEname(EmpSearchVO evo) {
		// TODO Auto-generated method stub

		EmpSearchDAO esdao = new EmpSearchDAOImpl();
		ArrayList<EmpSearchVO> aList = esdao.empSelectEname(evo);
		
		return aList;
	}

	@Override
	public ArrayList<EmpSearchVO> empSelectEmpnoEname(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		
		EmpSearchDAO esdao = new EmpSearchDAOImpl();
		ArrayList<EmpSearchVO> aList = esdao.empSelectEmpnoEname(evo);
		
		return aList;
	}

	@Override
	public ArrayList<EmpSearchVO> empSelectJob(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		
		EmpSearchDAO esdao = new EmpSearchDAOImpl();
		ArrayList<EmpSearchVO> aList = esdao.empSelectJob(evo);
		
		return aList;
	}

	@Override
	public ArrayList<EmpSearchVO> empSelectHiredate(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		
		EmpSearchDAO esdao = new EmpSearchDAOImpl();
		ArrayList<EmpSearchVO> aList = esdao.empSelectHiredate(evo);
		
		return aList;
	}
}
  • EmpSearchScr
package a.b.c.emp.search.scr;

import java.util.ArrayList;
import java.util.Scanner;

import a.b.c.common.DateUtil;
import a.b.c.emp.search.service.EmpSearchService;
import a.b.c.emp.search.service.EmpSearchServiceImpl;
import a.b.c.emp.search.vo.EmpSearchVO;

public class EmpSearchScr {

	// 화면과 서비스를 연결하는 함수하는 함수들 <-- 콘트롤러 
	
	// 전체 검색
	public ArrayList<EmpSearchVO> empSelectAll() {
		System.out.println("EmpSearchScr.empSelectAll() 함수 시작 >>> : ");
		
		EmpSearchService es = new EmpSearchServiceImpl();
		ArrayList<EmpSearchVO> aList = es.empSelectAll();
		
		return aList;
	}
	
	// 사번 검색
	public ArrayList<EmpSearchVO> empSelectEmpno(String empno) {
		System.out.println("EmpSearchScr.empSelectEmpno() 함수 시작 >>> : ");

		EmpSearchService es = new EmpSearchServiceImpl();
		
		// VO 에 검색 키워드 사번을 세팅한다. 
		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setEmpno(empno);
		
		ArrayList<EmpSearchVO> aList = es.empSelectEmpno(evo);
		
		return aList;
	}

	// 이름 검색
	public ArrayList<EmpSearchVO> empSelectEname(String ename){
		System.out.println("EmpSearchScr.empSelectEname() 함수 시작 >>> : ");
		System.out.println("EmpSearchScr.empSelectEname() ename >>> : " + ename);
		
		EmpSearchService es = new EmpSearchServiceImpl();
		
		// VO 에 검색 키워드 사번을 세팅한다. 
		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setEname(ename);
		System.out.println("EmpSearchScr.empSelectEname() evo.getEname() >>> : " + evo.getEname());
		
		ArrayList<EmpSearchVO> aList = es.empSelectEname(evo);
		
		return aList;
	}
	
	// 사번 이름 검색
	public ArrayList<EmpSearchVO> empSelectEmpnoEname(String empno, String ename) {		
		System.out.println("EmpSearchScr.empSelectEmpnoEname() 함수 시작 >>> : ");
		
		EmpSearchService es = new EmpSearchServiceImpl();
		
		// VO 에 검색 키워드 사번을 세팅한다. 
		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setEmpno(empno);
		evo.setEname(ename);
		
		ArrayList<EmpSearchVO> aList = es.empSelectEmpnoEname(evo);
		
		return aList;
	}
	
	// 직책 검색
	public ArrayList<EmpSearchVO> empSelectJob(String job) {	
		System.out.println("EmpSearchScr.empSelectJob() 함수 시작 >>> : ");
		
		EmpSearchService es = new EmpSearchServiceImpl();
		
		// VO 에 검색 키워드 사번을 세팅한다. 
		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setJob(job);
		
		ArrayList<EmpSearchVO> aList = es.empSelectJob(evo);
		
		return aList;
	}

	// 날짜 검색
	public ArrayList<EmpSearchVO> empSelectHiredate(String fromdate, String todate) {
		System.out.println("EmpSearchScr.empSelectHiredate() 함수 시작 >>> : ");

		EmpSearchService es = new EmpSearchServiceImpl();

		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setFromdate(fromdate);
		evo.setTodate(todate);

		ArrayList<EmpSearchVO> aList = es.empSelectHiredate(evo);

		return aList;
	}

	public static void main(String[] args) {
		System.out.println("EmpSearchScr.main() 함수 시작 >>> : ");
		
		System.out.println("검색한 번호는 			\n"
									+ "1. 전체검색 		\n"
									+ "2. 사번 검색 		\n"
									+ "3. 이름 검색 		\n"
									+ "4. 사번, 이름 검색 	\n"
									+ "5. 직책 검색 		\n"
									+ "6. 날짜 검색 		\n");
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		if (1 == n) {
			System.out.println(n + " 전체 검색을 선택 했습니다 >>> : ");
		
			EmpSearchScr es1 = new EmpSearchScr();
			ArrayList<EmpSearchVO> aList = es1.empSelectAll();
			
			if (aList !=null && aList.size() > 0) {

				for (int i=0; i < aList.size(); i++) {
					EmpSearchVO esvo = aList.get(i);
					System.out.print(esvo.getEmpno() + " : ");
					System.out.print(esvo.getEname() + " : ");
					System.out.print(esvo.getJob() + " : ");
					System.out.print(esvo.getMgr() + " : ");
					System.out.print(esvo.getHiredate() + " : ");
					System.out.print(esvo.getSal() + " : ");
					System.out.print(esvo.getComm() + " : ");
					System.out.println(esvo.getDeptno());			
				}		
			}
		}
		
		if (2 == n) {
			System.out.println(n + " 사번 검색을 선택 했습니다 >>> : ");
			
			Scanner sc2 = new Scanner(System.in);
			String empno = sc2.next();
			
			EmpSearchScr es2 = new EmpSearchScr();
			ArrayList<EmpSearchVO> aList = es2.empSelectEmpno(empno);
			
			if (aList !=null && aList.size() > 0) {

				for (int i=0; i < aList.size(); i++) {
					EmpSearchVO esvo = aList.get(i);					
					System.out.print(esvo.getEmpno() + " : ");
					System.out.print(esvo.getEname() + " : ");
					System.out.print(esvo.getJob() + " : ");					
					System.out.print(esvo.getHiredate() + " : ");
					System.out.println(esvo.getDeptno());			
				}		
			}
		}
		
		if (3 == n) {
			System.out.println(n + " 이름 검색을 선택 했습니다 >>> : ");
			
			System.out.println("이름을 입력하시오 >>> : " );
			Scanner sc3 = new Scanner(System.in);
			String ename = sc3.next();
			System.out.println("입력한 이름은 >>> : " + ename);
			
			EmpSearchScr es3 = new EmpSearchScr();
			ArrayList<EmpSearchVO> aList = es3.empSelectEname(ename);
			
			if (aList !=null && aList.size() > 0) {

				for (int i=0; i < aList.size(); i++) {
					EmpSearchVO esvo = aList.get(i);					
					System.out.print(esvo.getEmpno() + " : ");
					System.out.print(esvo.getEname() + " : ");
					System.out.print(esvo.getJob() + " : ");					
					System.out.print(esvo.getHiredate() + " : ");
					System.out.println(esvo.getDeptno());			
				}		
			}
		}
		
		if (4 == n) {
			System.out.println(n + " 사번 이름 검색을 선택 했습니다  >>> : ");
			
			Scanner sc4= new Scanner(System.in);
			String empno = sc4.next();
			String ename = sc4.next();
			
			EmpSearchScr es4 = new EmpSearchScr();
			ArrayList<EmpSearchVO> aList = es4.empSelectEmpnoEname(empno, ename);
			
			if (aList !=null && aList.size() > 0) {

				for (int i=0; i < aList.size(); i++) {
					EmpSearchVO esvo = aList.get(i);					
					System.out.print(esvo.getEmpno() + " : ");
					System.out.print(esvo.getEname() + " : ");
					System.out.print(esvo.getJob() + " : ");					
					System.out.print(esvo.getHiredate() + " : ");
					System.out.println(esvo.getDeptno());			
				}		
			}
		}
		
		if (5 == n) {
			System.out.println(n + " 직책 검색을 선택 했습니다 >>> : ");
			
			Scanner sc5 = new Scanner(System.in);
			String job = sc5.next();
			
			EmpSearchScr es5 = new EmpSearchScr();
			ArrayList<EmpSearchVO> aList = es5.empSelectJob(job);
			
			if (aList !=null && aList.size() > 0) {

				for (int i=0; i < aList.size(); i++) {
					EmpSearchVO esvo = aList.get(i);					
					System.out.print(esvo.getEmpno() + " : ");
					System.out.print(esvo.getEname() + " : ");
					System.out.print(esvo.getJob() + " : ");					
					System.out.print(esvo.getHiredate() + " : ");
					System.out.println(esvo.getDeptno());			
				}		
			}
		}
		
		if (6 == n) {
			System.out.println(n + " 날짜 검색을 선택했습니다 >>> : ");
			System.out.println("날짜 형식은 YYYYMMDD 입니다. >>> : ");

			Scanner sc6 = new Scanner(System.in);
			String fromdate = sc6.next();
			System.out.println("검색할 from 날짜 >>> : " + fromdate);
			String todate = sc6.next();
			System.out.println("검색할 to 날짜 >>> : " + todate);

			// from > to 비교
			if (DateUtil.fromtoDate(fromdate, todate)) return;

			EmpSearchScr es6 = new EmpSearchScr();
			
			ArrayList<EmpSearchVO> aList = es6.empSelectHiredate(fromdate, todate);

			if (aList !=null && aList.size() > 0) {

				for (int i=0; i < aList.size(); i++) {
					EmpSearchVO esvo = aList.get(i);					
					System.out.print(esvo.getEmpno() + " : ");
					System.out.print(esvo.getEname() + " : ");
					System.out.print(esvo.getJob() + " : ");					
					System.out.print(esvo.getHiredate() + " : ");
					System.out.println(esvo.getDeptno());
				}						
			}
		}
		
	}
}

5교시 (14:30-15:20)

  • EmpSearchScr - while 넣어서 프로그램 종료
package a.b.c.emp.search.scr;

import java.util.ArrayList;
import java.util.Scanner;

import a.b.c.common.DateUtil;
import a.b.c.emp.search.service.EmpSearchService;
import a.b.c.emp.search.service.EmpSearchServiceImpl;
import a.b.c.emp.search.vo.EmpSearchVO;

public class EmpSearchScr {

	// 화면과 서비스를 연결하는 함수하는 함수들 <-- 콘트롤러 
	
	// 전체 검색
	public ArrayList<EmpSearchVO> empSelectAll() {
		System.out.println("EmpSearchScr.empSelectAll() 함수 시작 >>> : ");
		
		EmpSearchService es = new EmpSearchServiceImpl();
		ArrayList<EmpSearchVO> aList = es.empSelectAll();
		
		return aList;
	}
	
	// 사번 검색
	public ArrayList<EmpSearchVO> empSelectEmpno(String empno) {
		System.out.println("EmpSearchScr.empSelectEmpno() 함수 시작 >>> : ");

		EmpSearchService es = new EmpSearchServiceImpl();
		
		// VO 에 검색 키워드 사번을 세팅한다. 
		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setEmpno(empno);
		
		ArrayList<EmpSearchVO> aList = es.empSelectEmpno(evo);
		
		return aList;
	}

	// 이름 검색
	public ArrayList<EmpSearchVO> empSelectEname(String ename){
		System.out.println("EmpSearchScr.empSelectEname() 함수 시작 >>> : ");
		System.out.println("EmpSearchScr.empSelectEname() ename >>> : " + ename);
		
		EmpSearchService es = new EmpSearchServiceImpl();
		
		// VO 에 검색 키워드 사번을 세팅한다. 
		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setEname(ename);
		System.out.println("EmpSearchScr.empSelectEname() evo.getEname() >>> : " + evo.getEname());
		
		ArrayList<EmpSearchVO> aList = es.empSelectEname(evo);
		
		return aList;
	}
	
	// 사번 이름 검색
	public ArrayList<EmpSearchVO> empSelectEmpnoEname(String empno, String ename) {		
		System.out.println("EmpSearchScr.empSelectEmpnoEname() 함수 시작 >>> : ");
		
		EmpSearchService es = new EmpSearchServiceImpl();
		
		// VO 에 검색 키워드 사번을 세팅한다. 
		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setEmpno(empno);
		evo.setEname(ename);
		
		ArrayList<EmpSearchVO> aList = es.empSelectEmpnoEname(evo);
		
		return aList;
	}
	
	// 직책 검색
	public ArrayList<EmpSearchVO> empSelectJob(String job) {	
		System.out.println("EmpSearchScr.empSelectJob() 함수 시작 >>> : ");
		
		EmpSearchService es = new EmpSearchServiceImpl();
		
		// VO 에 검색 키워드 사번을 세팅한다. 
		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setJob(job);
		
		ArrayList<EmpSearchVO> aList = es.empSelectJob(evo);
		
		return aList;
	}

	// 날짜 검색
	public ArrayList<EmpSearchVO> empSelectHiredate(String fromdate, String todate) {
		System.out.println("EmpSearchScr.empSelectHiredate() 함수 시작 >>> : ");

		EmpSearchService es = new EmpSearchServiceImpl();

		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setFromdate(fromdate);
		evo.setTodate(todate);

		ArrayList<EmpSearchVO> aList = es.empSelectHiredate(evo);

		return aList;
	}

	public static void main(String[] args) {
		System.out.println("EmpSearchScr.main() 함수 시작 >>> : ");
		
		Scanner sc = null;

		try {

			while (true) {

				System.out.println("검색한 번호는 			\n"
									+ "1. 전체검색 		\n"
									+ "2. 사번 검색 		\n"
									+ "3. 이름 검색 		\n"
									+ "4. 사번, 이름 검색 	\n"
									+ "5. 직책 검색 		\n"
									+ "6. 날짜 검색 		\n");
				sc = new Scanner(System.in);
				int n = sc.nextInt();
				
				if (9 == n) {
					System.out.println("프로그램을 종료합니다. >>> : ");
					System.exit(0);
				}
			
				while (true) {
					if (1 == n) {
						System.out.println(n + " 전체 검색을 선택 했습니다 >>> : ");
					
						EmpSearchScr es1 = new EmpSearchScr();
						ArrayList<EmpSearchVO> aList = es1.empSelectAll();
						
						if (aList !=null && aList.size() > 0) {

							for (int i=0; i < aList.size(); i++) {
								EmpSearchVO esvo = aList.get(i);
								System.out.print(esvo.getEmpno() + " : ");
								System.out.print(esvo.getEname() + " : ");
								System.out.print(esvo.getJob() + " : ");
								System.out.print(esvo.getMgr() + " : ");
								System.out.print(esvo.getHiredate() + " : ");
								System.out.print(esvo.getSal() + " : ");
								System.out.print(esvo.getComm() + " : ");
								System.out.println(esvo.getDeptno());			
							}		
						}
					}
					
					if (2 == n) {
						System.out.println(n + " 사번 검색을 선택 했습니다 >>> : ");
						
						Scanner sc2 = new Scanner(System.in);
						String empno = sc2.next();
						
						EmpSearchScr es2 = new EmpSearchScr();
						ArrayList<EmpSearchVO> aList = es2.empSelectEmpno(empno);
						
						if (aList !=null && aList.size() > 0) {

							for (int i=0; i < aList.size(); i++) {
								EmpSearchVO esvo = aList.get(i);					
								System.out.print(esvo.getEmpno() + " : ");
								System.out.print(esvo.getEname() + " : ");
								System.out.print(esvo.getJob() + " : ");					
								System.out.print(esvo.getHiredate() + " : ");
								System.out.println(esvo.getDeptno());			
							}		
						}
					}
					
					if (3 == n) {
						System.out.println(n + " 이름 검색을 선택 했습니다 >>> : ");
						
						System.out.println("이름을 입력하시오 >>> : " );
						Scanner sc3 = new Scanner(System.in);
						String ename = sc3.next();
						System.out.println("입력한 이름은 >>> : " + ename);
						
						EmpSearchScr es3 = new EmpSearchScr();
						ArrayList<EmpSearchVO> aList = es3.empSelectEname(ename);
						
						if (aList !=null && aList.size() > 0) {

							for (int i=0; i < aList.size(); i++) {
								EmpSearchVO esvo = aList.get(i);					
								System.out.print(esvo.getEmpno() + " : ");
								System.out.print(esvo.getEname() + " : ");
								System.out.print(esvo.getJob() + " : ");					
								System.out.print(esvo.getHiredate() + " : ");
								System.out.println(esvo.getDeptno());			
							}		
						}
					}
					
					if (4 == n) {
						System.out.println(n + " 사번 이름 검색을 선택 했습니다  >>> : ");
						
						Scanner sc4= new Scanner(System.in);
						String empno = sc4.next();
						String ename = sc4.next();
						
						EmpSearchScr es4 = new EmpSearchScr();
						ArrayList<EmpSearchVO> aList = es4.empSelectEmpnoEname(empno, ename);
						
						if (aList !=null && aList.size() > 0) {

							for (int i=0; i < aList.size(); i++) {
								EmpSearchVO esvo = aList.get(i);					
								System.out.print(esvo.getEmpno() + " : ");
								System.out.print(esvo.getEname() + " : ");
								System.out.print(esvo.getJob() + " : ");					
								System.out.print(esvo.getHiredate() + " : ");
								System.out.println(esvo.getDeptno());			
							}		
						}
					}
					
					if (5 == n) {
						System.out.println(n + " 직책 검색을 선택 했습니다 >>> : ");
						
						Scanner sc5 = new Scanner(System.in);
						String job = sc5.next();
						
						EmpSearchScr es5 = new EmpSearchScr();
						ArrayList<EmpSearchVO> aList = es5.empSelectJob(job);
						
						if (aList !=null && aList.size() > 0) {

							for (int i=0; i < aList.size(); i++) {
								EmpSearchVO esvo = aList.get(i);					
								System.out.print(esvo.getEmpno() + " : ");
								System.out.print(esvo.getEname() + " : ");
								System.out.print(esvo.getJob() + " : ");					
								System.out.print(esvo.getHiredate() + " : ");
								System.out.println(esvo.getDeptno());			
							}		
						}
					}
					
					if (6 == n) {
						System.out.println(n + " 날짜 검색을 선택했습니다 >>> : ");
						System.out.println("날짜 형식은 YYYYMMDD 입니다. >>> : ");

						Scanner sc6 = new Scanner(System.in);
						String fromdate = sc6.next();
						System.out.println("검색할 from 날짜 >>> : " + fromdate);
						String todate = sc6.next();
						System.out.println("검색할 to 날짜 >>> : " + todate);

						// from > to 비교
						if (DateUtil.fromtoDate(fromdate, todate)) return;

						EmpSearchScr es6 = new EmpSearchScr();
						ArrayList<EmpSearchVO> aList = es6.empSelectHiredate(fromdate, todate);

						if (aList !=null && aList.size() > 0) {

							for (int i=0; i < aList.size(); i++) {
								EmpSearchVO esvo = aList.get(i);					
								System.out.print(esvo.getEmpno() + " : ");
								System.out.print(esvo.getEname() + " : ");
								System.out.print(esvo.getJob() + " : ");					
								System.out.print(esvo.getHiredate() + " : ");
								System.out.println(esvo.getDeptno());
								
							}
						}
						
					break;
					}
				}
			} 
		} catch (Exception e) {
			System.out.println("에러가 >>> : " + e);
		} finally {
			if (sc !=null) sc.close();
		}
	} // end of main()
} // end of EmpSearchScr class

6교시 (15:30-16:20)

  • [교재 310p] 데이터 정의어
    • 314p CREATE ~ AS 구문: 단, 오브젝트(INDEX)는 복사가 되지 않음 작성
    /*
    SQL Structured Query Language
    
    DQL Data Query Language 테이블의 데이터를 조회, 검색
        SELECT
    
    DML Data Manipulation Language 테이블의 데이터를 저장, 수정, 삭제
        INSERT, UPDATE, DELETE
        DML 쿼리는 트랜잭션을 처리해야 한다.
        1. 메모리에 적재된다.
        2. ROLLBACK : 메모리에 적재된 내용을 삭제한다.
        3. COMMIT: 메모리에 적재된 내용을 파일에 적재한다.
        4. 외부 응용프로그램에서는 테이블 내용 중 파일에 적재된 내용만 조회가 가능하다.
    
    DDL Data Definition Language 테이블을 포함한 여러 객체를 생성, 수정, 삭제
        CREATE, ALTER, DROP
    
    TCL Transaction Control Language 트랜잭션 데이터의 영구 저장, 취소 등
        COMMIT, ROLLBACK, SAVEPOINT
    
    DCL Data Control Language 데이터 사용 권한 부여 및 취소
        GRANT, REVOKE
    */
    
    -- DDL Data Definition Language 테이블을 포함한 여러 객체를 생성, 수정, 삭제
    -- CREATE, ALTER, DROP
    
    -- 테이블 만들기
    /*
    CREATE TABLE 계정. 테이블 이름 (
         컬럼명1 데이터타입1(사이즈)
        ,컬럼명2 데이터타입2(사이즈)
        ,컬럼명3 데이터타입3(사이즈)
        ...
        ,컬럼명N 데이터타입N(사이즈)
    );
    */
    
    /*
    스코트 계정에 테이블 이름이 TEST_T1 테이블을 생성하시오
    컬럼 4개이다.
    첫 번째 컬럼의 이름은 TC1이고 데이터 타입은 바차2이고 사이즈는 10이다.
    두 번째 컬럼의 이름은 TC2이고 데이터 타입은 바차2이고 사이즈는 20이다.
    세 번째 컬럼의 이름은 TC3이고 데이터 타입은 넘버이고 사이즈는 기본값이다.
    세 번째 컬럼의 이름은 TC4이고 데이터 타입은 DATE이다. DATE 타입은 사이즈를 적지 않는다.
    */
    
    -- CREATE TABLE 명령어 : 데이터베이스 엔진에게 테이블 공간은 만들어주세요 
    -- CREATE TABLE SCOTT.TEST_T1 : 데이터베이스 엔진에게 스코드 계정에다가 TEST_T1 이라는 테이블을 만들어 주세오 
    
    CREATE TABLE SCOTT.TEST_T1 (
         TC1 VARCHAR2(10)
        ,TC2 VARCHAR2(20)
        ,TC3 NUMBER
        ,TC4 DATE
    );
    
    -- CREATE TABLE SCOTT.TEST_T1
    
    SELECT * FROM TAB;
    DESC TEST_T1;
    
    /*
    스코트 계정에 테이블 이름이 TEST_T2 테이블을 생성하시오
    컬럼 3개이다.
    첫 번째 컬럼의 이름은 TC2_1이고 데이터 타입은 넘버이고 소수점 둘째자리까지이다.
    두 번째 컬럼의 이름은 TC2_2이고 데이터 타입은 바차2이고 사이즈는 30이다.
    세 번째 컬럼의 이름은 TC2_3이고 데이터 타입은 DATE이다. DATE 타입은 사이즈를 적지 않는다.
    */
    CREATE TABLE SCOTT.TEST_T2 (
         TC2_1 NUMBER(7, 2)
        ,TC2_2 VARCHAR(30)
        ,TC2_3 DATE
    );
    
    SELECT * FROM TAB;
    
    SELECT * FROM TEST_T2;
    -- 테이블 이름 변경
    -- RENAME TEST_2 TO TEST_T2;
    
    CREATE TABLE SCOTT.TEST_T3 (
        T_NUM VARCHAR(20)PRIMARY KEY
        ,T_ID VARCHAR(20) NOT NULL
        ,T_PW VARCHAR(20) NOT NULL
        ,T_NAME VARCHAR(50)
        ,T_TEL VARCHAR(16)
        ,T_HP VARCHAR(16)
        ,T_ADDR VARCHAR(200)
        ,T_EMAIL VARCHAR(100) NOT NULL
        ,T_INSERTDATE DATE
        ,T_UPDATEDATE DATE
    );
    
    SELECT * FROM TAB;
    DESC TEST_T3;
    
    -- CREAT TABLE ~ AS 구문 : 기존 테이블을 이용해서 테이블 만드는 것 
    -- 기존 테이블에서 순수하게 컬럼 만 또는 컬럼 && 데이터만 복사하는 것이다.
    -- WHERE 1=1, WHERE 1=2
    -- 단 오브젝트는 복사가 되지 않음 
    -- 오브젝트 : PRIMARY KEY, INDEX ..... etc 
    CREATE TABLE EMPT_T1 AS
    SELECT * FROM EMP WHERE 1=2;
    
    SELECT * FROM EMP_T1;
    
    CREATE TABLE EMP_T2 AS 
    SELECT * FROM EMP WHERE 1=1;
    
    SELECT * FROM EMP_T2;
    

7교시 (16:30-17:20)

DDL

  • 318p 오라클에서 테이블에 컬럼을 추가하면 기존 컬럼의 맨 뒤에 컬럼이 생성된다. 작성
-- 테이블 삭제
DROP TABLE TEST_T1;
-- Table TEST_T1이(가) 삭제되었습니다.

SELECT * FROM TAB;

-- 테이블 변경
SELECT * FROM TAB;

ALTER TABLE-- 테이블 삭제
DROP TABLE TEST_T1;
-- Table TEST_T1이(가) 삭제되었습니다.

SELECT * FROM TAB;
SELECT * FROM TEST_T2;
DESC TEST_T2;

-- 테이블에 컬럼 추가
-- 오라클에서 테이블에 컬럼을 추가하면 기존 컬럼의 맨 뒤에 컬럼이 생성된다.
-- TEST_T2 테이블의 데이터타입이 VARCHAR2이고 사이즈가 100DLS TT 컬럼을 추가하도록 변경
ALTER TABLE TEST_T2
ADD TT VARCHAR2(100);
SELECT * FROM TEST_T2;
DESC TEST_T2;

-- 테이블 컬럼 이름 변경
ALTER TABLE TEST_T2
RENAME COLUMN TT TO TT_RENAME;
SELECT * FROM TEST_T2;
DESC TEST_T2;

-- 테이블 컬럼 사이즈 변경
ALTER TABLE TEST_T2
MODIFY TT_RENAME VARCHAR2(50);
SELECT * FROM TEST_T2;
DESC TEST_T2;

-- 테이블 컬럼 삭제
ALTER TABLE TEST_T2
DROP COLUMN TT_RENAME;
SELECT * FROM TEST_T2;
DESC TEST_T2;
  • DML
    • [교재 267p] 테이블에 데이터 추가하기
    -- DML Data Manipulation Language 테이블의 데이터를 저장, 수정, 삭제
    --    INSERT, UPDATE, DELETE
    --    DML 쿼리는 트랜잭션을 처리해야 한다.
    SELECT * FROM TAB;
    DESC TEST_T2;
    DESC TEST_T3;
    DESC EMP_T1;
    DESC EMP_T2;
    
    -- 오라클 데이터베이스에서 INSERT 문을 실행하면 두 가지 동작을 해야 한다.
    -- INSERT INTO ~ VALUES 구문으로 인서트를 요청하면
    -- 1. 먼저 메모리에 내용을 저장한다.
    -- 이 상태에서 SELECT를 할 수 있다.
    
    -- COMMIT 명령을 수행하면
    -- 2. 파일에 영구적으로 내용을 저장한다.
    -- 외부 프로그램(자바)에서는 파일에 있는 내용만 조회가 가능하다.
    
    -- 테이블 TEST_T2에서 ISUD (CRUD) 하기
    -- INSERT INTO 테이블 VALUES ();
    -- UPDATE 테이블 SET 컬럼;
    -- DELETE 테이블
    INSERT INTO TEST_T2 (TC2_1, TC2_2, TC2_3)
                 VALUES (1.3, '바차2 문자열', SYSDATE); 
    -- 1 행 이(가) 삽입되었습니다.
    SELECT * FROM TEST_T2; -- COMMIT 전에는 메모리에 있는 것을 조회 한 것이다. 
    COMMIT;
    -- 커밋 완료.
    SELECT * FROM TEST_T2;
    
    ROLLBACK;
    -- 롤백 완료.
    SELECT * FROM TEST_T2;
    -- 1.3	바차2 문자열	22/03/14
    -- ROLLBACK을 하면 바로 전에 입력했던 내용이 삭제되고
    -- COMMIT된 내용만 조회가 된다.
    
    -- UPDATE 테이블 SET 컬럼;
    -- DELETE 테이블;
    

8교시 (17:30-18:30)

  • 상담
    • 앞으로 2주간 상담자 이외에는 자습 예정

Notes

  • 이번 주 웹(jsp 연동) 들어감 HTML >>> 돌아가면서 3명씩 조짜서 무언가 만들기
  • 로그 찍기가 중요

728x90