본문 바로가기

oracle/[SQL] SQL13

13장. 계층형 쿼리 (Hierarchical Query) - 화면에 출력할 때 상하 관계 표시, 명확하게 상하관계 표시- 계층 형 쿼리가 수행되는 순서① START WITH 절에 시작조건 검색② CONNECT BY 절에 연결조건 검색③ WHERE 절의 조건 검색- 대량의 데이터가 있을 경우 시간이 오래걸리므로 - start with, connect by, where 절의 컬럼에 반드시 인덱스가 적절히 설정되어 있어야 함 1. 계층형 쿼리 주요 문법 # prior 위치에 따른 결과 비교 2. CONNECT_BY_ISLEAF ( ) 함수- 중간지점의 데이터는 보지 않고 가장 마지막 지점의 데이터만 보고싶을 경우에 사용- 중간과정을 생략하기 때문에 중각 내용을 요약해 주는 SYS_CONNECT_BY_PATH( ) 함수를 사용하면 good. 2014. 10. 14.
12장. SEQUENCE(시퀀스) / SYNONYM(동의어) SEQUNCE (시퀀스) - 많은 양의 데이터들에게 순서가 필요할 경우를 위해서 연속적인 번호를 자동으로 만들어주는 기능- 마치 은행의 번호표처럼 연속적인 일련번호를 만들어주는 기능 # 예제 (1) 시퀀스 생성 및 옵션 확인step0. seq_jumun_no 시퀀스 생성 --위 예제에서 생성했던 시퀀스 step1. jumun 테이블 생성 step2. 시퀀스 활용하여 데이터 입력- 시퀀스이름.함수- NEXTVAL : 현재 값의 다음값을 가져오라는 뜻- CURRVAL : 현재 시퀀스에서 발생한 마지막 값 조회 step3. MAXVALUE 값 만큼 데이터 입력 step4. 1010번까지 시퀀스 소진 후 데이터 입력 (cycle일경우 새로입력되는 값 minvalue 테스트)- cycle 옵션 설정시 minval.. 2014. 10. 14.
11장. Sub Query (서브쿼리) - 쿼리 안에 또 다른 쿼리- 우선 서브 쿼리가 먼저 수행한 후 결과 값을 메인 쿼리로 전달 해주면 그 값을 받아서 메인 쿼리가 수행 됨( 단, 모든 쿼리에서 서브쿼리가 먼저 수행되는 것은 아님) [ 서브쿼리 작성시 주의사항 ]- 서브쿼리 부분은 WHERE 절에 연산자 오른쪽에 위치해야 한다.- 반드시 괄호로 묶어야 한다.- 특별한 경우를 제외하고는 서브쿼리절에 order by 절이 올수 없다.- 단일행 서브쿼리와 다중행 서브쿼리에 따라 연산자를 잘 선택해야한다. 1. 서브쿼리의 종류 (1) 단일행 서브쿼리- 서브쿼리의 결과가 1개만 출력- 단일행 서브쿼리에서 사용되는 연산자 = 같다 같지않다 > 크다 >= 크거나 같다 2014. 10. 13.
10장. VIEW - VIEW : 가상의 테이블- 테이블에는 원래 데이터가 들어있지만 View에는 데이터가 없고 SQL 만 저장되어 있다.- 사용자가 뷰에 접근하면 그 때 뷰에 들어있던 SQL이 수행되어 결과를 가져오는 것.- 뷰에는 제약조건이나 인덱스 등을 생성 할 수 없음 (아무런 데이터가 없기 때문에)- 뷰를 조회하는 쿼리의 성능이 느릴경우 원본 테이블에 인덱스를 점검해야함.- 조회용으로 많이 사용되지만 데이터를 변경할 수도 있음 - 사용하는 이유① 보안 - 해당 테이블에 접근하면 안되는 컬럼이 있을 경우 직접 접근하지 못하도록. - 사용자가 뷰에 접근하는 순간에 원본 테이블에 가서 데이터를 가져오기 때문에 언제나 정확한 데이터에 접근 가능② 사용자의 편의성 - 조회를 위해 매번 여러개의 테이블을 조인해야 할 경우 .. 2014. 10. 7.
9장. 인덱스(Index) 1. 정의 - 어떤 데이터가 어디에 있는지 위치 정보를 가진 주소록 같은 개념, 데이터의 주소값을 가지고 있는것.- 오라클에서는 데이터의 주소를 ROWID 라고 한다.- 인덱스를 사용하면 어떤 데이터가 어디에 저장되어 있다는 것을 다 알기때문에 데이터를 호출할때 빠르게 작업이 가능- 인덱스 생성이나 관리를 잘못하면 오히려 성능이 떨어지는 역효과 발생 2. 인덱스의 생성 원리- Table Full Scan : 데이터가 어디에 있는지 모든 데이터를 읽어봄.- 인덱스를 만드는 동안 데이터가 변경되면 문제가 되므로 해당 데이터들이 변경되지 못하도록 조치 후- 메모리(PGA의 Sort Area) 에서 정렬을 함 --시간이 오래걸림, 정렬이 쿼리 수행 속도에 영향을 준다는 것을 알수있음.- ( 만약, 메모리가 부족.. 2014. 10. 7.
8장. 제약조건 - 테이블에 올바른 데이터만 입력받고 잘못된 데이터는 들어오지 못하도록 컬럼마다 정하는 규칙EX) 학번 컬럼은 중복되지 않게, 학년 컬럼에는 1~3까지만 입력될수 있게- 제약조건들은 필요에 의해 사용할 수도 있고 일시적으로 사용안할 수도 있음.- 중복으로 설정 가능 (하나의 제약조건을 여러컬럼에, 하나의 컬럼에 여러개의 제약조건을) 1. 제약조건의 종류NOT NULL- 이 조건이 설정 된 컬럼에는 null 값이 입력되지 못함UNIQUE- 이 조건이 설정 된 컬럼에는 중복된 값이 입력되지 못함 - 각 컬럼값의 내용을 다 알고 있어야 함 -> 인덱스 필요PRIMARY KEY - 이 조건은 NOT NULL + UNIQUE 의 의미를 가진다.- 테이블 내에서 데이터들끼리의 유일성을 보장하는 컬럼에 설정가능- 테.. 2014. 10. 6.
7장. DML DDL(Data Definition Language) : CREATE(생성), ALTER(수정), TRUNCATE(잘라내기), DROP(삭제) DML(Data manipulation Language) : INSERT(입력), UPDATE(변경), DELETE (삭제), MERGE(병합) -- 데이터를 관리하는 명령어 DCL(Data Control Language) : GRANT(권한주기), REVOKE(권한뺏기) TCL(Transaction Control Language) : COMMIT(확정), ROLLBACK(취소) 1. INSERT - INSERT INTO table[(column1),(column2), ...] VALUES (value1, value2, ... )- column이름을 적어주지 않으.. 2014. 10. 6.
6장. DDL DDL(Data Definition Language) : CREATE(생성), ALTER(수정), TRUNCATE(잘라내기), DROP(삭제) DML(Data manipulation Language) : INSERT(입력), UPDATE(변경), DELETE (삭제), MERGE(병합) -- 데이터를 관리하는 명령어 DCL(Data Control Language) : GRANT(권한주기), REVOKE(권한뺏기) TCL(Transaction Control Language) : COMMIT(확정), ROLLBACK(취소) 1. CREATE - 사용자가 값을 입력하지 않을 경우 기본적으로 null 값이 자동으로 입력- 사용자가 값을 입력하지 않을 경우 null값 외에 다른 특정한 값을 지정 : default.. 2014. 10. 2.
5장. JOIN [관계형 데이터베이스(RDBMS)]- 모든 정보들이 하나의 테이블에 몰려 있는 것이 아니라 여러곳의 테이블에 정규화 되어 흩어져 있다는 뜻- 각테이블 끼리 서로 특정한 규칙이나 관계가 있도록 설계- JOIN : 여러 테이블에 흩어져 있는 정보 중에서 사용자가 필요한 정보만 가져와서 가상의 테이블 처럼 만들어서 결과를 보여줌. [JOIN]- oracle용 JOIN : oracle 제품에서 사용되는 oracle용 JOIN- 표준(ANSI) JOIN : 모든 제품들에서 공통적으로 사용가능 1. Cartesian Product (카티션 곱)- JOIN 쿼리 중에서 where절에 기술하는 join조건이 잘못 기술되었거나 아예없을 경우 발생- ANSI SQL 에서는 'CROSS JOIN' 이라고 함- JOIN 작업.. 2014. 10. 2.
4장. 복수행 함수 (그룹함수) 복수행 함수 (그룹함수) [ GROUP 함수의 종류 ]- 그룹함수 ( 컬럼명)- 데이터가 있는 항목의 건수만 - null 값은 안가져옴 1. COUNT - 데이터가 있는 항목의 건수를 반환- count(*) : null값을 포함한 모든 데이터의 총 건수- count(column_name) : null값을 제외한 데이터가 존재하는 행 건수 2. SUM - 입력된 데이터들의 합계값을 구하는 함수 3. AVG- 입력된 값들의 평균값을 구해주는 함수cf. median : 중간값- avg(column_name) : null값을 제외한 데이터가 존재하는 건수의 평균값을 구한다. 4. MAX / MIN- MAX : 주어진 데이터 중에서 가장 큰 값 (최대값)- MIN : 주어진 데이터 중에서 가장 작은 값 (최소값).. 2014. 10. 1.