오늘보다 더 나은 내일의 나에게_
비전공자의 IoT 국비 교육 수강일지 Day_08 본문
연습문제
29. 이름이 DAVIES 인 사람보다 후에 고용된 사원들의 이름 및 고용 일자를 출력 / 고용 일자를 역순으로 출력
더보기날짜 역순 > DESC
=> 최근 날짜가 상단으로(역순)
30. King을 매니저로 두고 있는 모든 사원들의 이름 및 급여를 출력
더보기X
31. 회사 전체 평균 급여보다 더 많이 받는 사원들 중 이름에 u가 있는 사원들이 근무하는 부서에서 근무하는 사원들의 사번, 이름 및 급여를 출력
더보기X
우선순위를 먼저 정해야 한다(작성 시 문제 뒷부분부터 읽으면서 작성하면 수월)
데이터 조작(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 컬럼별로 입력할 데이터(값)를 명시
=> 모든 컬럼에 데이터 값을 삽입
방법 2
INSERT INTO TALBE명(컬럼이름)
VALUES 컬럼별로 입력할 데이터(값)를 명시
=> 명시된 컬럼에만 데이터 값을 삽입
NULL 값 삽입 방법
INTO 자동 => 컬럼이름 삭제
VALUES 수동 => NULL 명시 (많이 사용됨)
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의 배수입니다"를 출력하는 프로그램을 작성
'비전공자의 코딩일지' 카테고리의 다른 글
비전공자의 IoT 국비 교육 수강일지 Day_10 (0) | 2021.12.31 |
---|---|
비전공자의 IoT 국비 교육 수강일지 Day_09 (0) | 2021.12.30 |
비전공자의 IoT 국비 교육 수강일지 Day_07 (0) | 2021.12.28 |
비전공자의 IoT 국비 교육 수강일지 Day_06 (0) | 2021.12.27 |
비전공자의 IoT 국비 교육 수강일지 Day_05 (0) | 2021.12.24 |