본문 바로가기

[ORACLE 10일차]Subquery (1) ◈ Main query 와 Subquery Subquery란 SELECT문 내에 다시 SELECT 문을 사용하는 SQL 문이다.Subquery의 형태는 FROM 구에 SELECT 문을 사용하는 인라인 뷰(View)와 SELECT문에 Subquery를 사용하는 스칼라 서브쿼리 등이 있다.Where구에 SELECT문을 사용하면 서브쿼리라고 한다. SELECT * FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM EMP WHERE DEPTNO=10); 위의 예에 WHERE 구에 있는 SELECT문은 서브쿼리이고, 괄호 내에 SELECT문을 사용한다. 서브쿼리 밖에 있는 SELECT문은 메인쿼리(Main Query)이다. SELECT * FROM (SELECT ROWNUM NUM, ..
[ORACLE 9일차] UNION, MINUS, Connect by ◈◈ UNION 이 연산은 두 개의 테이블을 하나로 만드는 연산이다.즉, 2개의 테이블을 하나로 합치는 것. 주의사항은 두 개의 테이블의 칼럼 수, 칼럼의 데이터 형식 모두가 일치해야 한다. 만약 두 개의 테이블에 UNION 연산이 사용될 때 칼럼 수 혹은 데이터 형식이 다르면 오류가 발생한다.UNION 연산은 두 개의 테이블을 하나로 합치며 중복된 데이터를 제거한다.그래서 UNION은 정렬(SORT) 과정을 발생시킨다. ◈ UNION ALL 이 연산도 두 개의 테이블을 하나로 합치는 것.UNION 처럼 중복을 제거하거나 정렬을 유발하지 않음. 아래의 예를 보고 이해하자!!! SQL> SELECT * FROM EMP; SQL> SELECT DEPTNO FROM EMP UNION SELECT DEPTNO ..
[ORACLE 8일차] JOIN ◈ 등가조인 (=EQUI 조인은 "="을 사용해서 두 테이블을 연결한다.) 조인은 여러 개의 릴레이션을 사용하여 새로운 릴레이션을 만드는 과정이다.조인의 가장 기본은 교집합을 만드는 것.두 개의 테이블 간에 일치하는 것을 조인한다. SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO; 다음과 같이 조인하여 사용할 수 있다. 등가조인에서 select * from emp,dept where emp.deptno=dept.deptno and emp.ename LIKE '고%'; 와 같이 where절에 다음과 같이 and를 추가할 수 있다. 등가조인을 한 후에 실행계획을 확인해서 내부적으로 두 개의 테이블을 어떻게 연결했는지 확인할 수 있다.위의 예에서 보면 dept ..
[ORACLE 7일차] TCL ◈ COMMIT커밋은 INSERT, UPDATE, DELETE문으로 변경한 데이터를 데이터베이스에 반영한다.변경 전 이전 데이터는 잃어버린다. 즉, A값을 B로 변경하고 COMMIT을 하면 A값은 잃어버린다.COMMIT이 완료되면 다른 모든 데이터베이스 사용자는 변경된 데이터를 볼 수 있다.COMMIT을 실행하면 하나의 트랜잭션 과정을 종료한다. SQL> UPDATE EMP SET ~~SQL> commit; commit을 하면 이전의 삽입, 수정, 삭제 내용이 모두 데이터베이스에 저장된다. ◈ ROLLBACKROLLBACK을 실행하면 데이터에 대한 변경 사용을 모두 취소하고 트랜잭션을 종료한다.SELECT, UPDATE, DELETE문의 모든 작업을 취소한다. 단, 이전에 COMMIT한 곳까지만 복구한다..
[ORACLE 6일차] DCL ◈ GRANT 데이터베이스 사용자에게 권한을 부여한다.데이터베이스 사용을 위해서는 권한이 있어서 연결, 입력, 수정, 삭제, 조회를 할 수 있다. 예를 들어, GRANT SELECT,INSERT,UPDATE,DELETE ON EMP TO JUNWOO; 준우에게 다음과 같은 권한을 부여한다라는 DCL이다.일반적으로, 신입에게는 DELETE 권한이 없고, 입력 횟수도 제한이 있다고 한다. - WITH GRANT OPTION 예를 들어,GRANT SELECT, INSERT ON EMP TO JUNWOO WITH GRANT OPTION; 준우라는 사용자도 GRANT를 할 수 있다. - WITH ADMIN OPTION ; 테이블에 대한 모든 권한을 부여한다. 권한을 A 사용자가 B에 부여하고 B가 다시 C에 부여..
[ORACLE 5일차] DML (4) ◈ SELECT문 실행 순서 SQL의 실행 순서는 FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY 순으로 진행된다. * 형변환 ; 두 개의 데이터의 데이터 타입이 일치하도록 변환하는 것.- 명시적(Explicit) 형변화과 암시적(Implicit) 형변환 * 명시적 형변환 : 개발자가 SQL을 사용할 때 형변환 함수를 사용하는 것.* 암시적 형변환 : 개발자가 하지 않는 경우, DBMS에서 자동으로 형변환을 하는것을 의미한다. ◈ DUAL 테이블 : 오라클 데이터베이스에 의해서 자도으로 생성되는 테이블이다.오라클 데이터베이스 사용자가 임시로 사용할 수 있는 테이블로 내장형 함수를 실행할 때도 사용할 수 있다.오라클 데이터베이스의 모든 사용자가 사용할 수 있다. ◈ 날..
[ORACLE 4일차] DML (3) * 집계함수 COUNT() 행 수를 조회한다.SUM() 합계를 계산한다.AVG() 평균을 계산한다.MAX()와 MIN() 최대값과 최소값을 계산한다. STDDEV() 표준편차를 계산한다.VARIAN() 분산을 계산한다. * COUNT 함수 : 행수를 계산하는 함수이다. * COUNT(*)은 NULL 값을 포함한 모든 행수를 계산한다 SELECT COUNT(*) FROM EMP; 속성으로 COUNT(*) 이 나오고, 그 밑에는 14가 출력된다. 즉, 총 14개의 행이 조회되었다. * 특정 칼럼의 행 수 COUNT(칼럼)으로 하면 NULL 값을 제외한 행 수를 계산한다.SELECT COUNT(MGR) FROM EMP; 여기서 MGR 칼럼을 한 개의 NULL을 가지고 있다.NULL이 제외되고 계산된다. * G..
[ORACLE 3일차] DML (2) * Order byOrder by가 정렬을 하는 시점은 모든 실행이 끝난 후에 개발자에게 데이터를 출력화해 주기 바로 전이다.정렬을 하기 때문에 데이터베이스 메모리를 많이 사용하게 된다. 즉, 대량의 데이터를 정렬하게 되면 정렬로 인해 성능저하가 발생한다. 정렬을 회피하기 위해 인덱스(index)를 생성할 때 사용자가 원하는 형태로 오름차순 혹은 내림차순으로 생성해야 한다.특별한 지정이 없으면 Order by는 오름차순으로 정렬한다. 예를 들어, SELECT * FROM EMP ORDER BY ENAME, SAL DESC;ENAME으로 오름차순으로 정렬하고 SAL로 내림차순으로 정렬한다. SELECT DISTINCT DEPTNO FROM EMP ORDER BY DEPTNO;모든 부서 번호가 중복되게 나오..