본문 바로가기

Database75

짧)VIEW 뷰 VIEW 테이블은 실제로 데이터를 가지고 있는 반면 VIEW(뷰)는 실제 데이터를 가지고 있지 않다. 뷰는 단지 뷰 정의(View Definition)만을 가지고 있다. 질의에서 뷰가 사용되면 뷰 정의를 참조해서 DBMS가 내부적으로 질의를 재 작성하여 질의를 수행한다. 마치 테이블을 사용하는 듯이 사용할 수 있다고 해서 가상 테이블(Virtual Table)이라고 도 한다. 장점 독립성 테이블 구조가 변경되어도 뷰를 사용하는 응용프로그램은 변경하지 않아도 된다. 편리성 복잡한 질의를 뷰로 생성함으로써 매번 관련 질의를 길게 작성하는 것이아닌 단순하게 작성할 수 있다. 보안성 숨기고 싶은 정보가 존재한다면 뷰 생성시 해당 칼럼을 빼고 생성하여 사용자에게 정보를 감출 수 있다. VIEW 생성 구문 CREA.. 2021. 5. 1.
서브쿼리인데 셀프조인을 곁들인 오늘은 서브 쿼리와 셀프 조인에 대해서 정리를 하려고 한다. SELF JOIN이란 동일 테이블 사이의 조인을 말한다. 따라서 FROM절에 동일 테이블이 두 번 이상 나타난다. 동일 테이블 사이의 조인을 수행하면 테이블과 칼럼의 이름이 모두 동일하기 때문에 식별을 위해서 반드시 ALIAS를 사용해야 한다. 보통 셀프조인을 할 경우는 외부 조인을 많이 사용한다. 기준을 보고 조건에 따라 존재하는 연관된 데이터를 가져오는 것이 일반적이기 때문에 외부 조인을 사용하고, 내부 조인 시에는 조건을 만족하지 않는 행은 출력에서 제외되기 때문이다. Self JOIN은 특별한 문법이 없다. 단지 여러 가지 JOIN기능을 자신을 기준으로 하기 때문이다. 서브 쿼리 - 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문을.. 2021. 4. 29.
ORDER BY JOIN DESC ORDER BY절부터 조인까지 내림차순으로 설명하는 글. ORDER BY절 어디까지 알고 있었나? 단순히 최종 결과 집합에서 특정 칼럼을 기준으로 올림차순 및 내림차순 하는 기능 아니여?라고 나도 생각했지만, 겸손하기로 했다. ORDER BY절 - SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게 특정 칼럼 기준으로 정렬하여 출력하는 데 사용한다. (COLUMN 명 대신 SELECT 절에서 사용한 ALIAS 명이나 칼럼 순서로 나타내는 정수로도 사용 가능하다.) 정수로도 사용이 가능하다는 말을 예제로 한 번에 설명하겠다. SELECT p.PLAYER_NAME, p.BIRTH_DATE , p."POSITION" FROM PLAYER p ORDER BY 2 desc; SELECT절에 명시한 플레이어의 생.. 2021. 4. 28.
집계 함수 (Aggregate Function) 집계 함수는 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 다중행 함수를 집계 함수라고 하며 특성은 다음과 같다. - 여러 행들의 그룹이 모여서 그룹당 단하나의 결과를 돌려주는 함수 - GROUP BY 절은 행들을 소그룹화 한다. - 집계함수는 SELECT 절 , HAVING 절, ORDER BY 절에 사용할 수 있다. ANSI/ISO에서 데이터 분석 기능으로 분류한 함수 중 기본적인 집계 함수는 다음과 같다. 기본 형태 집계함수명( [DISTINCT | ALL] 칼럼/표현식) ALL은 Default 옵션이므로 생략이 가능하다. DISTINCT는 같은 값을 하나의 데이터로 간주한다. COUNT(*) -> NULL값을 포함한 행의 수를 뜻한다. COUNT(표현식) -> 표현식의 값이 NULL.. 2021. 4. 27.
내장 함수(BUILT-IN-FUNCTION) - NULL 관련함수 NVL 함수 - 결괏값이 NULL이 아닌 다른 값을 얻고자 할 때 NVL함수를 사용한다. NULL 값의 대상이 숫자 유형 데이터인 경우는 주로 0(ZERO)으로 값을 설정하고, NVL(숫자, 0) 문자 유형 데이터인 경우는 블랭크보다는 'X' OR 'NULL'과 같이 시스템에서 의미 없는 문자로 변경한다. NVL(표현식 1, 표현식 2) - 표현식 1의 결괏값이 NULL이면 표현식 2의 값을 출력한다. 단 표현식1과 표현식2의 결과 데이터 값이 동일해야 한다. NULLIF(표현식 1, 표현식 2) - 표현식 1이 표현식 2와 같으면 NULL을 같지 않으면 표현식 1을 리턴한다. COALESCE(표현식 1......) - 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다. 모두 NULL이면 .. 2021. 4. 27.
내장 함수(BUILT-IN-FUNCTION) - 날짜형/변환형 날짜형 함수 - DATE 타입의 값을 연산하는 함수 SYSDATE - 현재 날짜와 시각을 출력한다. EXTRACT( YEAR | MONTH | DAY | HOUR | MINUTE | SECOND FROM d) - 날짜 데이터에서 년/월/일/시/분/초를 출력할 수 있다. SELECT EXTRACT(YEAR FROM SYSDATE)FROM DUAL; SELECT EXTRACT(MONTH FROM SYSDATE)FROM DUAL; SELECT EXTRACT(DAY FROM SYSDATE)FROM DUAL; SELECT EXTRACT(HOUR FROM SYSTIMESTAMP)+9 FROM DUAL; SELECT EXTRACT(MINUTE FROM SYSTIMESTAMP)FROM DUAL; 대신에 시/분/초를 출.. 2021. 4. 27.
내장 함수(BUILT-IN-FUNCTION) - 숫자형 문자형 함수에 이어서 단일행 함수의 숫자형 함수를 알아보자. 공통 함수만 정의하며 나중에는 특정 벤더 Oracle에서 제공하는 내장 함수를 알아본다. 단일행 함수 (숫자형 함수) - 숫자 데이터를 인자로 받아 처리하고 숫자를 리턴 ABS(숫자) : 인자로 전달받은 숫자를 절대값으로 반환한다. SELECT ABS(-3) FROM DUAL; SIGN(숫자) : 인자로 전달받은 숫자를 음수이면 -1, 양수이면 1, 0이면 0으로 표현해준다. SELECT SIGN(-3) FROM DUAL; MOD(N1, N2) : N1을 N로 나눈 나머지 값을 리턴합니다. %으로 대체가 가능 SELECT MOD(10,3) FROM DUAL; CEIL(N) : 숫자보다 크거나 같은 최소 정수를 리턴한다. 올림이라고 볼 수 있다... 2021. 4. 27.
내장 함수(BUILT-IN-FUNCTION) - 문자형 함수는 다양한 기준으로 분류할 수 있는데, 벤더사에서 제공하는 함수인 내장 함수와 사용자가 정의하는(User Defined Functuin)으로 나눌 수 있다. 벤더사에서 공통적으로 제공하는 내장 함수를 먼저 알아보자 내장함수는 두 가지로 분류될 수 있다. 단일행 함수(Single-Row-Function) : 함수의 입력값이 단일행 값이 입력된다. 다중행 함수(Multi-Row-Function) : 함수의 입력값이 여러 행의 값이 입력된다. 다중행 함수는 3가지로 분류될 수 있는데, 집계함수(Aggregate Function) , 그룹 합수(Group Function), 윈도 함수(Window Function)로 나눠진다. 1. 단일행 함수 - 함수는 입력되는 값이 아무리 많아도 출력은 하나만 된다는 M.. 2021. 4. 27.
연산자 데이터를 가져오는 SELECT문과 FROM절만으로 데이터를 가져오게 되면 흔히 말하는 FTS(Full Table Scan)이 일어납니다. 이 FTS는 모두 SQL 튜닝의 1차 검토대상이 되죠. 그 이유는 디스크의 I/O량이 데이터 크기만큼 커지기 때문에 성능적으로 저하가 일어날 수 있습니다. 그렇기 때문에 WHERE 절에 구체적인 조건문을 통하여 인덱스를 활용해 데이터를 가져오죠. 사실 인덱스를 이용하지 않는다면 FTS가 일어나기 때문에 인덱스를 활용하지 않는 조건문은 FTS를 유발합니다. 그럼 이러한 조건문에서 어떠한 연산자를 통해 데이터를 구별하는지 우선순위부터 알아보겠습니다. 1. 연산자 우선순위 ()괄호 -> NOT -> 비교문, SQL비교문 -> AND -> OR 사람들이 가장 많이 실수하는 부.. 2021. 4. 27.
제약조건 (Constraint) 제약조건은 사용자가 원하는 조건의 데이터를 유지하기 위한 제약으로 데이터 무결성을 유지하기 위한 데이터베이스의 보편적인 방법으로 테이블의 특정 칼럼에 설정한다. 종류 Primary Key : PK로 설정된 칼럼은 행의 유일함을 보장하는 행으로 PK제약조건이 걸리게 되면 자동적으로 UNIQUE 인덱스가 생성된다. 이 제약은 UNIQUE 제약과 NOT NULL을 합친 것이다. Unique Key : 행 데이터를 고유하게 식별하기 위한 제약조건이다. 이 행의 데이터는 중복될 시 데이터가 입력/갱신이 되지 않는다. 대신에 NULL값을 허용한다. CREATE TABLE board( id VARCHAR(10) UNIQUE NOT NULL, nickName VARCHAR(20) CONSTRAINT nickName_u.. 2021. 4. 26.