오늘보다 더 나은 내일의 나에게_

Oracle 12/12/29 본문

Oracle

Oracle 12/12/29

chan_96 2022. 1. 12. 21:48
728x90

연습문제

29. 이름이 DAVIES 인 사람보다 후에 고용된 사원들의 이름 및 고용 일자를 출력 / 고용 일자를 역순으로 출력
더보기

날짜 역순 > DESC
=> 최근 날짜가 상단으로(역순)

29번 예제
30.  King을 매니저로 두고 있는 모든 사원들의 이름 및 급여를 출력
더보기

X

30번 예제
31. 회사 전체 평균 급여보다 더 많이 받는 사원들 중 이름에 u가 있는 사원들이 근무하는 부서에서 근무하는 사원들의 사번, 이름 및 급여를 출력
더보기

X
우선순위를 먼저 정해야 한다(작성 시 문제 뒷부분부터 읽으면서 작성하면 수월)

31번 예제

데이터 조작(DML)

-새 행 추가

-기존 행 수정

-기존 행 삭제

 

데이터 처리

->일괄처리 : 한 번에 모아서 한꺼번에 처리(안정적이 만 느림)

->실시간 처리 : 고객의 요청을 실시간으로 반영

->분산처리 

 

트랜잭션(자동/수동) : 일괄처리를 하기 위한 작업의 단위

 

수동(COMMIT, ROLLBAFCK) => TCL

COMMIT : 트랜잭션이 정상적으로 수행이 되었을 때 트랜잭션의 의해 작업내용이 한 번에 데이터베이스에 영구히 저장(트랜잭션에 의해 변경된 내용을 물리적으로 DB에 저장)

 

ROLLBACK : 트랜잭션이 비정상 작업이 진행되었을 때 트랜잭션 시작 이전 시점으로 취소

(트랜잭션이 진행 중인 상태에서 사용 가능/ 커밋이 되면 사용불가)

 

트랜잭션 단위

1.DML 문장 전체(연속된 문장 포함) = 1T

(DML명령어 다음에 새로운 트랜잭션이 실행될 때 종료)

EX) INSERT, INSERT, CREATE 실행 시 (INSERT두개의 명령어 종료 시 자동으로 COMMIT)

 

2.DDL, DCL 명령문 한 개가 = 1T

  (시작과 동시에 AUTO COMMIT)

 

DML

INSERT-행 단위 작업 진행

새로운 행이 추가가 되면 테이블의 마지막에 추가가 된다.

DELETE-행 단위 작업 진행

UPDATE-열 단위 작업 진행

 


INSERT문

-한 번에 한 행만 추가할 수 있음

-INTO 절에 명시된 컬럼의 순서, 개수, DATATYPE, 길이에 맞게 VALUES절의 데이터가 1:1로 알맞아야 함

-데이터 삽입 전 무결성 점검을 한다(COLUMN 무결성 순서, 길이, 타입 / 제약조건(PK FK) 무결성)

-서브 쿼리 사용 가능

 

방법 1 

INSERT INTO TALBE명

VALUES 컬럼별로 입력할 데이터(값)를 명시

=> 모든 컬럼에 데이터 값을 삽입

더보기
테이블명으로 INSERT

 

방법 2

INSERT INTO TALBE명(컬럼이름)

VALUES 컬럼별로 입력할 데이터(값)를 명시

 => 명시된 컬럼에만 데이터 값을 삽입

 

 

NULL 값 삽입 방법

INTO 자동 => 컬럼이름 삭제

VALUES 수동 => NULL 명시 (많이 사용됨)

더보기
INTO 자동으로 추가
VALUES 수동으로 추가

 

DUAL 테이블 

가상의 테이블, 알려지지 않은 작업을 할 때 사용

SYSDATE -> 시스템의 날짜 출력


UPDATE

테이블의 내용 수정 (열 단위 작업 진행)

SET에서 조건이 두 개 이상시 , (콤마)로 구분

UPDATE 테이블명
SET (변경시킬 값)
WHERE(선택사항, 하지만 생략 시 모든 테이블이 수정된다)
더보기
예제

DELETE

테이블에서 행 제거

DELETE FROM 테이블명
WHERE (선택사항, 생략 시 테이블 삭제)

 

부모 자식 관계 테이블

부모 테이블

INSERT - PK값 중 중복된 값을 추가 X

UPDATE, DELETE - 참조 값이 없으면 수정 가능

 

**데이터베이스 읽기일관성 현상**
다른 트랜잭션에 의해 변경된 내용은 다른 어떤 누구도 볼 수 없다.
커밋이 되어야만 변경된 데이터 값을 볼 수 있다.

**데이터베이스 대기상태**
트랜잭션이 진행 중인 상태에 LOCK이 걸림 => 다른 계정으로 수정할 수 없다.

**병행제어**
하나의 테이블에 여러 개의 트랜잭션이 동시에 실행되는데 그 트랜잭션에 LOCK이라는 자원을 설치함으로써 다른 트랜잭션에 의해 피해가 일어나지 않도록 동시에 일어나는 트랜잭션을 관리해주는 기법
LOCK으로 제한되어있다.

 

트랜잭션의 크기는 작을수록 좋다 => LOCK수가 많음
LOCK수가 적으면 동시성도 줄어듬!
트랜잭션의 크기가 크면 ROLLBACK 상황 시 데이터 손실량이 커짐
트랜잭션의 크기가 너무 작으면 과부하가 걸릴 수 있음(적절한 크기가 필요)

 

명령문 저장방법

SAVE ___. SQL

. SQL => 스크립트 파일

저장된 경로 => C:\oraclexe\app\oracle\product\11.2.0\server\bin (오라클 설치경로)

 

ED(에디터) - 버퍼 메모리를 이용

. SQL파일 - 파일 저장(여러 개의 명령문 저장 가능)

 

실행방법 @파일명(___. SQL)

 


오류 내용 정리

더보기

ERROR

ORA-00001: unique constraint () violated

=> 무결성 제약조건 에러

 

해결방법 - 중복된 PK값 제거 / INSERT, UPDATE문 시도


728x90

'Oracle' 카테고리의 다른 글

Oracle 21/12/31  (0) 2022.01.12
Oracle 21/12/30  (0) 2022.01.12
Oracle 21/12/28  (0) 2022.01.12
Oracle 21/12/27  (0) 2022.01.12
Oracle 21/12/24  (0) 2022.01.12
Comments