목록SQLD (13)
개발새발

옵티마이저와 실행계획 옵티마이저의 역할사용자가 질의한 SQL문에 대해 최적의 실행 방법(실행 계획)을 결정하는 역할을 수행한다옵티마이저가 선택한 실행 방법의 적절성 여부는 질의의 수행 속도에 가장 큰 영향을 미친다. 최적의 실행 방법 결정 어떤 방법으로 처리하는 것이 최소 일량으로 동일한 일을 처리할 수 있을지 결정하는 것 옵티마이저의 유형규칙기반 옵티마이저(RBO, Rule Based Optimizer) - 사전에 정의된 SQL 규칙의 우선순위로 실행 계획을 생성하는 방식비용기반 옵티마이저(CBO, Cost Based Optimizer) - 통계 정보를 활용하여 SQL 처리 시간 및 자원 사용량 등을 계산하고, 가장 효율적인 실행 계획을 생성하는 방식. 관계형 데이터베이스는 비용기반만 제공한다.규칙기..
개발 프로젝트의 표준은 모든 삭제 데이터에 대한 로그를 남기는 것을 원칙으로 함, 테이블 삭제의 경우 허가된 인력만이 정기적으로 수행 가능해야 함. 정답: DELETE FROM STADIUMTRUNCATE 키워드와 DROP 키워드는 로그를 남기지 않는다 표준 SQL 테이블 생성 시 참조 관계를 정의하기 위해 외래키를 선언. 관계형 데이터 베이스에서 Child Table 의 FK 데이터 생성시, Parent Table 에 PK가 없는 경우, Child Table 데이터 입력을 허용하지 않는 참조 동작은? 정답: DEPENDNETCASCADE: Master 삭제시 Child 같이 삭제RESTRICT: Child 테이블에 PK 값이 없는 경우만 Master 삭제 허용AUTOMATIC: Master 테이블에 ..
절차형 SQL 절차형 SQL은 프로그램이 언어처럼 조건문(IF) 과 반복문(LOOP)을 사용할 수 있는 언어이다. ORACLE의 절차형 SQL로 PL/SQL을 제공하고, SQL-Server의 절차형 SQL로 T-SQL을 제공한다. P/SQL의 특징Block 구조로 되어있으며 각 기능별로 모듈화가 가능변수/상수 선언 및 IF/LOOP문 등의 사용이 가능변수와 상수 등을 사용하여 SQL 문장을 실행할 때 값을 대입 가능PL/SQL은 오라클에 내장 시킬수 있으므로 어떠한 오라클 서버로도 이식이 가능PL/SQL은 여러 SQL문장을 Block으로 묶고 한번에 Block전부를 서버로 보내기때문에 네트워크 패킷 수를 감소 시킴PL/SQL Block의 구조구조 명필수/선택설명DECLARE(선언 부)필수BEGIN~EN..
제약 조건 추가이 ADD CONSTRAINT명령은 테이블이 이미 생성된 후 제약 조건을 생성하는 데 사용된다. 다음 SQL은 여러 열(ID 및 LastName)에 대한 PRIMARY KEY 제약 조건인 "PK_Person"이라는 제약 조건을 추가ALTER TABLE PersonsADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName); 제약 조건 삭제이 DROP CONSTRAINT명령은 UNIQUE, PRIMARY KEY, FOREIGN KEY 또는 CHECK 제약 조건을 삭제하는 데 사용된다. 고유 제약 조건 삭제UNIQUE 제약 조건을 삭제하려면 다음 SQL을 사용한다 ALTER TABLE PersonsDROP CONSTRAINT UC_Person;
WINDOW FUNCTION 개요윈도우 함수는 데이터 베이스에서 컬럼과 컬럼 간의 연산이 아닌, 행과 행 간의 비교 또는 연산을 처리하기 위한 함수이다. 데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위해서 SQL 에 추가된 기능으로 OLAP 함수라고도 한다. 윈도우 함수는 메인 쿼리 뿐만 아니라 서브 쿼리에서도 사용할 수 있지만, 함수 자체에서 중첩으로 사용할 수 없다. 윈도우 함수 처리로 인해 결과 건수가 달라지지는 않는다. WINDOW FUNCTION 종류WINDOW FUNCTION 는 크게 5가지 그룹으로 분류할 수 있다. (벤더별로 지원하는 함수 차이가 있음)그룹 내 순위(RANK) 관련 함수: RANK, DENSE_RANK, ROW_NUMBER그룹 내 집계(AGGREGATE) 관련 ..

그룹 함수 그룹함수를 통해 소계/중계/합계/총합계를 구할 수 있다.하나의 SQL로 테이블을 한번만 읽어서 빠르게 원하는 리포트를 작성할 수 있다. (단일 DML만으로도 원하는 작업을 할 수 있다)ex) 매출에 대한 리포트를 작성해야 하는 경우 개발자는 그룹 함수를 이용해 쉽게 작성할 수 있다. ROLLUP ROLLUP은 지정된 컬럼의 소계 및 총계를 구하기 위해 사용되는 그룹함수 그룹핑 컬럼의 수가 N일때, N+1 Level의 Subtotal이 생성된다계층 구조이기 때문에 순서가 바뀌면 수행 결과도 바뀌게 되기 때문에 순서에 주의해야 한다.ROLLUP(A,B) != ROLLUP(B,A) SELECT YEAR(OrderDate) AS Year, MONTH(OrderDate) AS Month, ..

서브 쿼리쿼리 안에 존재하는 또 다른 쿼리서브 쿼리는 메인 쿼리의 컬럼을 자유롭게 사용할 수 있지만,메인 쿼리는 서브 쿼리의 컬럼을 사용할 수 없다. 조회 결과에서브 쿼리 컬럼을 표시해야 한다면, 조인 방식으로 변환하거나 스칼라 서브 쿼리를 사용해야 한다. 서브쿼리 사용 가능 위치SELECT 절 : 스칼라 쿼리FROM 절 : 인라인 뷰WHERE 절HAVING 절ORDER BY 절INSERT문의 VALUES 절UPDATE문의 SET 절서브쿼리 분류 1) 위치에 따른 분류스칼라 서브쿼리 (Scalar Subquery)Select* 컬럼이 오는 곳에 대부분 위치 가능* 반드시 하나의 값을 반환인라인 뷰 (Inline View)From* 테이블명이 올수 있는 곳이 위치 가능* 동적 뷰 (Dynamic Vie..
SQL에서 집합 연산자와 조인은 둘 다 데이터베이스 쿼리에서 여러 테이블의 데이터를 결합할 때 사용되지만, 그 목적과 방식에서 차이가 있다. 집합 연산자 (Set Operators) 집합 연산자는 여러 쿼리의 결과를 결합하는 데 사용된다. 집합 연산자를 사용하기 위해서는 SELECT 절의 컬럼 수가 동일해야 하고, 각 컬럼의 데이터 타입이 동일해야 한다. UNION: 두 쿼리의 결과를 결합하고 중복된 행을 제거UNION ALL: 두 쿼리의 결과를 결합하지만, 중복된 행을 제거XINTERSECT: 두 쿼리의 공통된 행만 반환 MINUS: 첫 번째 쿼리 결과에서 두 번째 쿼리 결과를 뺀 결과를 반환MINUS가 수행될 때 중복되는 값은 제거된다 SELECT column1 FROM table1 UNION ..