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 세이브포인트명] ;
🤔 헉스 내가 방금 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 |