일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- You are importing createRoot from "react-dom" which is not supported. You should instead import it from "react-dom/client"
- 자바스크립트
- 리액트
- 노드에 리액트 추가하기
- 모두의 파이썬
- Python
- node.js 설치
- 모던자바스크립트
- 인프런
- spring-boot
- 계산맞추기 게임
- Concurrently
- intellij
- 타자 게임 만들기
- 따라하며 배우는 노드 리액트 기본 강의
- react
- DB Browser
- props
- 웹 게임을 만들며 배우는 리액트
- Spring-Framework
- 거북이 대포 게임
- vs code 내 node
- ReactDOM.render is no longer supported in React 18. Use createRoot instead
- react오류
- Do it 자바스크립트 + 제이쿼리 입문
- intllij 내 Bean을 찾지 못해서 발생하는 오류
- googleColaboratory
- Colaboratory 글자 깨짐
- node.js로 로그인하기
- JS 개념
- Today
- Total
프로그래밍 삽질 중
SQL 트랜잭션, 세션, 사용자 관리 설명 및 예제 본문
※ 트랜잭션 : 더 이상 쪼개질 수 없는 최소 수행단위
- SQL문장들의 집합
- 논리적인 작업의 단위
- 처리 순서는 중요하지 않으나 두 개의 UPDATE문이
모두 정상적으로 실행되어야 함
※ 트랜잭션 특징(ACID)
- 원자성 : 전부 수행 OR 전부 수행X
- 일관성 : 트랜잭션 수행 전, 후 항상 일관된 데이터베이스 상태 유지
- 격리성 : 트랜잭션이 완료될 때까지 중간에 결과 접근X
- 지속성 : 영구 보존
※ COMMIT 연산
- 트랜잭션 수행이 성공적으로 완료되었음을 선언하는 연산
- COMMIT 연산 실행 시 트랜잭션 수행 결과가 데이터베이스에 반영 → 일관된 상태 지속적으로 유지
※ ROLLBACK 연산
- 트랜잭션 수행이 실패했음을 선언하는 연산
- 그동안 실행한 연산 결과가 취소되고 트랜잭션 수행 전의 일관된 상태로 돌아감
※ TCL(Transaction Control Language)
- 트랜잭션은 DB계정을 통해 접속하는 동시에 시작
- TCL을 실행할 때 종료 후 새로운 트랜잭션 시작
- DCL, DDL 사용 할 때도 새 트랜잭션이 시작되는 효과
※ 세션(SESSION)
- 어떤 활동을 위한 시간이나 기간
- 데이터베이스 접속을 시작으로 여러 관련 작업을 수행한 후 접속을 종료하기까지 전체 기간
- 세션 내부에는 하나 이상의 트랜잭션 존재
- 세션과 관련된 트랜잭션 확인 → 작업표시줄 검색창에 'SQLPLUS'
→ 아이디, 비번 치기(SQL과 동일)
※ LOCK
- 특정 세션에서 조작 중인 데이터는 트랜지션이 완료되기 전까지 다른 세션에서 조작될 수 없는 상태
- 조작하는 대상 데이터가 특정 행 데이터일 경우, 해당 행만 LOCK 발생
- WHERE이 없는 UPDATE, DELETE → 전체 행이 LOCK
- 전체 행이 LOCK이어도 INSERT문 수행가능
- 하나의 데이터를 여러 곳에서 동시에 조작하려 할 때 발생할 혼란 최소화
※ 사용자 생성
- CREATE USER 사용자 이름
IDENTIFIED BY 패스워드
- 사용 전 시스템 권한 주는 것이 필수
→ GRANT (객체권한)
ON (스키마.객체 이름)
TO (사용자이름/롤이름)
(WITH GRANT OPTION)
※ 사용자 권한
- GRANT : 권한을 줌
- REVOKE : 권한을 뺏음
[예제 1] - 트랜잭션
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
CREATE TABLE DEPT_TCL
AS SELECT * FROM DEPT;
INSERT INTO DEPT_TCL VALUES(50, 'DATABASE', 'SEOUL');
UPDATE DEPT_TCL SET LOC = 'BUSAN' WHERE DEPTNO = 40;
DELETE FROM DEPT_TCL WHERE DNAME = 'RESEARCH';
-- ROLLBACK : 명령 취소
ROLLBACK;
SELECT * FROM DEPT_TCL;
INSERT INTO DEPT_TCL VALUES(50, 'NEWYOTK', 'SEOUL');
UPDATE DEPT_TCL SET LOC = 'BUSAN' WHERE DEPTNO = 20;
DELETE FROM DEPT_TCL WHERE DEPTNO = 40;
INSERT INTO DEPT_TCL VALUES(50, 'NEWYOTK', 'SEOUL');
--COMMIT : 변경 값 결과 반영
COMMIT;
DELETE FROM DEPT_TCL
WHERE DEPTNO = 50;
SELECT * FROM DEPT_TCL;
COMMIT;
|
cs |
[예제 2] - LOCK
1
2
3
4
5
6
|
--LOCK : 특정 세션에서 조작 중인 데이터는 트랜지션이 완료되기 전까지
--다른 세션에서 조작될 수 없음 UPDATE DEPT_TCL SET LOC = 'SEOUL'
WHERE DEPTNO = 30;
SELECT * FROM DEPT_TCL;
COMMIT; --커밋을 해야 세션 SQLPLUS에서 UPDATE가 됨
|
cs |
[예제 3] - 사용자 권한
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | --사용자 생성 CREATE USER C##GLOBAL IDENTIFIED BY ORACLE; GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO C##GLOBAL; --사용자 생성 후 테이블 ㅏ CREATE TABLE TEMP ( COL1 VARCHAR(20), COR2 VARCHAR(20) ); -- GLOBAL에 권한 부여 GRANT SELECT , INSERT ON TEMP TO C##GLOBAL; --GLOBAL에 권한 회수 REVOKE SELECT, INSERT ON TEMP FROM C##GLOBAL; SELECT * FROM EMP; | cs |
'과거 프로그래밍 자료들 > SQL(Oracle)' 카테고리의 다른 글
SQL 커서 설명 및 예제 (0) | 2021.03.24 |
---|---|
SQL PL/SQL 설명 및 예제 (0) | 2021.03.23 |
SQL 객체종류(인덱스, 뷰, 시퀀스 등) 설명 및 예제 (0) | 2021.03.23 |
SQL 예제 문제(1) (0) | 2021.03.23 |
SQL 제약 조건 설명 및 예제 (0) | 2021.03.22 |