SELECT *
FROM TBL_DEPT;
--==>>
/*
10	ACCOUNTING	NEW YORK
20	RESEARCH	DALLAS
30	SALES	    CHICAGO
40	OPERATIONS	BOSTON
*/

 

데이터 입력

INSERT INTO TBL_DEPT VALUES(50, '개발부', '서울');
  • 이 데이터는 TBL_DEPT 테이블이 저장되어 있는 하드디스크상에 저장된것이 아니라 메모리(RAM) 상에 입력된 것임
  • 이를 하드디스크상에 물리적으로 저장하기 위해서는 COMMIT을 수행해야 한다.

 

커밋

COMMIT;

 

롤백(ROLLBACK)

ROLLBACK;
  • COMMIT을 실행한 이후로 DML 구문(INSERT, UPDATE, DELETE)를 통해 변경된 데이터를 취소할 수 있다.
  • DML 구문을 사용한 후 COMMIT 을 하고 나서 ROLLBACK을 실행해봐야 아무 소용 없다.

 

데이터 수정(UPDATE)

UPDATE TBL_DEPT
   SET DNAME = '연구부', LOC = '경기'
 WHERE DEPTNO = 50;

 

데이터 삭제(DELETE)

DELETE TBL_DEPT
 WHERE DEPTNO = 50;
-- 이렇게 바로 지우기보다는

-- 아래처럼 확인하고 지우기
SELECT *
  FROM TBL_DEPT
 WHERE DEPTNO = 50;

DELETE
  FROM TBL_DEPT
 WHERE DEPTNO = 50;

 

 

 

 

 

 


https://www.instagram.com/p/CarH_AYJIBm/?utm_source=ig_web_copy_link

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


 

'SQL > Oracle' 카테고리의 다른 글

16. CONCAT(), SUBSTR()  (0) 2022.03.10
15. ORDER BY 절  (0) 2022.03.09
13. LIKE, %, _  (0) 2022.03.07
12. 날짜 변환 함수, BETWEEN A AND B  (0) 2022.03.07
11. UPPER(), LOWER(), INITCAP()  (0) 2022.03.07

LIKE

SELECT *
  FROM TBL_SAWON
 WHERE SANAME = '홍길동';

SELECT *
  FROM TBL_SAWON
 WHERE SANAME LIKE '홍길동';

둘의 결과는 같음

 

 

LIKE와 함께 사용되는 %는 모든 글자 의미

LIKE와 함께 사용되는 _는 한 글자 의미

SELECT *
  FROM TBL_SAWON
 WHERE SANAME LIKE '김__';

SELECT *
  FROM TBL_SAWON
 WHERE SANAME LIKE '김%';

-- 이 라는 글자가 하나라도 포함되어 있는 항목 조회
SELECT SANO "사원번호", SANAME "사원명", SAL "급여"
  FROM TBL_SAWON
 WHERE SANAME LIKE '%이%';

-- 이 라는 글자가 두 번 들 어있는 항목 조회
SELECT SANO "사원번호", SANAME "사원명", SAL "급여"
  FROM TBL_SAWON
 WHERE SANAME LIKE '%이%이%';

 

참고로 데이터베이스 설계 과정에서 성과 이름을 분리하여 처리해야할 업무 계획이 있다면 테이블에서 성 컬럼과 이름 컬럼을 분리해서 구성해야 한다

왜냐하면 2글자 성이 존재하기 때문(남궁, 선우)

 

 

『99.99%』라는 글자가 포함된 행의 데이터 조회

SELECT *
  FROM TBL_WATCH
WHERE BIGO LIKE '%99.99\\%%' ESCAPE '\\';
  • ESCAPE로 정한 문자의 다음 한 글자를 와이들카드에서 탈출시킴
  • 일반적으로 사용빈도가 낮은 특수문자를 사용함

 

 

 

 


https://www.instagram.com/p/CaqE1zXhlma/?utm_source=ig_web_copy_link

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


 

 

'SQL > Oracle' 카테고리의 다른 글

15. ORDER BY 절  (0) 2022.03.09
14. COMMIT / ROLLBACK, DML구문  (0) 2022.03.07
12. 날짜 변환 함수, BETWEEN A AND B  (0) 2022.03.07
11. UPPER(), LOWER(), INITCAP()  (0) 2022.03.07
10. NVL, COALESCE, 컬럼연결(결합)  (0) 2022.03.06

 

SELECT ENAME "사원명", JOB "직종명", HIREDATE "입사일"
  FROM TBL_EMP
 WHERE HIREDATE = '1981-09-28';
