728x90

일단 해보는 코딩/Oracle SQL 22

[오라클/SQL] Transaction&LOCK, View 란 무엇인가?

Transaction Transaction이란 하나의 연관되어 완성되는 작업 단위이다. A가 자신의 A은행에서 B의 B은행에 계좌이체를 예로 보면 A의 은행에서 금액이 빠져나가고 B의 은행에 해당 금액이 입금되는 일련의 작업에서 A가 송금 프로세싱 끝에서 commit(실행)을 해주어야 B에게 완전히 입금된다. 중간에 오류가 있거나 A가 취소하면 A 은행에서 돈이 빠져나가서는 안 되고 B 은행에 입금되어서도 안 되는 무효처리가 되어야 한다. Oracle에서는 이런 DML이 정상적으로 실행되어도 트랜젝션은 계속 내부적으로 진행 중이다. 따라서 완전히 DML 과정을 종료시키려면 Commit(OR /) 해서 완전히 프로세스를 종료하거나, Rollback을 해서 전체 작업을 취소시켜 주어야 한다. Transact..

[오라클/SQL] GROUP BY (ROLLUP/CUBE), 계층적 질의

GROUP BY 함수 확장 GROUP BY ROLLUP() 과 GROUP BY CUBE() 함수가 있다. GROUP BY ROLLUP()은 그룹화 할 조건이 있으면 우측으로부터 하나씩 제외해 나아가면서 그 결과를 반환하는 기능을 한다. 직무별 평균급여와 부서별 평균 급여를 구하는데 사용될 수 있다. GROUP BY CUBE() 는 3차원 적인 분석을 가능하게 해주는 기능이다. 전체평균 급여,직무별 평균급여와 부서별 평균급여 대해서 부서별 평균급여를 함께 쿼리하게 해서 3차원적으로 작업을 수행시킬 수 있다. . Q. 부서명, 직무, 직무별 평균 급여와 부서별 평균급여를 보이시오. (ROLLUP, CUBE) select d.department_name, j.job_title, round(avg(salary)..

[오라클/SQL] 집합연산자(UNION/UNIONALL/INTERSECT/MINUS)

집합 연산자 두 테이블에 대해서 select문으로 각각 데이터를 조회해서 새로운 데이터로 가공하고 싶을 때 집합 연산자를 사용한다. 집합 연산자를 사용하기 위해서 두 테이블에서 selet 문의 컬럼_명, 컬럼_위치, 컬럼_수가 동일해야한다. 그렇지 않으면 'ORA-01789: 질의 블록을 부정확 한 수 의 결과 열을 가지고 있습니다' 와 같은 에러가 발생한다. 집합 연산자의 종류는 UNION(합) UNION ALL, INTERSECT(차), MINUS(감) 있다. SELECT 문에 집합 연산자의 문법 (UNION/UNION ALL/MINUS/INTERSECT) SELECT 필드이름 FROM 테이블이름 UNION/UNION ALL/MINUS/INTERSECT SELECT 필드이름 FROM 테이블이름 UNI..

[오라클/SQL] 다중/여러개 테이블 [ANSI, Orcle] JOIN 하기

Q. 두 'king' 사원의 salary(e), first_name(e), employee_id(e), job_title(jobs), department_name(departments)를 보이시오. -- [Oracle Join] select last_name, salary, employee_id, job_title, department_name from employees e, jobs j, departments d where e.job_id = j.job_id AND e.department_id = d.department_id AND last_name = 'King'; -- [ANSI JOIN] select last_name, salary, employee_id, job_title, department_..

[오라클/SQL] JOIN - INNER/OUTER/ON

JOIN JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해준다. 이러한 JOIN은 보통 SELECT 문과 함께 자주 사용된다. 종류 설명 (INNER) JOIN 두 테이블에서 값이 일치하는 레코드를 반환 OUTER JOIN 한 테이블있는 데이터 값이 다른 테이블에 하나도 나타나지 않는 경우 OUTER JOIN(외부 조인)를 사용 LEFT (OUTER) JOIN 왼쪽 테이블에서 모든 레코드를 반환하고, 오른쪽 테이블에서 일치하는 레코드를 반환 RIGHT (OUTER) JOIN 오른쪽 테이블에서 모든 레코드를 반환하고, 왼쪽 테이블에서 일치하는 레코드를 반환 FULL (OUTER) JOIN 쪽 또는 오른쪽 테이블의 모든 레코드를 반환 SELF JOI..

[오라클/SQL] 테이블 생성,변경,삭제하기

1.테이블 생성 create table empss(em(20), job_id varchar2(20),number); /* CREATE DATABASE 테이블_명 */ create table empss (emp_id number primary key, l_name varchar(20), job_id varchar2(20), hired number); 2. 테이블 항목 생성 /* 1. INSERT INTO 테이블_명(필드이름1, 필드이름2, 필드이름3, ...) VALUES (데이터값1, 데이터값2, 데이터값3, ...) 2. INSERT INTO 테이블_명 VALUES (데이터값1, 데이터값2, 데이터값3, ...) */ insert into empss values('001', 'lee', 'sales',..

[오라클/SQL] 정규 표현식

정규 표현식 숫자, 문자, 기호 등을 주어진 패턴으로 찾아내서 적용시키는 기법이다. 대부분 C, C++, ShellScript, Python, Java, ... 등의 프로그래밍 언어와 데이터 베이스의 PL/SQL사용된다. ^(~로 시작), $(~로 끝남) [a-z] -> a~z 중 하나, [a..f]-> a로 시작하고 f로 끝나는 총 4자리 문자, ^[a-f] -> a~f로 시작되지 않음, [^ps] -> p나 s로 시작 LIKE LIKE 연산자는 특정 패턴을 포함하는 데이터만을 검색하기 위해 사용한다. Q. Employees 테이블에서 'K'으로 시작하는 이름(Name) 출력하시오. SELECT * FROM EMmployees; WHERE last_Name LIKE 'K%'; REGEXP LIKE 연산..

[오라클/SQL] 함수 활용해보기(2)

+ 개별적인 salary와 부서별 평균 급료 avg(salary)를 함 께 사용할 수 없기 때문에 이를 분석함수를 통해서 avg(salary) over(partition by~)식으로 처리한다. 여기서 partition by는 group by와 유사한 의미이다. rank() 함수의 활용 rank() 함수는 순위를 표시하는데 정렬을 해야하므로 보통 뒤에 over(order by ~), within group(order by~)구문이 함께 오는 경우가 많다. Q. 급여가 10000 이상인 직원을 월급 내림차순으로 보이시오. select employee_id, salary, rank() over(order by salary DESC) "PERSONAL_SAL_RANK" from employees where s..

[오라클/SQL] 함수 활용해보기(1)

1. 숫자 함수 mod(m,n) round(m,n) trunc(m,n) width_bucket (expr,min,max,step) 2. 문자 함수 ㄱ. lower (char) ㄴ. substr(str, m, n) : m~n이 아니라 m부터 시작해서 +n ㄷ. lpad(expr, n, #) and rpad(expr, n, -) : 문자열이 지정된 n 보다 적을 때 빈 공간을 좌측에 #, 우측에 -로 채움 ㄹ. replace(str, 바뀔_문자, 바꿀_문자) ㅁ. ltrim(expr) and rtrim(expr) : 좌측과 우측에서 빈자리를 절삭 ㅂ. initcap(expr) : 첫번째 대문자, length(expr) : 문자열의 개수 ㅅ. instr(expr, char) :해당 expr에서 첫번째로 찾은 ..

728x90