Dorothy_YANG
With Dorothy
Dorothy_YANG
전체 방문자
오늘
어제
  • 분류 전체보기 (279)
    • Hi, I'm Dorothy 🕵️‍♂️ (21)
      • Slowly but Surely (18)
      • IT certifications (3)
    • 🤯TIL (80)
      • HTML & CSS (2)
      • Javascript & jQuery (13)
      • React (13)
      • C언어 (1)
      • JAVA (22)
      • Python (2)
      • Oracle SQL (10)
      • My SQL (5)
      • Spring (12)
    • 💻Programmers (17)
    • 🏫 Open API_JAVA (101)
    • 🌎 Project (10)
      • Shopping (10)
    • 💥 Error (24)
    • ⚙ Setting (23)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 백준
  • java
  • HTML
  • 비쥬얼스튜디오코드
  • 기간쿼리
  • colaboratory
  • CSS
  • Javascript
  • 파이썬온라인
  • 서버등록
  • sql기간
  • 노마드코더
  • SQL
  • SQLD합격
  • Eclipse
  • 시작일종료일
  • oracle
  • 기간설정
  • AllArgsConstructor
  • 오류해결
  • 독학후기
  • 연습문제
  • Database
  • SQLD합격후기
  • 이것이자바다
  • 창초기화
  • googlecolaboratory
  • 코딩앙마
  • 콜라보레이토리
  • spring

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG

With Dorothy

[59일차] SQL 문장 살펴보기 (UPDATE / MERGE / DELETE / COMMIT과 ROLLBACK, TRUNCATE / ROWNUM / 함수)
🏫 Open API_JAVA

[59일차] SQL 문장 살펴보기 (UPDATE / MERGE / DELETE / COMMIT과 ROLLBACK, TRUNCATE / ROWNUM / 함수)

2022. 10. 21. 09:43
728x90

20221018(화)

  • 목차 
    - UPDATE
    - MERGE 
    - DELETE 
    - COMMIT과 ROLLBACK, TRUNCATE 
    - 의사컬럼 - ROWNUM
    - 연산자 & 표현식 
    - 논리 조건식
    - 함수

< UPDATE >

  • 테이블에 있는 기존 데이터를 수정할 때 사용하는 문장
    UPDATE [스키마.]테이블명
    SET 컬럼1 = 변경값1,
        컬럼2 = 변경값2,
    ...
    WHERE 조건;

 

* NULL인 데이터를 찾을 때

➡ 검색 조건에는 반드시 IS NULL(NULL이 아닌 것은 IS NOT NULL)로 비교해야 한다. 

 


< MERGE >

  • 조건을 비교해서 테이블에 해당 조건에 맞는 데이터가 없으면 INSERT
  • 있으면 UPDATE를 수행하는 문장
  • 과거) 해당 조건 처리하는 로직을 별도로 작성 ➡ 현재) MERGE문이 나온 덕분에 이제 할 수 있게 되었다. 😊
    MERGE INTO [스키마.]테이블명
        USING (update나 insert될 데이터 원천)
             ON (update될 조건)
    WHEN MATCHED THEN
           SET 컬럼1 = 값1, 컬럼2 = 값2, ...
    WHERE update 조건
           DELETE WHERE update_delete 조건
    WHEN NOT MATCHED THEN
           INSERT (컬럼1, 컬럼2, ...) VALUES (값1, 값2,...)
           WHERE insert 조건;

 


< DELETE >

  • 테이블에 있는 데이터를 삭제할 때 사용
    ① 일반 구문
    DELETE [FROM] [스키마.]테이블명
    WHERE delete 조건; 

    ② 특정 파티션만 삭제할 경우의 구문
    DELETE [FROM] [스키마.]테이블명 PARTITION (파티션명)
    WHERE delete 조건;

 

 