-- 가능하지만(오라클의 자동변환으로 인해서) 믿으면 안된다.

그래서 날짜 변환 함수를 사용해야 한다.

 

TO_DATE()

SELECT ENAME "사원명", JOB "직종명", HIREDATE "입사일"
  FROM TBL_EMP
 WHERE HIREDATE = TO_DATE('1981-09-28', 'YYYY-MM-DD');

SELECT ENAME "사원명", JOB "직종명", HIREDATE "입사일"
  FROM TBL_EMP
 WHERE HIREDATE >= TO_DATE('1981-09-28', 'YYYY-MM-DD');
  • 오라클에서는 날짜 데이터에 대한 크기 비교 가능
  • 과거보다 미래를 더 큰 값으로 간주

 

BETWEEN ⓐ AND ⓑ

SELECT ENAME "사원명", JOB "직종명", HIREDATE "입사일"
  FROM TBL_EMP
 WHERE HIREDATE BETWEEN TO_DATE('1981-04-02', 'YYYY-MM-DD')
										AND TO_DATE('1981-09-28', 'YYYY-MM-DD');
-- 1981년 4월 2일과 1981년 9월 28일 사이

SELECT *
  FROM TBL_EMP
 WHERE ENAME BETWEEN 'C' AND 'S';
-- 문자열도 가능(사전식)
  • BETWEEN ⓐ AND ⓑ는 날짜형, 숫자형, 문자형 데이터 모두에 적용된다
  • 단, 문자형일 경우 아스키코드 순서(사전식 배열)를 따르기 때문에 대문자가 앞쪽에 위치하고 소문자가 뒤쪽에 위치한다.
  • 또한 BETWEEN ⓐ AND ⓑ 는 해당 구문이 수행되는 시점에서 오라클 내부적으로는 부등호 연산자의 형태로 바뀌어 연산 처리된다.

 

SELECT ENAME, JOB, SAL
  FROM TBL_EMP
 WHERE JOB = 'SALESMAN'
    OR JOB = 'CLERK';

SELECT ENAME, JOB, SAL
  FROM TBL_EMP
 WHERE JOB IN ('SALESMAN', 'CLERK');

SELECT ENAME, JOB, SAL
  FROM TBL_EMP
 WHERE JOB = ANY ('SALESMAN', 'CLERK');
  • 위에 3가지 유형의 쿼리문은 모두 같은 결과를 반환
  • 하지만, 맨 위의 쿼리문(OR)이 가장 빠르게 처리된다.
  • 밑에 둘은 내부적으로 OR 구조로 변경되어 연산 처리된다.

 


https://www.instagram.com/p/CaURIEbLTtN/?utm_source=ig_web_copy_link

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


 

'SQL > Oracle' 카테고리의 다른 글

14. COMMIT / ROLLBACK, DML구문  (0) 2022.03.07
13. LIKE, %, _  (0) 2022.03.07
11. UPPER(), LOWER(), INITCAP()  (0) 2022.03.07
10. NVL, COALESCE, 컬럼연결(결합)  (0) 2022.03.06
9. 컬럼 구조의 추가 및 제거  (0) 2022.03.05

UPPER()

: 모두 대문자로 변환

LOWER()

: 모두 소문자로 변환

INITCAP()

: 첫 글자만 대문자로 하고 나머지는 모두 소문자로 변환

 

 

TBL_EMP 테이블에서 직종이 영업사원인 사람 조회하는 방법

SELECT EMPNO "사원번호", ENAME "사원명", JOB "직종명"
  FROM TBL_EMP
 WHERE JOB = UPPER('SALESMAN') OR JOB = LOWER('SALESMAN');

SELECT EMPNO "사원번호", ENAME "사원명", JOB "직종명"
  FROM TBL_EMP
 WHERE INITCAP(JOB) = INITCAP('SALESMAN');
-- UPPER, LOWER, INITCAP 다 가능

 

 

 

 

 


https://www.instagram.com/p/CaUTDTIpikv/?utm_source=ig_web_copy_link

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


 

'SQL > Oracle' 카테고리의 다른 글

13. LIKE, %, _  (0) 2022.03.07
12. 날짜 변환 함수, BETWEEN A AND B  (0) 2022.03.07
10. NVL, COALESCE, 컬럼연결(결합)  (0) 2022.03.06
9. 컬럼 구조의 추가 및 제거  (0) 2022.03.05
8. 테이블 복사, 커멘트  (0) 2022.03.04

NVL()

