반응형

이 글은 뉴렉쳐 오라클 데이터베이스 SQL 강의 수강하며 정리한 글입니다.

 

 

조회수가 0, 1, 2인 게시글을 조회하시오.

 

조회수가 0, 2, 7인 게시글을 조회하시오.

 

조회수가 0, 2, 7이 아닌 게시글을 조회하시오.

 

 

소스 코드

🔗 HJ0216/TIL/OracleSQL

 
 
반응형
반응형

이 글은 뉴렉쳐 오라클 데이터베이스 SQL 강의 수강하며 정리한 글입니다.

 

 

15강 비교연산자(=,!=,^=,...)

 

!= : not equal (recommand)
^= : not equal
<> : not equal

 

-- 게시글 중에서 작성자가 ‘newlec’인 게시글만 조회하시오.
SELECT * FROM NOTICE WHERE WRITER_ID='HJ0216';

-- 게시글 중에서 조회수가 3이 넘는글만 조회하시오.
SELECT * FROM NOTICE WHERE HIT>3;

-- 게시글 중에서 내용을 입력하지 않은 게시글을 조회하시오.
SELECT * FROM NOTICE WHERE CONTENT IS NULL;
-- CONTENT가 비어있는 레코드 탐색

SELECT * FROM NOTICE WHERE CONTENT = 'NULL';
-- NULL이라는 문자값이 들어간 레코드 탐색
-- 내용이 입력되지 않은 경우, NULL값이 저장되어있음

-- 게시글 중에서 내용을 입력한 게시글만 조회하시오.
SELECT * FROM NOTICE WHERE CONTENT IS NOT NULL;
-- CONTENT가 비어있지 않은 레코드 탐색

 

 

 

소스 코드

🔗 HJ0216/TIL/OracleSQL

반응형
반응형

이 글은 뉴렉쳐 오라클 데이터베이스 SQL 강의 수강하며 정리한 글입니다.

 

 

14강 연산을 통한 데이터 조회 (산술 연산자)

 

공지사항의 조회수를 조회하시오.

단, 기존 값에 1을 더해서 조회하시오.

SELECT HIT+1 FROM NOTICE;

→ COL NAME: HIT+1이 되는 문제 발생

 

COL_NAME 별칭 부여

SELECT HIT+1 HIT FROM NOTICE;
-- SELECT HIT+1 AS HIT FROM NOTICE;
-- AS 생략이 바람직

 

SELECT는 반드시 FROM과 사용해야 함

SELECT 1 +’3’; → 산술 연산을 실행하여 출력할 수X

SELECT 1 + '3' FROM DUAL;
-- 4

ORACLE에서 제공하는 DUMMY TABLE(DUAL) 사용하여 산술 연산 시행

일반적으로 +연산자 수행 시, 데이터 손실이 없는 방향으로 연산이 맞춰지기에 문자로 변환됨

⚠️ 그러나 SQL에서는 +는 숫자만 더해주므로 4가 도출됨

 

→ 문자 연결 시, 다른 연산자 사용

문자열 덧셈 연산자(||)

SELECT ‘3’ || 10 FROM DUAL;
-- 13

 

모든 회원의 이름을 조회하시오.

단 이름은 ID를 붙여서 나타내시오. 예: 홍길동(hong)

SELECT NAME || '(' || ID || ')' NEW_NAME FROM MEMBER;
-- 손오공(dragon)

 

 

 

소스 코드

🔗 HJ0216/TIL/OracleSQL

반응형
반응형

이 글은 뉴렉쳐 오라클 데이터베이스 SQL 강의 수강하며 정리한 글입니다.

 

 

13강 Transaction 처리를 위한 Commit/RollBack

Transaction: 업무 실행단위 / 논리 명령단위
1. 업무적인 단위
‘계좌이체’ 처리
2. 물리적인 명령어 단위
2개 이상의 Update(명령어) 처리 필요
(송금인 계좌-, 수금인 계좌+ 등)
⚠️ 송금인의 계좌에 잔액이 부족한 경우 문제가 발생
→ 모든 쿼리 문장이 문제가 없다는 것이 판명이 되고 사용자의 계좌에 적용이 되어야 함

