Computer Science/DataBase

Computer Science/DataBase

Mysql 서브 쿼리

서브 쿼리 쿼리 내부에 포함된 select 쿼리를 서브 쿼리(Sub Query)라 부른다. select 쿼리에 들어가는 서브 쿼리 종류에는 인라인 뷰, 스칼라 서브쿼리, 중첩 서브쿼리가 있다. 이때 서브 쿼리를 포함한 select 쿼리를 메인 쿼리라 하며 서브 쿼리가 실행 된 후 메인 쿼리가 실행된다. 1. 인라인 뷰 from 절에 들어가는 서브 쿼리 서브 쿼리의 조회 결과를 테이블 처럼 사용할 때 씀 alias 지정 필수 select * from ( select l.common, l.col_l, r.col_r from table_l l left join table_r r #on table_l.common = table_r.common; using(common) union select r.common, ..

Computer Science/DataBase

MySQL Join

Join MySQL의 sql로 관계 대수의 자연 조인, 세타 조인, 외부 조인, 세미 조인, 카티션 곱 등이 가능하다. inner join 두 릴레이션에 있는 모든 튜플을 조회 한다. 조인을 할 때 주로 ANSI 조인 형태를 사용한다. ANSI 조인은 JOIN 키워드와 ON이 있기 때문에 쉽게 조인 조건을 알 수 있다. # ANSI 조인 형태 # 다른 sql에서도 범용적으로 사용 가능 # where 조건절과 join 조건이 분리되므로 가독성이 높음 select * from table_l [inner] join table_r on table_l.common = table_r.common; # 조인 속성이 동일 하다면 아래와 같이 쓸 수 있음 select * from table_l [inner] join t..

Computer Science/DataBase

[데이터베이스 - 9] 병행 제어

병행 제어 DBMS는 여러 사용자가 동시에 데이터베이스를 이용할 수 있도록 병행 수행 기능을 제공한다. 병행 수행은 실제로 여러 트랜잭션이 차례로 번갈아 수행되는 인터리빙(interleaving) 방식으로 지원한다. 하지만 아무런 제어 없이 병행 수행을 할 경우 갱신 분실, 모순성, 연쇄 복귀 등의 문제가 발생할 수 있다. 때문에 트랜잭션을 병행 수행 하면서도 정확한 수행 결과를 얻을 수 있도록 트랜잭션의 병행 수행을 제어하는 병행 제어(동시성 제어)가 필요하다. 병행 제어 기법 병행 제어의 핵심 목표는 트랜잭션을 번갈아 가면서 수행하면서도 트랜잭션을 순차적으로 실행하는 것과 같은 결과를 내는 것이다. 트랜잭션을 순차적으로 실행한 결과는 항상 정확하고 일관되기 때문이다. 가장 많이 사용하는 병행 제어 기..

Computer Science/DataBase

[데이터베이스 - 8] 장애와 회복

장애의 유형 데이터베이스에 장애가 발생해도 DBMS의 회복 기능을 통해 데이터베이스는 정확하고 일관된 상태로 유지 할 수 있다. 장애가 발생하는 원인은 정전, 사용자의 실수, 하드웨어 고장, 소프트웨어 오류, 미디어 장치 고장, 트랜잭션 논리적 오류 등 매우 다양하다. 데이터베이스 저장 연산 데이터베이스는 비휘발성 저장 장치인 디스크에 저장되어 있다. 응용 프로그램에서 트랜잭션 수행을 지시하면 디스크에서 메인 메모리로 데이터를 보내고 데이터를 다시 디스크로 보내는 작업이 필요하다. 디스크와 메인 메모리 간의 데이터 이동은 블록(block) 단위로 이동하며 디스크에 있는 블록을 디스크 블록, 메인 메모리에 있는 블록을 버퍼 블록이라 한다. 디스크와 메모리 간의 데이터 이동은 다음 두 연산으로 수행된다. i..

Computer Science/DataBase

[데이터베이스 - 7] 트랜잭션

회복과 동시성 제어 DBMS는 데이터베이스가 항상 정확하고 일관된 상태를 유지할 수 있도록 장애 발생 시 회복 기능과 동시성 제어 기능을 제공한다. 장애 발생 시 회복 기능을 통해, 여러 사용자가 동시에 데이터베이스를 사용해도 동시성 제어 기능을 통해 데이터베이스는 항상 일관된 상태를 유지한다. 회복과 동시성 제어 기능은 트랜잭션을 기반으로 동작한다. 트랜잭션 (Transaction) 트랜잭션이란 하나의 작업을 수행하는데 필요한 데이터베이스의 연산들(SELECT, INSERT, UPDATE, DELETE)을 모아놓은 것이다. 데이터베이스는 트랜잭션 단위로 작업을 수행한다. 계좌이체 트랜잭션은 2개의 UPDATE 문으로 구성되어 있다. 하나는 성호 계좌에서 5000원을 감소시키는 UPDATE문이며 다른 하..

Computer Science/DataBase

[데이터베이스 - 6] SQL

SQL SQL(Structured Query Language)는 관계 DB의 표준 질의어이다. SQL에는 데이터 정의어, 조작어, 제어어를 모두 포함하며 사용자는 SQL로 RDB에 지시를 내린다. 모든 SQL문은 세미콜론(;)으로 문장 끝을 표시하며 INSERT, SELECT와 같은 키워드는 대소문자를 구분하지 않는다. 테이블 생성 SQL 테이블 생성문이다. [ ] 로 표시한 항목은 생략 가능하다. CREATE TABLE 테이블_이름 ( 1️⃣ 속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본값] 2️⃣ [PRIMARY KEY (속성_리스트)] 3️⃣ [UNIQUE (속성_리스트)] 4️⃣ [FOREIGN KEY (속성_리스트) REFERENCES 테이블_이름(속성_리스트)] [ON DEL..

Computer Science/DataBase

[데이터베이스 - 5] 관계 데이터 모델

관계 데이터 모델 관계 데이터 모델이란 RDB가 사용하는 논리 데이터 모델로 데이터를 릴레이션(테이블)에 저장, 관리하는 모델이다. 릴레이션 관련 용어 하나의 개체에 관한 데이터를 릴레이션에 저장한다. 릴레이션은 테이블과 같은 의미지만 관계의 의미를 강조하기 위해 릴레이션 용어로 사용된다. 속성 : 릴레이션의 열을 속성(attribute)이라 한다. 속성은 서로 다른 이름을 가져야한다. 도메인으로 값의 범위를 지정하며, 무결성 제약조건 등의 제약 조건이 붙기도 한다. 투플 : 릴레이션의 행을 투플(tuple)이라 한다. 투플은 개체의 모든 속성 값을 모아놓은 것으로 개체의 인스턴스가 된다. 도메인 : 속성 하나가 가질 수 있는 모든 값의 집합을 해당 속성의 도메인(domain)이라 한다. 속성이 가질 수..

Computer Science/DataBase

[데이터베이스 - 4] 데이터베이스 설계

데이터베이스 설계 데이터베이스 설계 과정을 요약하면 아래와 같다. 요구사항 분석 : 조직 내 사용자들의 요구 사항을 수집해 요구 사항 멩세서를 만든다. 개념적 설계 : 요구사항 명세서를 기반으로 DB의 개념적 구조를 만든다. 개념적 구조는 사용할 DBMS 종류에 독립적이며 데이터 요소와 요소 간의 관계를 표현한다. 일반적으로 E-R 모델(개념적 데이터 모델)을 사용해 만든다. 논리적 설계 : 개념적 구조를 기반으로 사용하는 DB의 논리적 구조를 만든다. 이때 논리적 구조는 사용할 DBMS에 따라 결정된다. RDB의 경우 테이블로 구성되는 관계 데이터 모델(논리적 데이터 모델)을 사용해 만든다. 물리적 설계 : 논리적 구조를 기반으로 DB의 물리적 구조를 만든다. 즉 데이터베이스의 데이터가 저장 장치에 저..

gunjoon98
'Computer Science/DataBase' 카테고리의 글 목록