< COMMIT과 ROLLBACK, TRUNCATE >

  • COMMIT : 변경한 데이터를 데이터베이스에 마지막으로 반영하는 역할
  • ROLLBACK : 그 반대로 변경한 데이터를 변경하기 이전 상태로 되돌리는 역할
    COMMIT [WORK] [TO SAVEPOINT 세이브포인트명] ;

    ROLLBACK [WORK] [TO SAVEPOINT 세이브포인트명] ;

 

 

dorothy 작업물


🤔 헉스 내가 방금 sql 파일 저장했는데!! 바로 반영되어 버린 건 아닐까???

  • commit을 아직 안했다면~ 실제로 반영된 것은 아님 😊
    참고) cmd창에서 보면, ex3_4에 no rows selected라고 뜬다.

 


  • 세션
    : 현재 세션에서 작업한 내용을 commit 하기전까지는 다른 세션에서는 볼 수가 없다!

 

  • 여기서 다시 한번 더 짚고가는~ commit 과 rollback!

 

 


< ✨ 의사컬럼 - ROWNUM >

  • 쿼리에서 반환되는 각 로우들에 대한 순서 값을 나타내는 의사컬럼이다.

 

  • ROWID : 실제 데이터가 저장된 주소

 


< 연산자 - Operator >

  • 수식 연산자: +, -, *, /
  • 문자 연산자: || 두 문자를 붙이는(연결하는) 연산을 수행
  • 논리 연산자: >, <, >=, <=, =, <>, !=, \^=

< 표현식 - Expression >

  • 한 개 이상의 값과 연산자, SQL 함수 등이 결합된 식
  • 특정 조건에 따라 값을 변경해서 보이는 CASE 표현식 존재 (JAVA의 if와 비슷)
    CASE WHEN 조건1 THEN 값1
         WHEN 조건2 THEN 값2
    ...
         ELSE 기타 값
    END

 

 

 

🤷‍♀️ (회사에서) 쿼리 좀 가져와봐 : 어떤 질문에 해당되는 SQL 구문을 가져오라는 것.

 


  • 비교 조건식 
    논리 연산자나 ANY, SOME, ALL 키워드로 비교하는 조건식

  • 논리 조건식
    조건절에서 AND, OR, NOT을 사용하는 조건식

  • NULL 조건식
    특정 값이 NULL인지 여부를 체크하는 조건식
    등호 연산자(=, < >)를 사용 비추

    *값이 NULL인지 혹은 아닌지 여부를 체크하려면
       불가능 : “salary = NULL” 혹은 “salary < > NULL”
       가능 : “salary IS NULL” 혹은 “salary IS NOT NULL” 형태로 비교해야 함

< 함수 >

ROUND(n, i) 매개변수 n을 소수점 기준 (i+1)번 째에서 반올림한 결과를 반환
TRUNC(n1, n2) 반올림을 하지 않고 n1을 소수점 기준 n2자리에서 무조건 잘라낸 결과를 반환
(n2 역시 생략할 수 있으며 디폴트 값은 0)
양수일 때는 소수점 기준으로 오른쪽, 음수일 때는 소수점 기준 왼쪽 자리에서 잘라냄
POWER(n2, n1) n2를 n1 제곱한 결과를 반환
SQRT(n) n의 제곱근을 반환
MOD(n2, n1) n2를 n1으로 나눈 나머지 값을 반환
REMAINDER(n2, n1) n2를 n1으로 나눈 나머지 값을 반환하는데, 
나머지를 구하는 내부적 연산 방법이 MOD 함수와는 약간 다름

• MOD → n2 - n1 * FLOOR (n2/n1)

• REMAINDER → n2 - n1 * ROUND (n2/n1)
 EXP(n) 지수 함수로 e(e=2.71828183…)의 n제곱 값을 반환
LN(n) 자연 로그 함수로 밑수가 e인 로그 함수
LOG(n2, n1) n2를 밑수로 하는 n1의 로그 값을 반환

 


< 문자 함수 >

  • 연산 대상이 문자, 반환 값은 함수에 따라 문자나 숫자를 반환