SELECT NULL "COL1", NVL(NULL, 10) "COL2", NVL(5, 10) "COL3"
  FROM DUAL;
--==>> (null)    10    5
  • 첫 번째 파라미터 값이 null이 아니면 그 값 그대로 반환
  • null이면 두 번째 파라미터 값을 반환하고

 

NVL2()

SELECT ENAME "사원명", NVL2(COMM, '수당 有', '수당 無') "수당확인"
  FROM TBL_EMP;
  • 첫 번째 파라미터 값이NULL이면 세 번째 파라미터 값 반환
  • NULL이 아니면 두 번째 파라미터 값을 반환하고

 

COALESCE()

  • 매개변수 제한이 없는 형태로 인지하고 활용하기
  • 맨 앞에 있는 매개변수부터 차례로 NULL인지 아닌지 확인하여 NULL인 경우 그다음 매개변수의 값을 반환한다.
  • NULL이 아닌 경우 반환하고,
SELECT NULL "COL1"
	   , COALESCE(NULL, NULL, NULL, 30) "COL2"
	   , COALESCE(10, NULL, NULL) "COL3"
  FROM DUAL;
--==>> (null)    30    10

 

컬럼과 컬럼의 연결(결합)

SELECT 1+2
  FROM DUAL;
--==>> 3

SELECT 'A' || 'B'
  FROM DUAL;
--==>> AB

SELECT ENAME || JOB
  FROM TBL_EMP;

 

참고)

DATE SESSION변경

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD'

 

 

 


https://www.instagram.com/p/CajSLqHJPpe/?utm_source=ig_web_copy_link

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


 

'SQL > Oracle' 카테고리의 다른 글

12. 날짜 변환 함수, BETWEEN A AND B  (0) 2022.03.07
11. UPPER(), LOWER(), INITCAP()  (0) 2022.03.07
9. 컬럼 구조의 추가 및 제거  (0) 2022.03.05
8. 테이블 복사, 커멘트  (0) 2022.03.04
7. 오라클 주요 자료형  (0) 2022.03.03
  • TBL_EMP 테이블에 컬럼 추가(주민등록번호 데이터를 담을 컬럼 추가)
ALTER TABLE TBL_EMP
  ADD SSN CHAR(13);
  • TBL_EMP 테이블에 추가한 컬럼 구조적 제거
ALTER TABLE TBL_EMP
 DROP COLUMN SSN;
  • TBL_EMP 행 삭제
DELETE TBL_EMP;
--==>> 14개 행 이(가) 삭제되었습니다.

SELECT *
  FROM TBL_EMP;
--> 에러 발생하지 않음
-- 다만 데이터 없음. 테이블의 구조는 그대로 남아있고 데이터만 삭제된 상황
  • TBL_EMP 테이블 삭제
DROP TABLE TBL_EMP;
SELECT NULL, NULL+2, NULL*2, 2/NULL
  FROM DUAL;
--==>>
  • null은 상태의 값을 의미하며, 논리적으로는 실제 존재하지 않는 값이기 때문에 null이 연산아 포함될 경우 그 결과는 무조건 null
  • NULL이 포함된 항목 조회
SELECT ENAME "사원명", JOB "직종명", SAL "급여", COMM "커미션"
  FROM TBL_EMP
 WHERE COMM IS NULL;

→ NULL은 산술적인 연산이 아니라 논리적 연산이므로 IS

→ NULL은 실제 존재하는 값이 아니기에 일반적인 연산자를 활용해 비교할 수 없다. NULL을 대상으로 사용할 수 없는 연산자들은 >=, <=, >, <, !=, ^=. <>

  • NULL이 포함되지 않은 항목 조회
SELECT ENAME "사원명", JOB "직종명", SAL "급여", COMM "커미션"
  FROM TBL_EMP
 WHERE COMM IS NOT NULL;

SELECT ENAME "사원명", JOB "직종명", SAL "급여", COMM "커미션"
  FROM TBL_EMP
 WHERE NOT COMM IS NULL;

 

 

 


https://www.instagram.com/p/CZoTTZ3p1No/?utm_source=ig_web_copy_link

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


 

'SQL > Oracle' 카테고리의 다른 글

11. UPPER(), LOWER(), INITCAP()  (0) 2022.03.07
10. NVL, COALESCE, 컬럼연결(결합)  (0) 2022.03.06
8. 테이블 복사, 커멘트  (0) 2022.03.04
7. 오라클 주요 자료형  (0) 2022.03.03
6. 관계형 데이터 베이스  (0) 2022.03.02