트랜잭션(Transaction)이란?
  : 쉽게 말해 데이터베이스에 하나의 연산(거래)이 수행될 때 그 연산을 트랜잭션이라 한다.

트랜잭션의 속성
  1. 독립성, 격리성(Isolation)
       : 트랜잭션 수행시 그 수행이 끝나기 전까지 다른 트랜잭션이 간섭할 수 없다.
        * 독립성이라하여 Independency라고 하면 틀린다.
  2. 일관성(Consistency)
       : 한곳에 트랜잭션에 변화가 생기면 연관된 다른곳도 자동으로 변화되어야 한다.
  3. 영속성(Durabiliry)
       : 트랜잭션이 수행되면 그 값은 영속적이어야 한다.
  4. 원자성(Atomicity)
       : 완전하게 수행되지 않은 트랜잭션은 RollBack되어야 한다.

트랜잭션의 특징
  - 트랜잭션은 작업의 논리적 단위이다.
  - 하나의 트랜잭션은 Commit 되거나 Rollback되어야 한다.

  * Commit : 트랜잭션이 완료가 되면 작업의 허용을 허락하게 하는 명령어
     ROLLBACK : 작업이 실패했을 경우 원래의 값으로 돌리는 명령어


  * Transaction File 이란 트랜잭션이 일어난 기록을 남기는 파일을 말한다.
뷰(View)란?
  : 물리적으로 저장된 데이터에서 필요한 정보만 검색하여 그 정보를 임의로 보여주는 가상테이블이다.

뷰(View)의 특징
  - 하나 이상의 기본테이블로부터 유도된 가상테이블
  - 뷰를 이용한 또다른 뷰 생성 가능
  - 삽입, 갱신, 삭제 연산에는 제약이 따름(ex. Not Null로 지정된 속성을 모르고 데이터 삽입시 제약된다)
  - 사용자에게 접근이 허용된 자료만 제한적으로 보여주기 위한 테이블이다.(보안에 용이)
  - CREATE VIEW로 정의하며 Table과 같은 방식으로 활용한다.

장점
  - 논리적 데이터 독립성을 제공
  - 접근 제어를 통한 보안을 제공
  - 숨겨진 데이터를 위한 자동보안이 제공
  - 사용자의 데이터 관리를 간단하게 해줌
데이터 디렉토리는 데이터 사전과 혼돈되기 쉽지만 다른 개념이다.

데이터 사전과 데이터 디렉토리의 차이점
데이터 사전은 데이터들의 정보를 담고 있는 것이라면, 데이터 디렉토리는 데이터 사전에 수록된 데이터를 보다 쉽고 빠르게 접근하기 위한 접근 방법이나 정보를 관리 유지하는 시스템이다.
내장 SQL의 정의
  : 내장 SQL은 응용프로그램이 실행될 때 함께 실행되도록 호스트 프로그램언어로 만든 프로그램에 삽입된 SQL이다.
    쉽게말해 응용프로그램안에서 데이터베이스를 사용할 수 있게 들어있는 SQL을 말한다.

 * 호스트 프로그램이란 PASCAL, COBOL, C언어, Visual Basic과 같은 프로그래밍 언어이다.

시스템 카탈로그의 의미
  - 데이터 베이스 시스템에서 데이터가 실제로 일겨지거나 수정되기전에 먼저 참고되는 파일
  - 데이터들의 정보가 저장된 또다른 데이터이기 때문에 META DATA라고 한다.
  - 카탈로그들이 생성되면 데이터들에 대한 정보가 자료사전에 저장되기 때문에 자료사전(Data Dictionary)이라고도 한다.

 * META DATA : 데이터를 관리하기 위한 데이터(S/C에 저장되는 내용), D/B구조, 제약조건, 응용, 권한부여에 관한 정보

시스템 카탈로그의 특징
  - 시스템 그 자체에 관련이 있는 다양한 객체들에 관한 정보를 포함하는 파일시스템이다.(하드디스크에 저장되므로)
  - 릴레이션, 인덱스, 사용자 등의 정보를 포함한다.
  - 위치 단편화 및 중복 독립성을 제공하기 위해 필요한 모든 제어 정보를 가진다.
  - 카탈로그 자체도 시스템 테이블로 구성되어 있어 일반 사용자도 SQL을 이용하여 내용을 검색할 수 있다.
  - 정의만 내려주면 DBMS가 스스로 생성된다.
  - 데이터 베이스 스키마(DB구조가 모두 담김)에 대한 정보를 제공한다.
  - 기본테이블, 뷰, 인덱스, 데이터베이스, 접근권한 등이 담겨 있다.
  - 시스템 카탈로그에 대한 갱신은 DBMS가 자동적으로 수행한다.

정의
  : 데이터베이스 입력, 삭제, 수정과 원하는 조건의 데이터를 검색하여 임시테이블로 구성하는 명령어

