일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- tfidf
- python
- 광주국비지원학원
- 인공지능
- 자바
- Selenium
- 과대적합제어
- 데이터프레임
- permisision부여
- CountVectorizer
- 광주인공지능학원
- 댓글분석
- 토큰화
- sellenium
- 셀리니움
- jsp
- relu
- 과대적합
- 크롤링
- DataFrame
- servlet
- 딥러닝
- 인공지능학원
- 머신러닝
- 웹크롤링
- 활성화함수
- 파이썬
- 유투브크롤링
- 스마트인재개발원
- iris붓꽃
- Today
- Total
+ Hello +
0510 DB (1) 데이터 조작 insert, update, delete 본문
8. 데이터 조작
p317
* DML : 전체의 트랙젝션
- DDL,DCL : 문장 하나가 하나의 트랜젝션, 실행과 동시에 auto commit(바로 저장되어버림)
트랜젝션
- 일괄처리
- 저장(커밋, ,commit : DB 영구히 저장), 취소(롤백 roll back : 현재 진행중인 트랜젝션들의 전체 취소)
1. insert(삽입) : 행 단위 작업
테이블 맨 마지막!!에 새 행을 추가함
테이블은 행의 순서를 제어하지 않음
* index
non_cluster : 별도의 공간에 저장되는 index
cluster : table과 index의 구조를 합쳐둔 것 (table자체가 행의 순서를 정렬, 이 경우 외에는 순서를 제어하지 x)
- insert 구문 : 한 번에 한 행만!! 추가됨
insert into + table_name
values
insert into + (삽입할)table_name
1. table_name만 명시 insert test
- table에 있는 모든 column의 데이터를 삽입
2. colmn 같이 명시 insert test(a,b,c)
values + 값
1. into 절에 명시된 column의 순서, 개수, data type, 길이와 values절의 값을 반드시 1:1로 매칭해야한다!
ex) insert into dept(did, dname, mid, lid)
vlaues( 100, 'aa, 200, 1700)
()의 순서가 1:1로 매칭되어야 함
- insert into departments
values(200, 'ITCENTER', 100, 1700);
> 에러 뜸 200번이 이미 존재하기 때문에
즉, 무결성
* insert 무결성 검증
- 1) column 무결성 : 구조(data type, 길이) 즉 구조에 맞는 data만 삽입되어야 한다
ex) dname 문자 5자리 > aaaaaa(6자리) 삽입 안됨!
- 2) 제약조건 무결성 : PK(중복x), FK(다른 table 값 참고) 의 무결성 보장
제약조건에 위배가 되는 data 삽입 방지
* null값에 입력하는 방법(2가지)
1) insert into departments(department_id, department_name) // 원래 4개인데 입력하고 싶은 column 이름만 작성!
values(300, 'ITCENTER');
>> into 절에 column이름을 빼는 방법(자동삽입, 암시적 방법)
2) insert into departments
values(310, 'ADMIN', null, null);
>> values에 null 직접 입력해주는 방법(수동삽입, 명시적 삽입방법)
-------------------------------------------------------------------------------
- sysdate 함수 : 현재 날짜 및 시간을 기록
select sysdate from dual;
- dual table 비어있어서
select 123*15936 from dual > 값이 나옴
2. update : 열col 단위 작업
- update 구문 :
update table_name
set (변경시킬)column_name = value;
where 선택사항
3. delete : 행 단위 삭제 (334p)
- 구문 :
delete from table;
(where 선택사항)
- delete from departments;
- 동시성 : 동시에 수많은 사람들이 database를 다를 수 있음
- 읽기 일관성 : 데이터를 t1이 변경하고 중간에 commit 되지 않으면 t2가 변경하고 commit했을 때 t1은 반영x
- database 대기상태(lock)
: 병행제어(동시에 여러개의 트랜젝션이 실행됐을 때 다른 트랜젝션이 내 트랜젝셩에 적용하기 못하게 만드는 것 즉 lock)
T1(lock)
update employees
set salary = 20000
where employee_id = 141;
T2
update employees
set salary = 30000
where employee_id = 141; 실행 xx (T1이 진행중인 것으로 나오기때문에)>병행제어(lock) 즉 대기상태, 멈춰버림
T1 commit저장하면(혹은 rollback으로 ing 끝나면) T2 실행됨
- 서로가 서로의 트랜젝션에 접근하면 deadlock 상태 됨(즉 둘다 대기상태일 때)
T1 T2
id = 141 id = 142
id = 142 (대기) id = 141 (대기)
>> deadlock상태
'+ 스마트인재개발원 + > # DB' 카테고리의 다른 글
0510 DB (3) 3 예제 풀이 (0) | 2021.05.30 |
---|---|
0510 DB(2) 제약조건, 테이블 생성 (0) | 2021.05.30 |
0507 DB 조인 (0) | 2021.05.30 |