INITCAP(char) 첫 문자는 대문자로, 나머지는 소문자로 반환
LOWER(char) 문자를 모두 소문자로 반환
UPPER(char)
문자를 모두 대문자로 반환
CONCAT(char1, char2) ‘||’ 연산자처럼 매개변수로 들어오는 두 문자를 붙여 반환
SUBSTR(char, pos, len) 잘라올 char의 pos번째 문자부터 len길이만큼 잘라낸 결과를 반환
SUBSTRB(char, pos, len) 문자 개수가 아닌 문자열의 바이트(BYTE) 수만큼 잘라낸 결과를 반환
(SUBSTRB의 맨 끝 글자인 ‘B’는 BYTE를 의미)
LTRIM(char, set)
&
RTRIM(char, set)
- LRIM 함수
   : set으로 지정된 문자열을 왼쪽 끝에서 제거한 후 나머지 문자열을 반환

- RTRIM 함수
   : LTRIM 함수와 반대로 오른쪽 끝에서 제거한 뒤 나머지 문자열을 반환
LPAD(expr1, n, expr2) expr2 문자열을 n자리만큼 왼쪽부터 채워 expr1을 반환하는 함수
n은 expr2와 expr1이 합쳐져 반환되는 총 자릿수를 의미
RPAD(expr1, n, expr2) LPAD와는 반대로 오른쪽에 해당 문자열을 채워 반환
 REPLACE
(char, search_str, replace_str)
char 문자열에서 search_str 문자열을 찾아 replace_str 문자열로 대체한 결과를 반환
TRANSLATE
(expr, FROM_str, to_str)
REPLACE와 다른 점은
문자열 자체가 아닌 문자 한 글자씩 매핑해 바꾼 결과를 반환
INSTR(str, substr, pos, occur) str 문자열에서 substr과 일치하는 위치를 반환
pos는 시작 위치로 디폴트 값은 1, occur은 몇 번째 일치하는지를 명시
LENGTH(chr), LENGTHB(chr) 문자열의 개수를 반환 / 해당 문자열의 바이트 수를 반환

 

     ✔ 사용자 아이디 중복체크
         예> WHERE USERID = LOWER('DOCCOMSA'); // 데이터가 소문자 저장되어 있다. (권장)
         예> WHERE UPPER(USERID) = 'DOCCOMSA'; // 데이터가 소문자 저장되어 있다. (비추)

 

728x90
저작자표시

'🏫 Open API_JAVA' 카테고리의 다른 글

[61일차] 조인의 종류 / ANSI 내부 조인 / ANSI 외부 조인  (0) 2022.10.23
[60일차] 변환 함수 / NULL 관련 함수 / 기타 함수 / GROUP BY 절과 HAVING 절 / ROLLUP 절과 CUBE 절 / 집합 연산자  (0) 2022.10.21
[58일차] 테이블 변경 / 테이블 복사 / 뷰 / 인덱스 / 시노님 / 시퀀스 / 파티션 테이블 / SELECT문  (0) 2022.10.17
[57일차] 데이터 타입(문자, 숫자, 날짜, LOB) / NULL vs NOT NULL / 제약조건 (Constraints)  (0) 2022.10.17
[56일차] SQL, PS/SQL / 테이블스페이스 생성  (0) 2022.10.16
    '🏫 Open API_JAVA' 카테고리의 다른 글
    • [61일차] 조인의 종류 / ANSI 내부 조인 / ANSI 외부 조인
    • [60일차] 변환 함수 / NULL 관련 함수 / 기타 함수 / GROUP BY 절과 HAVING 절 / ROLLUP 절과 CUBE 절 / 집합 연산자
    • [58일차] 테이블 변경 / 테이블 복사 / 뷰 / 인덱스 / 시노님 / 시퀀스 / 파티션 테이블 / SELECT문
    • [57일차] 데이터 타입(문자, 숫자, 날짜, LOB) / NULL vs NOT NULL / 제약조건 (Constraints)
    Dorothy_YANG
    Dorothy_YANG
    Slowly but Surely, 비전공 문과생의 개발공부

    티스토리툴바