Framework 란 ? 공통되는 / 반복되는 작업들을 미리 만들어 둔 프로그램 프로그램의 골격이 되는 기본 코드 소프트웨어 개발을 간소화하기 위해 개발됨 개발자는 프레임워크를 기반으로 소스코드를 작성하여 소프트웨어를 완성시키면 된다. Spring Framework 란 ? POJO 기반의 경량 컨테이너 POJO ( Plain Old Java Object ) 란 ? 평범한 구식 자바 객체 별도로 종속되지 않는 자바 객체를 통칭 EJB의 경우에는 implements, extends 를 사용하는 코드들이 많다. 그럴 경우에 빈 하나를 만들기위해 다양한 부모클래스를 알아야했고, 클래스 간의 의존도가 높아질 수 밖에 없다. POJO는 이러한 복잡한 것을 버리고, 간단한 자바 객체만을 가지고 일을 처리하자는 철학을..
프로젝트 협업을 할 때 버전관리를 위해 GitHub를 사용하고 있는데요, 서로 전혀 다른 부분을 수정했을 때는 충돌이 생기지 않지만, 같은 파일을 수정하는데 수정한 부분이 겹치는 경우, 병합할 때 충돌(CONFLICT)이 생기게 됩니다! 예제로 알아보기 가정 ) A와 B가 협업을 하고 있습니다. A는 자신이 수정한 파일을 master를 통해 push했습니다. B의 입장에서 merge하는 방법을 알아보겠습니다. 1. master에서 status를 확인합니다. 2. 새로운 branch를 생성하고 이동합니다. 3. 브랜치에 수정한 내용을 add , commit 해둡니다. 4. master로 다시 빠져나갑니다. 5. pull을 받습니다. (이 때 A가 수정하여 push했던 파일들이 들어오게 됩니다.) 6. 아까..
JDBC ( Java Database Connectivity ) 란 ? JAVA 프로그램에서 DB에 접근할 수 있게 해주는 Programming API 일관성 있는 방식으로 DB에 접근할 수 있는 API를 제공하는 클래스들 JDBC 동작 순서 JDBC Driver 연결 계정 연결 쿼리 준비 쿼리 실행 및 리턴 DB 연결 종료 각 DB와 JAVA를 연결하기 위한 JDBC Driver는 각 DBMS 벤더 별로 구현하여 jar 파일 형태로 제공하고 있습니다. JAVA에서 DBMS 연동에 필요한 메소드는 java.sql 패키지에서 제공하고 있습니다. Eclipse와 ORACLE을 연결해보도록 하겠습니다. 1. Java 프로젝트 생성하기 2. Java Build Path에 ojdbc.jar 파일 추가하기 기본적으..
집합 연산자 두 개 이상의 쿼리 결과를 하나로 결합하는 연산자 여러 개의 SELECT문을 하나로 연결합니다. 집합 연산자로 결합되는 결과의 컬럼은 데이터타입이 동일해야 합니다. UNION ( 합집합 ) 중복 제거 SELECT DEPTNO FROM DEPT UNION SELECT DEPTNO FROM EMP; UNION ALL ( 합집합 ) 중복 허용 SELECT DEPTNO FROM DEPT UNION ALL SELECT DEPTNO FROM EMP; INTERSECT ( 교집합 ) SELECT DEPTNO FROM DEPT INTERSECT SELECT DEPTNO FROM EMP; MINUS ( 차집합 ) SELECT DEPTNO FROM DEPT MINUS SELECT DEPTNO FROM EMP;
SUBQUERY ( 서브쿼리 ) 란 ? 하나의 SQL문 내에 또 다른 SQL문이 있는 쿼리문 전체 SQL문을 메인 쿼리라고 하며, 메인 쿼리에 종속된 내부 쿼리를 서브쿼리라고 합니다. 반드시 괄호 ( ) 안에 넣어 표현해야 합니다. 단일 행 서브쿼리 서브 쿼리의 결과가 1개의 행만 나오는 것 메인 쿼리의 WHERE절에서 단일 행 연산자 (=, , >, >=, ALL(SELECT SAL FROM EMP WHERE JOB='MANAGER'); EXISTS : 서브 쿼리의 데이터가 존재하는 지의 여부를 먼저 따지고, 존재하는 값들만 출력 /* 관리자로 등록되어 있는 사원들을 조회해보자. */ SELECT EMPNO, ENAME FROM EMP E WHERE EXISTS (SELECT EMPNO FROM EMP..
JOIN ( 조인 ) 이란 ? 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법 일반적으로 테이블의 식별값인 PRIMARY KEY와 테이블 간 공통값인 FOREIGN KEY를 사용하여 조인합니다. EQUI JOIN NON-EQUI JOIN SELF JOIN INNER JOIN CROSS JOIN OUTER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN EQUI JOIN (등가 조인) 컬럼값이 일치되는 행을 연결하여 결과 생성 가장 일반적으로 사용하는 '='에 의한 조인 /* EMP 테이블과 DEPT 테이블을 조인하여 직원들의 부서명을 조회해보자. */ SELECT E.EMPNO, E.ENAME, D.DNAME FROM EMP E, DEPT D WHERE..
ROWNUM 조회한 결과에 순위 매기기 예제로 이해하기 EMP 테이블에서 3번째로 월급이 높은 사원의 이름과 월급을 출력하고 싶다. 1. 먼저 월급이 높은 순서대로(내림차순) 정렬해보기 SELECT ENAME, SAL FROM EMP ORDER BY SAL DESC; 2. ROWNUM을 사용해서 출력해보기 (ORDER BY절을 사용했기 때문에 ROWNUM은 뒤섞여 나오게 됩니다.) SELECT ROWNUM, ENAME, SAL FROM EMP ORDER BY SAL DESC; 3. 따라서, 1번의 쿼리를 가상테이블로 만들어 ROWNUM을 새로 부여해줍니다. ROWNUM이 월급이 높은 순서대로 잘 주어졌습니다. SELECT ROWNUM, A.ENAME, A.SAL FROM (SELECT ENAME, SAL..
집계함수 이름 의미 COUNT 컬럼의 행 개수 SUM NULL을 제외한 모든 행의 합 AVG NULL을 제외한 모든 행의 평균 MAX NULL을 제외한 최대값 MIN NULL을 제외한 최소값 데이터 그룹화 GROUP BY 절 // 부서별 월급 총합을 구하자. SELECT DEPTNO, SUM(SAL) FROM EMP GROUP BY DEPTNO; // 직업 별 사원 수를 조회해보자. SELECT JOB, COUNT(JOB) FROM EMP GROUP BY JOB; HAVING 절 GROUP BY절에 조건을 주고 싶을 때 사용 집계함수를 사용해서 조건을 주고 싶을 때 (WHERE절에서는 집계함수를 사용할 수 없기 때문) // 부서별 월급 합계를 구하자. 단, 월급의 합계가 7000 이상인 부서만 출력하자...
날짜 함수 이름 의미 SYSDATE 현재 날짜와 시간 MONTHS_BETWEEN(날짜1, 날짜 2) 날짜1과 날짜2 사이의 개월 수 ADD_MONTHS(날짜, 더하려는 개월 수) 날짜에 개월 수를 더함 NEXT_DAY 주어진 날짜의 다음 날짜 LAST_DAY 주어진 날짜가 속한 달의 마지막 날짜 날짜 표현 형식 형식 설명 YYYY / YY / YEAR 년도 MONTH / MON / MM / RM 달 ( FMMM : 0 or 공백제거 / RM : 로마표기법 ) DDD / DD / D 일 ( DDD : 1년 기준 ) Q 분기 ( 1, 2, 3, 4 ) DAY / DY 요일 HH / HH24 12시간 / 24시간 AM / PM 오전 / 오후 MI 분 ( 0~59 ) SS 초 ( 0~59 ) SYSDATE SE..
DUAL 테이블 함수나 계산식을 테이블 생성 없이 실행해보기 위한 테이블 (테스트용) SELECT 20*30 FROM DUAL; 단일 행 함수 숫자 함수 이름 의미 ABS 절대값 ROUND(컬럼or숫자, 소숫점 자리지정) 지정한 자리에서 반올림 TRUNC(컬럼or숫자, 소숫점 자리지정) 지정한 자리에서 버림 MOD 나머지 값 CEIL 올림 FLOOR 버림 POWER(숫자1, 숫자2) 숫자1의 숫자2 제곱 ROUND(컬럼 OR 숫자, 소숫점 자리지정) / TRUNC(컬럼 OR 숫자, 소숫점 자리지정) 지정한 자리수에서 반올림 / 버림 소숫점 자리지정 : 지정하지 않으면 0 양수 : 소숫점 이하 자리 음수 : 소숫점 이상 자리 SELECT TRUNC(125.345, -1) FROM DUAL; SELECT R..