본문 바로가기
  • think normal
새로워지기/서른의 생활코딩

5일차) SQL 질의어, 그 중 트랜젝션에 대해 알아보자 20180604pm

by 청춘만화 2018. 6. 4.
5일차) SQL 질의어, 그 중 트랜젝션에 대해 알아보자 20180604pm 


[오후 수업 _데이터베이스]

SQL structured query language 의 구조화된 질의언어

1. 데이터 정의어 DDL data definition language 
*데이터 공간을 다룬다 : DB구조 또는 스키마 정의
1) create 개체 생성
2) alter 개체 변경(구조변경)
3) drop 개체 삭제

2. 데이터 조작어 DML data manipulation language 
1) insert 데이터 입력
2) update 데이터 수정
3) delete 데이터 삭제
4) select 데이터 검색

3. 데이터 제어어 DCL data control language 
1) grant 권한 부여
2) revoke 권한 회수

4. 트렌젝션 제어어 TCL transaction control language 
1) commit 트랜젝션이 영구 적용 : 변화반영 
2) rollback 마지막 commit 시점으로 회기 : 반영하지 않는 것 
3) savepoint 임시저장화된 질




Transaction 

1. 트렌젝션 

목적을 가진 논리적 단위(사이클)

데이터베이스를 수행하는 기본적인 단위

장애 발생 시, 맨 처음 상태로 돌아간다(원자성)


2. 트렌젝션 특징

1) 원자성(Atomicity) 

트랜잭션의 처리는 완전히 끝마치지 않을 경우에는 전혀 이루어지지 않은 것과 같아야 한다. 

이러한 특성을 All or Nothing"이라 한다. 

2) 일관성(Consistency)  

트랜잭션들간의 영향이 한 방향으로만 전달되어야 한다. 

3) 고립성(Isolation) 

트랜잭션의 부분적인 상태를 다른 트랜잭션에 제공해서는 안된다. 

ex)홍길동이 화장실에서 큰일 보는 중에 변사또가 들어갈 수 없듯이

4) 지속성(Durability) 

성공적인 트랜잭션의 수행(커밋) 후에는 반드시 데이터베이스 (디스크)에 반영하여야 한다.







데이터베이스 물리설계

CMD 관리자 모드로 계정을 생성하고 
SQL development로 SQL문을 작성한 후
ERD로 표현한다  

cmd

> sqlplus sys/java@localhost:1521 as sysdba;

> create user pc04 identified by java;

> grant connect, resource to pc04;



ERwin > (physical) > tools

환경설정 세팅 

1) database  > choose database  > oracle(선택) 

2) database > database connection > id/pw/ip(or localhost or 127.0.01:1521/xe)

//네트워크 상의 내 주소/연습용 

forward engineering

1) tools > forward engineering > schema >  (trigger 선택 해제) > generate..

ERD ERwin  ----- 정방향으로 흘러가는 것 -----> DB SQL development


reserve engineering

1) tools > reserve engineering > (logical/physical 선택) 

2) table/views owned 개체/가상의 소유자     

current user 접속되어있는 사용자

ERD ERwin  <---구조(스키마)를 끌어오는 것 ---- DB SQL development



SQL development

CTRL + N  : 데이터베이스 파일 만들기  ( study.sql )


CREATE TABLE LPROD  --상품분류 테이블

(

    LPROD_ID    NUMBER(5)   NOT NULL,   --순

    LPROD_GU    CHAR(4) NOT NULL,   --상품분류코드

    LPROD_NM    VARCHAR(40) NOT NULL,   --상품분류명

    CONSTRAINT  PK_LPROD PRIMARY KEY(LPROD_GU)  --식별영역(key)

);

SELECT * FROM LPROD;




CREATE TABLE BUYER  --거래정보 테이블

(

    BUYER_ID    CHAR(6) NOT NULL,    --거래코드  

    --//키 정의(제약사항) 추가하기 1) BUYER_ID    CHAR(6) NOT NULL PRIMARY KEY,

    BUYER_NAME  VARCHAR2(40) NOT NULL,  --거래처명

    BUYER_LGU   CHAR(4) NOT NULL,   --취급상품대분류

    BUYER_BANK  VARCHAR2(60),   --은행

    BUYER_BANKNO    VARCHAR2(60),   --계좌번호

    BUYER_BANKNAME  VARCHAR2(15),   --예금주

    BUYER_ZIP   CHAR(7),    --우편번호  

    BUYER_ADD1  VARCHAR2(100),  --주소1

    BUYER_ADD2  VARCHAR2(70),   --주소2

    BUYER_COMTEL    VARCHAR2(14)    NOT NULL,   --전화번호

    BUYER_FAX   VARCHAR2(20)    NOT NULL    --FAX번호

    ----//키 정의(제약사항) 추가하기 2) CONSTRAINT  PK_BUYER_ID PRIMARY KEY(BUYER_ID)  

        --식별영역(key) //키 정의 추가하기 + PRIMARY KEY

        -- 그런데 BUYER_ID가 무엇인지 궁금할 수 있다. EX)반장오세요 VS 홍길동 반장 오세요

        -- 기본키는 테이블마다 다 있으니까 중복될 수 있다. 그래서 별도의 명칭을 정의 

        -- => (개체 이름)PK_BUYER_ID 하나의 계정 안에서 중복되면 안된다.

);

SELECT * FROM LPROD;


    ----//키 정의(제약사항) 추가하기 2)

ALTER TABLE BUYER

ADD(

    CONSTRAINT PK_BUYER PRIMARY KEY(BUYER_ID)

);

/*  ALTER TABLE BUYER

    ADD : 컬럼 및 제약사항 추가 가능

    MODIFY : 컬럼 수정

    DROP : 컬럼 삭제

    RENAME : 컬럼명 변경

*/


--BUYER 테이블 구조확인

DESC BUYER;




댓글