⭐ 하나의 업무적인 단위인 ‘계좌이체’를 실행하기 위한 물리적인 명령어 단위인 ‘UPDATE’가 한 번에 실행되어야 함
= 하나의 업무적인 단위인 TRANSACTION이 깨지게 해서는 안됨

 

⭐ TRANSACTION이 깨지지 않기 위한 해결 방법
→ 2개이상의 명령어 집합이 하나인 것처럼 묶어서 실행
1. 현재 세션을 위한 임시저장소에서 테스트
= 사용자에게는 모든 명령이 완료되고나서 노출되어야 함
2. 테스트 중 다른 세션이 건드리지 못하도록 LOCK → UNLOCK

 

INSERT한 내용을 다른 사용자에게 노출시켜도 문제가 없을 것이라고 생각이 들면 COMMIT; 입력

 

 

만일, TEST한 내용을 다른 SESSION에 보이고 싶지 않을 경우에는?

 

하나의 세션에서 자료A를 수정하는 도중(COMMIT과 ROLLBACK 아무것도 하지 않은 작업중의 상태) 다른 SESSION에서 수정 또는 삭제를 하려는 경우

→ 작업중인 SESSION에서 COMMIT OR ROLLBACK을 해야 다른 SESSION 작업이 시작될 수 있음

 

→ COMMIT OR ROLLBACK 실행 시, 다른 SESSION의 대기중인 명령문 실행

 

 

⭐ 정리
1. TRANSACTION 단위로 업무 수행을 위해 임시 저장소에서 1개의 TRANSACTION을 수행하기 위한 다수의 명령어 수행
2. 작업 중 다른 SESSION에서 동시에 접근하지 못하도록 LOCK을 걸어둠
3. 작업이 종료되고나서 공유 여부에 따라 COMMIT(다른 SESSION과 최종 결과 공유) OR ROLLBACK(다른 SESSION에 공유하지 않고 수행 결과 삭제) 실행
4. 만일 한 SESSION에서 TEST 중 다른 SESSION이 같은 부분에 대해 접근할 경우, 대기 상태를 유지하고 COMMIT OR ROLLBACK 후, 다른 SESSION이 TEST 수행
→ 이 경우, SESSION간 Data의 차이가 발생할 수 있음

 

 

 

소스 코드

🔗 HJ0216/TIL/OracleSQL

반응형
반응형

이 글은 뉴렉쳐 오라클 데이터베이스 SQL 강의 수강하며 정리한 글입니다.

 

 

12강 데이터 조작하기 #2 (UPDATE/DELETE)

DDL: CREATE/ALTER/DROP
DML: INSERT/SELECT/UPDATE/DELETE - CRUD
DCL: GRANT/REVOKE

 

UPDATE MEMBER SET PWD=’222’;
⚠️ 2개의 행이 업데이트 됨 → 모든 PWD가 변경됨

❓ 특정 USER만 선택해서 바꾸는 법
WHERE절 사용
UPDATE MEMBER SET PWD=’111’ WHERE ID=’dragon’;

⭐ UPDATE, DELETE는 WHERE절 확인 필수 ⭐

❓ 2개 이상의 COL 변경하는 법
UPDATE MEMBER SET PWD=’111’, NAME=’손오공’ WHERE ID=’dragon’;

 

DELETE
DELETE MEMBER `WHERE` ID='tmp';

⭐ UPDATE, DELETE는 WHERE절 확인 필수 ⭐

⚠️ VALUE는 대소문자를 가리므로 삭제 시, 유의

 

 

⚠️ Oracle DB를 쓰다가 MS SQL로 변경하게 될 경우, SQL 사용법(쿼리 API)이 달라 문제가 될 수 있음

 

Driver별로 사용법이 다르므로, Oracle Driver(Oracle에 접속하기 위한 연결 도구들), MS SQL Driver에 각각 직접 접근하지 않고 JDBC로 단일화된 접근을 제공함

 

⭐ JDBC는 DBMS마다 다른 연결 도구의 차이를 조정해줌

(나라별로 다른 전압 규격에 따라 조절해주는 어뎁터 역할)

 

JDBC 사용 절차

  1. DB 드라이버 로드
  2. 연결 생성
  3. 문장 쿼리 실행
  4. 결과집합 사용

 

 

소스 코드

🔗 HJ0216/TIL/OracleSQL

반응형