종류
  1. SELECT
      : 원하는 튜플을 검색하여 임시테이블을 구성하는 명령

     Select 이름 from 학생 where 과목='수학' and 과목='영어';    학생테이블에서 과목이 수학과 영어인 이름을 검색
        * 비교연산자 : =, <>, >, >=, <, <=, IN
           논리연산자 : NOT, AND, OR(조건문을 쓸 때 속성이 같아도 꼭 2번 입력해야 한다)
           LIKE : *, %(모든 문자)  /  ?, _(갯수만큼의 문자)  /  #(갯수만큼의 숫자)

     Select 이름 distinct from 학생 where 과목='수학';   학생테이블에서 과목이 수학인 이름중 중복을 제외하고 검색
        * All : 중복까지모두 검색   /   Distinct : 중복을 제외하고 모두 검색 (쓰지않으면 All로 검색된다)

     Select 이름 from 학생 where 과목='수학' order by 이름 ASC;  학생테이블에서 과목이 수학인 이름을 오름차순으로 검색
        * ASC : 오름차순으로 검색   /   DESC : 내림차순으로 검색

     Select 이름 from 학생 where 과목 IS Null;  학생테이블에서 Null값인 과목을 검색
        * Is Null : Null값을 검색   /   Is Not Null : Null값이 아닌 값을 검색

     Select 부서, count(*) As 사원수 from 사원 where 기본급>=100 group by 부서 having count(*) >=2;
       사원테이블에서 기본급이 100이상인 사원이 2명 이상인 부서를 검색
       * Group by 속성 having Count (그룹별 튜플의 수)
                                         AVG (그룹별 평균)
                                         SUM (그룹별 합계)
                                         MAX (그룹별 최대값)
                                         MIN (그룹별 최소값)

2. INSERT
     : 기본 테이블에 새로운 튜플을 삽입할때 사용하는 명령

       Insert Into 학생(이름, 성별, 나이) Values (홍길동, 남자, 25);
        학생 테이블에 속성명 이름, 성별, 나이에 각각 홍길동, 남자, 25 을 입력

3. DELETE
     : 기본 테이블에 있는 튜플(행) 중 특정 튜플을 삭제할때 사용하는 명령

       Delete from 학생 whrer 과목='수학';     학생 테이블에 과목이 수학인 튜플을 삭제
         * Delete from 학생; 입력시 학생 테이블의 모든 레코드 삭제(Drop명령과 달리 테이블은 삭제되지 않는다.)

4. UPDATE
     : 기본테이블에 있는 튜플들 중 특정 튜플의 내용을 변경할 때 사용하는 명령

       Update 학생 set 과목='영어' where 이름='홍길동';  학생테이블에 이름이 홍길동의 과목을 영어로 변경


검색문 : SELECT (     )  FROM (     ) WHERE (     )
삽입문 : INSERT (     )  INTO (     ) WHERE (     )
삭제문 : DELETE FROM (     ) WHERE (     )
변경문 : UPDATE (     )  SET (     ) WHERE (     )

 

정의
  : 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는데 사용하는 언어

종류
  1. GRANT : 권한부여
  2. REVOKE : 권한취소
  3. COMMIT : 연산을 허용하여 완료함
  4. ROLLBACK : 원래 상태로 복구함
개념
  : 데이터베이스를 정의하거나 그 정의를 수정할 목적으로 사용

종류
  1. CREATE(정의)
     - Table, Schema, View, Domain 등을 정의할 때 사용
     - 정의시 속성명, 기본키, 대체키 등을 지정
  
  2. ALTER(정의 변경)
     - 옵션 : ADD(추가), ALTER (수정), DROP(삭제)

  3. DROP(삭제)
     - Table, Schema, View, Domain 등을 삭제할 때 사용
     - 옵션 : CASCADE(참조되는 다른 테이블까지 모두 삭제)
                 RESTRICT(참조되는 테이블이 있으면 삭제 취소)
SQL(Structured Query Language)의 개념
  : 질의어지만 질의 기능만 있는것이 아니라 데이터 구조의 정의, 데이터 조작, 데이터 제어 기능을 가진 언어

* 질의어 : DBMS에서 일반 사용자도 쉽게 데이터를 뽑아내는 비절차적 언어의 일종



SQL의 분류

DDL(Data Define Language) - 데이터 정의어
  - 데이터베이스를 정의, 생성, 제거(제거시 테이블 자체가 삭제)
  - DBA에게 필요한 언어

DCL(Data Control Language) - 데이터 제어어
  - 데이터베이스를 관리, 제어, 데이터 무결성유지, 보안, 권한설정
  - DBA에게 필요한 언어

DML(Data Mainpulation Language) - 데이터 조작어
  - 데이터베이스를 검색, 입력, 수정, 삭제(삭제시 입력한 데이터 값들만 삭제)
  - 응용프로그래머, 사용자에게 필요한 언어
관계대수(절차적언어)
  : 어떠한 결과가 나오기 위해 어떠한 연산을 해야하는 절차

관계해석(비절차적 언어)
  : 어떠한 연산을 했을때 나오는 결과(선언적)



관계대수의 정의
  - 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적인 방법
  - 원하는 관계를 얻기 위해 연산자와 연산규칙을 제공하는 언어
  - 연산의 집합


관계대수의 일반 집합 연산자
  1. 디비전 연산(Divition)
  2. 프로젝트(Project)
      - 테이블에서 속성에 해당하는 열을 선택하는데 사용
      - 결과는 릴레이션의 수직적 부분집합
      - π기호 사용 [ex. π(이름, 평균)]
  3. 조인(Join)
      - 공통된 속성 기준을 가진 2개의 표를 하나로 합치는 연산
  4. 설렉트(Select)
     - 조건을 만족하는 릴레이션의 수평적 부분집합
     - 행(튜플, 레코드)을 구하는 연산
     - σ(그리스문자 시그마) 사용 [ex. σ(평균≥90) 성적]


관계대수의 일반 집합 연산자
  1. 합집합(Union) : ∪기호 사용
  2. 교집합(Intersection) : ∩기호 사용
  3. 차집합(Difference) : -기호 사용
  4. 교차곱, 카디션곱(Cartesian Product)
       : 두 릴레이션의 카디널리티을 곱하여 결과를 추출
         (ex. 카디널리티가 2개인 릴레이션과 카디널리티가 3개인 릴레이션의 교차곱 = 3 X 2 = 카디널리티가 6개인 릴레이션)
       : 튜플의 수를 곱한것과 같다.

+ Recent posts