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

비전공자의 IoT 국비 교육 수강일지 Day_08 본문

비전공자의 코딩일지

비전공자의 IoT 국비 교육 수강일지 Day_08

chan_96 2021. 12. 29. 20:07
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문 시도


연습문제

예제 7. 일의 자리를 1로 바꾸는 코드를 작성
ex) int num = 456 -> 451
num = 777 -> 771

 

예제 9. JAVA, Web, Android 점수를 키보드로 입력받아 합계와 평균을 출력
->평균은 소수점 둘째 자리까지
예제 10. 초를 입력받아 [시, 분, 초] 형태로 출력하세요

 

대입 연산자

연산의 결과를 담을 때 사용하는 연산자

 

대입, 할당 연산자 복합 대입연산자
= +=, -=, *=, /=, %=....
ex) a=b , a=b+1 ex) a += b

 

증감 연산자

변수에 저장된 값을 1 증가 혹은 1 감소해주는 연산자

++(증가연산자) --(감소연산자)
++변수 --변수
변수++ 변수--

 

비교 연산자

부등호 연산, 같다/다르다 연산자

<, <=, >, >= ==, !=
a > b, a >= b a == b, a != b

=> 결과 값 : boolean(true or false)

 

논리 연산자

NOT, AND, OR 연산자

NOT(!) - 명제의 반대(false => true, true => false)

AND(&&) - 둘 다 참일 경우에만 true(모두 true이어야 true)

OR(||) - 둘다 거짓일 경우에만 false(하나라도 true면 true)

 

=>피연산자는 boolean(true or false)이어야 함

=>결과 값 : boolean(true or false)

 

삼항연산자

간단한 제어 처리

사용방법 = (조건문) ? (실행문1) : (실행문2)

실행문1 -> 참일 때

실행문2 -> 거짓일 때

 

 

삼항연산자 예제

더보기
삼항 연산자 예제
예제2. 정수를 입력받아 홀수인지 짝수인지 판별하세요
예제3. 두개의 정수를 입력 받아 큰수에서 작은수를 뺀 결과값을 출력
*조건. 작은수에서 큰수를 빼도 큰수에서 작은수를 뺄수있도록

 

연산자 우선순위

증감 -> 산술 -> 비교 -> 논리 -> 삼항 -> 대입

 

비트 연산자

AND(&), OR(|), XOR(^), NOT(~)

 

(비트)시프트연산자

>>, <<

 

 

조건문

주어진 조건을 비교/판단하여 그 조건에 만족할 경우 지정된 명령을 실행하고

만족하지 않을 경우 다음 단계의 명령을 수행 하도록 하는 구문

 

종류 - 단순 if문, if~else문, 다중 if~else문, switch문

 

단순 if문 => if문의 조건식이 참이면 if문 내부의 '실행문장'이 실행되며 거짓이면 if문을 벗어남(조건은 1개)

조건은 항상 논리형(boolean: true/false)

일반적으로 논리, 비교연산자 사용!

if(조건식){ 실행문장 }

 

예제2. int 타입의 변수 num을 선언하고 키보드로 값을 입력받으시오. 만약 입력받은 값이 3의 배수이거나 5의 배수이면 "3또는 5의 배수입니다"를 출력하는 프로그램을 작성

 

728x90
Comments