JAVA/JAVA개발자 양성과정

[MYSQL] 자바 개발자 양성과정 14일차 - TRANSACTION, TCL, DDL, DCL, 제약조건, CHECK

728x90
반응형

🙍‍♀️🙍‍♀️🙍‍♀️주저리🙍‍♀️🙍‍♀️🙍‍♀️

SQLD자격증시험이 이틀남았는데

오라클 모르는 부분이 너무 많아서 멘붕이다 ㅋㅋ


lnlineview (이너뷰)

FROM에 들어가는 서브쿼리를 부르는 용어


REM DML과 TRANSACTION
1. DDL 명령어인 경우에는 직접 Database의 table에 영향을 미치기 때문에 DDL명령어를 입력하는 순간 명령어에 해당하는 작업이 즉시(AUTO COMMIT) 완료된다.
2. 하지만, DML 명령어의 경우, 조작하려는 table을 memory buffer에 올려놓고 작업을 하기 때문에 실시간으로 table에 영향을 미치는 것이 아니다.
3. 따라서 buffer에서 처리한 DML 명령어가 실제 table에 반영되기 위해서는 COMMIT 명령어를 입력하여 Transaction을 종료해야 한다.
4. table의 전체 data를 삭제하는 경우, System 활용 측면에서는 삭제된 data를 log로 저장하는 DELETE TABLE 보다는 System 부하가 적은 TRUNCATE TABLE을 권고한다.

 

TRANSACTION

1. 행의 LOCK 처리를 기본으로 한다(데이터가 들어가고 락걸고 작동하고 락 해제되고... 반복) -> 데이터의 일관성을 보장 

2. 전부 적용하거나 전부취소하거나 한다. (ALL OR NOTING)

 

TCL(Tracnsaction Control Language)
1)COMMIT : 보류중인 데이터를 영구적인 데이타베이스로 변경사항을 저장하고 현재의 TRANSACTION 을 종료한다.
2)ROLLBACK [TO SAVEPOINT name]: 세이브 포인트까지 보류중인 데이터의 변경사항을 모두 되돌리고 현재의 트랜젝션을 종료한다. 만일 특정지점을 지정하지 않 으면 모든 트랜젝션 취소한다 .
3)SAVEPOINT name :현재의 트랜젝션의 저장점을 표시한다 .

 

오라클에서는 CMD로 접속해서 수정한 경우 트렌젝션에 포함되어 버퍼에 저장되고, HEIDSQL 과 같은 프로그램에서 수정할정우 원본데이터에 수정된다.,


데이블 생성시 유의사항

캐릭터 셋을 꼭 줘야한다!

우리는 한국이라 한글을 사용하기 때문임

CREATE DATABASE study_db default CHARACTER SET UTF8;


데이터베이스 여부에 따라 삭제 여부 선택

데이터베이스가 있으면 삭제하고 없으면 아무런 실행하지 말아라

DROP DATABASE [IF EXISTS] db_name


TRUNCATE 

- 테이블 구조는 유지한채로 데이터만 지우는 방법

1) DROP TABLE는 테이블 구조까지 삭제함

2) ROLLBACK 불가능

3) 모든 행을 제거할 때는 DELETE보다 TRUNCATE TABLE문을 사용

TRUNCATE TABLE emp30;

CMD에서 DICTIONARY 에서 제약 조건 검색

mysql접속

> information_schema.table_constraints;

> select * FROM table_constraints
WHERE table_name = 'emp';


PK

컬럼 두개를 합쳐서 pk를 잡을 수있지만, 두개의 커럼 각각 pk로 잡을 수는 없다.


CHECK

행이 만족해야 하는 조건을 정의하는 것이다.

해당 컬럼에 입력될 데이터가 10,20,30,40,50 중에 하나인지 체크한다.

CREATE TABLE dept_copy
(
deptno SMALLINT,
dname VARCHAR(20),
loc VARCHAR(20),
CONSTRAINT dept_copy_deptno_pk PRIMARY KEY(deptno),
CONSTRAINT dept_copy_deptno_ck CHECK(deptno IN(10,20,30,40,50))
);
-- , , , 4 , 사원번호 사원명 급여 성별 개의 칼럼을 갖는 테이블을 생성하시오
-- , NOT NULL , 500 5000 단 사원번호가 기본키로 사원명은 로 급여는 에서 사이의 값만
-- , M, F . 저장할 수 있고 성별은 남자는 여자는 둘중의 하나만 저장할 수 있어야 한다
CREATE TABLE emp2
(
empno INT PRIMARY KEY,
ename VARCHAR(10) NOT NULL,
sal DECIMAL(7,2) CHECK(sal BETWEEN 500 AND 5000),
gender CHAR(1) CHECK(gender IN('M', 'F'))
);
728x90
반응형