SQLD

    3-7-3. 동시성 제어

    동시성 제어(Concurrency Control): 동시에 작동하는 다중 트랜잭션의 상호 간섭 작용에서 데이터베이스를 보호하는 것. 동시성 제어 기법에는 '비관적' 동시성 제어와 '낙관적' 동시성 제어 2가지가 있다. 1. 비관적 동시성 제어, 낙관적 동시성 제어 가. 비관적 동시성 제어(Pessimistic Concurrency Control): 사용자들이 같은 데이터를 동시에 수정할 것이라고 가정해, 데이터를 읽는 시점에 Lock을 걸고, 트랜잭션이 완료될 때까지 이를 유지한다. 더보기 select 적립포인트, 방문횟수, 구매실적 from 고객 where 고객번호 =: cust_num for update; -- 새로운 적립포인트 계산 update 고객 set 적립포인트 =: 적립포인트 where 고객..

    3-7-2. 트랜잭션

    1. 트랜잭션의 특징 업무 처리를 위한 논리적인 작업 단위인 트랜잭션은 다음과 같은 4가지 주요 특징을 가진다. 영문 첫 글자를 따 ACID라고 부른다. 원자성(Atomicity): 트랜잭션은 분해가 불가능한 업무의 최소단위이므로 전부 처리되거나 아예 하나도 처리되지 않아야 한다. 일관성(Consistency): 일관된 상태의 데이터베이스에서 하나의 트랜잭션을 성공적으로 완료하고 나면, 그 데이터베이스는 여전히 일관된 상태(모순되지 않는 상태)여야 한다. 격리성(Isolation): 실행 중인 트랜잭션의 중간결과를 다른 트랜잭션이 접근할 수 없다 영속성(Durability): 트랜잭션이 일단 그 실행을 성공적으로 완료하면, 그 결과는 데이터베이스에 영속적으로 저장된다. 2. 트랜잭션 격리성 트랜잭션 격리..

    3-7-1. Lock

    1. Lock 기본 가. Lock이란? - '직렬화(serialization)'을 가능하게 하기 위해 모든 DBMS가 공통적으로 사용하는 메커니즘 나. 공유 Lock과 배타적 Lock 1) 공유 Lock - 공유(Shared) Lock은 데이터를 읽을 때 사용한다. 다른 공유 Lock과는 호환(하나의 리소스에 두 개 이상의 Lock을 동시에 설정 가능)되나 배타적 Lock과는 호환되지 않음. - 자신이 읽고 있는 리소스를 다른 사용자가 동시에 읽을 수는 있어도 변경은 불가능하고, 다른 사용자가 변경중인 리소스를 동시에 읽을 수는 없다. 2) 배타적 Lock - 배타적(Exclusive) Lock은 데이터를 변경할 때 사용, 트랜잭션이 완료될 때까지 유지된다. 어느 Lock과도 호환 안됨. 다. 블로킹, ..

    2-1-8. 표준 조인

    1. FROM 절 조인 형태 ANSI/ISO SQL에서 표시하는 FROM 절의 조인 형태는 다음과 같다. INNER JOIN: DEFAULT 옵션, 조인 조건을 만족하는 행들만 반환한다. NATURAL JOIN: INNER JOIN의 하위개념으로, 두 테이블 간 동일한 이름을 가지는 모든 칼럼에 대해 EQUI JOIN을 수행한다. USING 조건절: NATURAL JOIN에서, 원하는 칼럼에 대해서만 선택적으로 EQUI JOIN을 할 수 있게 함 ON 조건절: JOIN 조건절과 데이터 제한 조건(WHERE 절)을 분리할 수 있다. CROSS JOIN OUTER JOIN 2. INNER JOIN - "INNER JOIN"을 표시하기 위해서는, USING 조건절이나 ON 조건절을 필수적으로 사용해야 한다. ..

    2-1-7. 조인

    1. 조인 개요 두 개 이상의 테이블들을 연결해 데이터를 출력하는 것을 조인(JOIN)이라고 한다. 일반적으로 PK-FK 값의 연관에 의해 조인이 성립된다. 하지만, 어떤 경우에는 이러한 PK, FK의 관계가 없어도 논리적인 값들의 연관만으로 조인이 성립될 수 있다. 2. EQUI JOIN - EQUI JOIN(등가 조인)은 두 개의 테이블 간에 칼럼 값들이 서로 '정확하게 일치'하는 경우에 사용되는 방법으로, 대부분 PK-FK 관계를 기반으로 한다. 물론, 항상 PK-FK 관계를 사용하는 것은 아니다. 다음은 EQUI JOIN의 대략적인 형태이다. 더보기 SELECT 테이블1.칼럼명, 테이블2.칼럼명, ... FROM 테이블1, 테이블2 WHERE 테이블1.칼럼명 = 테이블2.칼럼명; ===> WHER..

    2-1-6. ORDER BY 절

    1. ORDER BY 정렬 - ORDER BY 절은 SQL 문장으로 조회한 데이터들을 다양한 목적에 맞게 특정 칼럼을 기준으로 정렬 및 출력하는데 사용된다. 더보기 SELECT 칼럼명 [ALIAS 명] FROM 테이블명 [WHERE 조건식] [GROUP BY 칼럼이나 표현식] [HAVING 그룹조건식] [ORDER BY 칼럼이나 표현식 [ASC | DESC]]; - ASC는 오름차순, DESC는 내림차순을 의미한다. 그냥 정렬하는 거면 상관 없는데, 'NULL'이 껴있다면 어떻게 될까? - Oracle은 NULL값을 가장 큰 값으로 취급한다. - SQL Server는 반대의 정렬 순서를 가진다. - 칼럼명이나, 칼럼의 ALIAS를 사용할 수 있다. 2. SELECT 문장 실행 순서 - GROUP BY 절..

    2-1-5. GROUP BY, HAVING 절

    1. 집계함수 - 여러 행들의 그룹이 모여 그룹당 단 하나의 결과를 돌려주는 함수 - GROUP BY 절은 행들을 '소그룹화'한다. - SELECT 절, HAVING 절, ORDER BY 절에 사용할 수 있다. 집계함수는 그룹에 대한 정보를 제공하므로, 주로 '숫자 유형'에 사용되지만, MAX-MIN-COUNT 함수는 문자/날짜 유형에도 적용이 가능하다. 집계함수의 종류는 아래와 같다. 집계함수 사용 목적 COUNT(*) NULL 값을 포함한 행의 수를 출력한다. COUNT(표현식) 표현식의 값이 NULL 값인 것을 제외한 행 수를 출력한다. SUM([DISTINCT | ALL] 표현식) 표현식의 NULL 값을 제외한 합계를 출력한다. AVG([DISTINCT | ALL] 표현식) 표현식의 NULL 값을..

    2-1-4. WHERE 절

    1. WHERE 조건절 개요 더보기 SELECT [DISTINCT/ALL] 칼럼명 [AS ALIAS명] FROM 테이블명 WHERE 조건식; WHERE 절은 FROM 절 다음에 위치하며, 조건식은 아래 내용으로 구성된다. - 칼럼명(보통 조건식의 좌측에 위치) - 비교 연산자 - 문자, 숫자, 표현식(보통 조건식의 우측에 위치한다) - 비교 칼럼명(JOIN 사용 시) 2. 연산자의 종류 WHERE 절에 사용되는 연산자는 비교 연산자, SQL 연산자, 논리 연산자 총 3가지 종류가 있다. 구분 연산자 연산자의 의미 비교 연산자 =, >, >=, 단수 - NULL을 고려할 때, 'A = NULL'같이 비교 연산자를 적용할 수 없다. 반드시 'IS NULL'이나 'IS NOT NULL'처럼 SQL 연산자를 사..