본문 바로가기

Programming83

[Oracle] 08. 다양한 숫자함수(ROUND, TRUNC, MOD, POWER, CELL, FLOOR, ABS, SQRT, SIGN) ROUND n자리까지 반올림한다 ROUND(m,n) ROUND(123.456, 3) → 123.456 TRUNC n자리 미만을 절삭한다 TRUNC(m,n) TRUNC(123.4567, 3) → 123.456 MOD m을 n으로 나눈 나머지 계산한다 MOD(m,n) MOD(10,4) → 2 POWER m의 n승을 계산한다 POWER(m,n) POWER(2,4) → 16 CELL m보다 큰 가장 작은 정수를 찾는다 CELL(m) CELL(3.34) → 4 FLOOR m보다 작은 가장 큰 정수를 찾는다 FLOOR(m) FLOOR(2.34) → 2 ABS m의 절대값을 계산한다 ABS(m) ABS(-4) → 4 SQRT m의 제곱근을 계산한다 SQRT(m) SQRT(9) → 3 SIGN m이 음수일 때 -1, .. 2019. 4. 23.
[Oracle] 07. Using, On, 등가 조인과 비등가 조인 Using 2개의 다른 테이블을 조인 할 때 2개의 테이블이 공통적으로 가지고 있는 컬럼을 조인조건으로 조인을 수행한다. 그런데 만약 이름과 타입이 모두 같지만 내용은 전혀 다른 컬럼이 존재한다면 어떻게 될까? 예를들어 dept 테이블과 emp 테이블에 동일하게 VACHAR2 타입을 갖는 name이라는 컬럼이 있다. 그러나 이 컬럼의 내용은 각각 부서이름과 직원이름으로 전혀 다른 내용을 가지고 있는 컬럼이다. 여기서 일반적인 조인조건을 하게 되면, 물론 원하는 결과를 얻을 수 없다. 이 때 정확한 조인을 위해 사용하는 것이 Using절이다. SELECT 컬럼,... FROM 테이블1 JOIN 테이블2 USING (조인_컬럼) JOIN 테이블3 USING (조인_컬럼)... // Using절을 이용해 화학.. 2019. 4. 22.
[Oracle] 06. 자기참조조인(Self Join), 외부조인(Outer Join), 자연조인(Natural Join) 자기 참조 조인(Self Join) 동일한 테이블에 다른 별명을 붙여 마치 여러 개의 테이블 간에 조인하는 것처럼 만들어, 자기 자신을 참조하는 조인 방법. 테이블에 반드시 별명을 붙여야 함으로 '별명을 이용한 조인'이라고 부른다. 예제1) 사원을 관리하는 관리자 검색 각 사원을 담당하는 관리자가 존재하는데, 그 관리자는 사원의 담당자이자 동시에 회사의 입장에서는 하나의 사원임으로 사원 테이블에서 자기 참조를 이용해 검색할 수 있다. SELECT e1.eno 사번, e1.ename 이름, e2.ename 관리자 FROM emp4 e1, emp4 e2 WHERE e1.mgr = e2.eno; 예제2) 학생 중 동명이인 검색 같은 학생 테이블 안에서 이름은 같으나 학번은 다른 학생을 검색해야 하므로 학생 테.. 2019. 4. 22.
[Oracle] 05. 잘못된 조인 문장 예(카티션 프로덕트, 테이블 별명 누락) 분산된 테이블로부터 필요한 정보를 가져오는 조인을 수행할 때는 반드시 '조인 조건'이 있어야 한다. 조인조건이 없는 조인 문장은 교차 조인이 되어 모든 행이 1:1로 대응(카티션 프로덕트: Cartisian Product)되는 행렬이 검색된다. 이는 잘못된 결과값이다. // 조인 조건이 없는 교차 조인을 수행한 예시 SELECT loc 근무지, eno 사번, ename 사원명, d.dno 부서번호, dname 부서명 FROM emp e, dept d FROM절을 쓸때는 테이블 명 뒤에 별명(약자)을 붙혀서 보다 간결한 쿼리를 짤 수 있는데, FROM emp e, dept d; 라고 하면 '지금부터 emp를 e라고 부를거야~'라고 한다는 의미이다. 따라서 SELECT, WHERE절에서도 별명으로 해당 테이.. 2019. 4. 19.
[Oracle] 04. 다양한 연산자(AND, OR, NOT, LIKE, BETWEEN, IN) 관계 연산자 (AND, OR, NOT) 관계 연산자는 WHERE절에서 여러 개의 조건(AND, OR, NOT)을 동시에 이용할 때 사용된다. 복잡한 관계연산은 예상치 못한 결과를 발생시킬 수 있다. 그러므로 두 개 이상의 관계 연산을 이용할 때는 반드시 괄호를 이용해 연산의 우선순위를 SQL 작성자가 직접 결정해야 한다. 우선순위는 NOT > AND > OR 이다. //20번 부서 사원 중에 급여가 1500이상이고 개발 업무를 담당하는 사원과, //급여가 3000이상인 사원을 검색한다. SELECT * FROM emp WHERE (dno=20 AND sal >= 1500 AND job='개발') OR (sal >= 3000); LIKE 연산자 (WHERE 컬럼 LIKE '비교 문자열') WHERE절에 사.. 2019. 4. 18.
[Oracle] 03. 자주 쓰는 자료형(DataType) 문자 타입 VARCHAR2(n) : 가변길이 문자 타입(1 2019. 4. 18.
[Oracle] 02. 연결 연산자, 중복제거(DISTINCT), 정렬(ORDER BY) 연결연산자(||) 여러 데이터를 하나의 데이터로 합쳐 한번에 보여주고 싶을 때 사용한다. 컬럼과 컬럼을 연결 또는 컬럼과 리터럴(문자, 숫자, 날짜 등)을 연결할 수 있다. SELECT ename||'의 업무는 '||job||'입니다.' 직원업무 FROM emp; 단, 연결연산자는 사칙연산자보다 우선순위가 높기 때문에 연산 순서를 지정해주지 않으면 'Invalid Number Error'가 발생한다. 아래 예제는 문자열과 숫자열을 더하려고 했기 때문에 에러가 발생한 경우이다. //에러 발생 SELECT ename||' '||sal+10 FROM emp; //바른 사용 SELECT ename||' '||(sal+100) FROM emp; 중복제거(DISTINCT) SELECT [DISTINCT/ALL] 컬.. 2019. 4. 18.
[Oracle] 01. DESC, TAB, NVL DESC 컬럼명; 현재 스키마의 테이블 구조(이름, null, 데이터 타입) 검색 SELECT * FROM tab; 현재 계정의 테이블 목록(이름, 테이블, null)을 검색 NVL(컬럼명, 치환값) 컬럼이 null일 경우 치환값으로 교체하고, null이 아닐 경우 원래 값을 반환하는 내장 함수. 치환값은 컬럼 값의 데이터 타입과 일치해야 한다. SELECT eno 사번, ename 이름, sal 급여, comm 보너스, sal*12+comm FROM emp; SELECT eno 사번, ename 이름, sal*12+NVL(comm, 0) 연봉 FROM emp; 2019. 4. 17.
[Java] 14. Buffered Input/Output Stream, 일반 Stream과 속도 비교 파일 입출력(I/O) 자바에서 데이터 입출력은 Stream을 통해 이루어진다. 프로그램을 기준으로 들어오면 Input(읽기), 내보내면 Output(쓰기)로 방향을 결정하고, 데이터의 교환을 위해서는 Input과 Output을 모두 만들어야 한다. 입출력과 관련된 모든 작업은 java.io 패키지에서 제공하고 있다. Input/Output Stream 바이트 기반 입출력 클래스의 최상위 클래스이자 추상클래스이다. 입출력할 데이터가 OS와 JVM을 거쳐 메모리에 1byte씩 전달된다. 이는 마치 쇼핑몰에서 주문한 상품이 모든 지역의 구매자에게 하나하나씩 전달되는 것과 같다. Buffered Input/Output Stream 필터 클래스 중에 버퍼(Queue 구조로 되어있는 임시 저장소)를 제공하는 클래스.. 2019. 4. 5.