-
Notifications
You must be signed in to change notification settings - Fork 0
/
SRT01.PY
172 lines (129 loc) · 7.47 KB
/
SRT01.PY
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# 1. 데이터 추가, 수정, 삭제
# 1. 추가 INSERT
# INSERT INTO 테이블(column1, column2, column3...)
# VALUES (VALUE1. VALUE2, VALUE3....)
# EMP 테이블에 새로운 직원 정보를 추가해보자
# INSERT INTO EMP(,,)
# VALUES(,,);
# 이런 식으로 생성하면 만들어짐
# INSERT INTO EMP( EMPNO, ENAME, JOB,SAL,DEPTNO)
# VALUES( 9999,'YANG','MANAGER', 5000,40 );
# 연결된 테이블 주의, 기본키 주의
# 2. 수정 UPDATE
# UPDATE 테이블
# SET column1 = value1,
# column2 = value2,
# ....
# where 조건식;
# 어떤 row 수정할건지 명확하게 해주기 위해 조건식이 필요하다.
# UPDATE EMP
# SET JOB = 'CEP'
# WHERE EMPNO = 9999;
# 추가 수당 있는 직원들 급여 10%인상, SALESMAN -> SALESPSN
# UPDATE EMP
# SET SAL = SAL*1.1,
# JOB = 'SALESPNS'
# WHERE COMM IS NOT NULL;
# 3. 삭제 DELETE
# DELETE FROM 테이블
# WHERE 조건식;
# 예시
# DELETE FROM EMP
# WHERE EMPNO = 9999;
# DELETE FROM EMP
# WHERE ENAME = 'YANG';
# - 트랜잭션(Transaction, Tx)
# 쪼갤 수 없는 업무 처리의 최소 단위
# 데이터 베이스에서 한 개 이상의 작업을 논리적으로 묶은 작업의 단위이다.
# 데이터 베이스의 일관성과 안정성을 보장하기 위해 사용된다.
# 일련의 작업들 모두 성공적으로 수행되거나, 모두 취소되어야 한다.
# ACID
# 1. 원자성(Atomicity)
# 트랜잭션은 하나의 원자적 단위로 간주된다. 모든 작업이 성공적으로 수행되거나
# 하나라도 실패할 경우 모든 작업이 취소되어 이전 상태로 롤백된다.
# 2. 일관성(Consistency)
# 트랜잭션이 샐행 전과 후에도 데이터베이스는 일관된 상태를 유지하여야 한다.
# 트랜잭션이 수행하는 작업들은 모두 정의된 규칙과 제약 조건을 준수하여 실행되기 떄문에
# 데이터베이스를 항상 유효한 상태로 유지한다.
# 3. 독립성(Isolation)
# 여러 개의 트랜잭션이 동시에 실행될 때, 각각의 트랜잭션은 다른 트랜잭션에 영향을 주지 않고,
# 독립적으로 실행되는 것처럼 보여야 한다. 한 트랜잭션이 다른 트랜잭션에서 변경한 내용을 볼 수 없다.
# 뱐걍 내용은 커밋 전까지 다른 사용자에게 공개되지 않는다.
# -트랜잭션 LOCK
# 데이터베이스에서 여러 트랜잭션이 접근하는 경우 데이터의 일관성과 무결성을 위해 사용된다.
# 트랜잭션이 데이터를 읽거나 수정하는 동안 다른 트랜잭션들이 해당 데이터로 접근을 막아준다.
# 1. 공유(Shared) LOCK
# 한 트랜잭션이 데이터를 읽기 위해 사용하는 잠금
# 2. 배타(Exclusive) LOCK
# 한 트랜잭션이 데이터를 수정하거나 삭제하기 위해 사용하는 잠금
# 4. 지속성(Durability)
# 성공적으로 완료된 트랜잭션에서 발생한 변경 사항은 영구적으로 저장되어야 한다.
# 시스템 장애 또는 데이터 손실, 전원 손실 등의 문제들이 발생하더라도 데이터는 안전하게 보존된다.
# - 트랜잭션 명령어(DBMS)
# 트랜잭션의 시작, 종료, 커밋, 롤백과 같은 작업들을 실행할 수 있다.
# 1.ROLLBACK : 현재 진행 중인 트랜잭션의 변경 사항을 모두 취소하고 이전 상태로 되돌린다.
# 2. COMMIT : 현재 진행 중인 트랜잭션의 변경 사항을 영구적으로 저장하고, 트랜잭션을 종료한다.
# 커밋 이전에 수행한 모든 데이터 조작이 실제로 데이터베이스 반영된다.
# 3. BEGIN 또는 START TRANSACTION : 새로운 트랜잭션을 시작합니다.
# 이 명령어를 실행하면 DBMS에서 모든 작업을 트랜잭션을 그룹화해준다.
# BEGIN:
# START TRANSACTION;
# 4. SAVEPOINT : SAVEPOINT를 사용하여 현재 트랜잭션 내에서 지정된 포인트까지만 롤백할 수 있는
# 포인트를 설정할 수 있다. SAVEPOINT를 사용하여 ROLLBACK 범위를 제한한다.
# SAVEPOINT savepoint_name;
# 5. RELEASE SAVEPOINT : 해당 SAVEPOINT를 해제할 수 있다.
# RELEASE SAVEPOINT savepoint_name;
# # 6. AUTOCOMMIT: 각 SQL문이 개별적인 자동 커밋 단위로 처리된다. COMMIT 없이도 SQL문의 실행결과가 바로 반영된다.
# AUTOCOMMIT;
# -세션 (Session)
# 클라이언트와 서버 간의 상호작용을 유지하기 위한 일련의 연결 상태.
# 세션이 클라이언트가 서버에 접속해서 작업을 하는 하는 동안 서버 간의 통신과 관련된 정보를 저장.
# 1. 유지성 : 세션은 클라이언트가 로그아웃하거나 일정 시간동안 비활성 상태인 경우에도 일정 시간동안 남아있다.
# 2. 상태 정보 저장
# 서버 간의 통신과 관련된 정보를 저장
# 3. 고유 식별자
# 각 세션에는 고유한 식별자(Session ID)가 할당된다. 이 식별자를 쿠키 또는 url을 통해 클라이언트에게
# 전달하고 해당 세션을 식별하는데 사용된다.
# 4. 보안
# 세션은 인증 및 권한 부여와 같은 보안 요구 사항을 처리하기 위해 사용될 수 있다.
# 사용자 인증 후에만 성립되는 안전한 연결로 중요한 데이터를 처리할 수 있도록 도와준다.
# 5. 서버 리소스 사용
# 각 세션이 서버의 메모리 또는 디스크 공간 등에서 리소스를 소비한다.
# 따라서, 많은 수의 동시 접속자가 있는 경우 리소스 소비가 많아진다.
# 데이터 정의어(DDL, Data Definition Language)
# 데이터베이스 구조를 정의하고 조작하는데 사용되는 SQL 문의 일부분이다.
# DDL은 객체(테이블, 인덱스, 뷰)를 생성, 수정 및 삭제하는 작업을 수행한다.
# 1.CREATE: 새로운 데이터베이스 객체를 생성한다.
# CREATE 객체 (요소);
# 2. ALTER : 이미 존재하는 데이터베이스 객체를 변경한다.
# ALTER 객체 객체명 ADD COLUMN ; 열 추가
# TABLE EMP COLUMN 열이름 자료형 ; 열 수정
# DROP COLUMN 열이름 ; 열 삭제
# 3. DROP : 데이터베이스 객체를 삭제한다.
# DROP 객체 객체명;
# 4. COMMENT : 데이터베이스 객체에 대한 설명(주석)을 추가한다.
# COMMENT ON 객체 객체명 IS '설명~~~';
# 5. RENAME : 데이터베이스 객체의 이름을 변경한다.
# RENAME 객체 객체명 T0 새로운 객체명
# 6. TRUNCATE : 테이블에서 모든 행을 제거하여 초기 상태로 만든다.
# TRUNCATE TABLE 테이블명;
# 7. GRANT, REVOKE ; 사용자에게 권한을 부여하거나 회수한다.
# GRANT SELECT INSERT ON 객체명 TO 유저명
# REVOKE SELECT, INSERT ON 객체명 FROM 유저명
# - 객체 종류
# 1. 테이블(Table)
# 2. 인덱스(Index) : 검색속도를 향상시키기 위해 사용된다.
# 3. 뷰(View) : 우리가 쿼리 결과를 볼 수 있도록 만들어진 가상 테이블, 저장 공간 차지하기 않는다.
# 4. 저장 프로시저(Stored Procedure) : SQL문과 프로그래밍 로직을 결합해서 실행가능한 코드 단위로
# 데이터베이스 내부 프로그램이다.
# 5. 트리거(Trigger) : 데이터베이스에서 발생하는 이벤트(작업)을 자동로 응답하여 실행되도록 설정한 작업
# 6. 함수(Function)
# - 제약 조건
# 1. Primary Key 기본키
# 2. Foreign key 외래키
# 3. Unique 고유 제약 조건
# Table EMP COLUMN 열이름 자료형 UNIQUE;
# 4. 체크 제약 조건
# Table EMP COLUMN 열이름 자료형 CHECK(조건식);
# 5. NOt NULL 제약 조건
# Table EMP COLUMN 열이름 자료형 NOT NULL;