SQL 57

SQLD 문제 푸는데 필요한 지식 +++++

연결 연산자: || 중복 제거: DISTINCT 데이터 정렬: ORDER BY(ASC, DESC) asc: 오름차순 desc: 내림차순 특정 철자 추출: SUBSTR 길이 출력: LENGTH 특정 철자 위치 출력: INSTR 다른 철자로 변경: REPLACE 반올림해서 출력: ROUND 버림해서 출력: TRUNC 나눈 나머지값 출력: MOD NULL 값대신 다른 데이터 출력: NVL, NVL2 IF 문 구현: DECODE (= 비교만 가능) : CASE (=,>, 1등,1등, 3등, 4등 : DENSE_RANK -> 1등,1등, 2등,3등 전행 출력하기: LAG 다음행 출력하기: LEAD COLIMN을 ROW로 출력하기: (SUM+DECODE) : PIVOT ROW를 COLIMN으로 출력하기: UNPIV..

SQL 2023.08.31

SQLD 문제 푸는데 필요한 지식 ++

USING 절은 지정한 열로 테이블을 등가 조인한다 지정한 열은 조인할 테이블에 동일한 이름으로 존재해야함 create table T1(c1 number, c2 varchar(10)); create table T2(c1 number, c3 varchar(10)); select A.c1,B.c3 from T1 A join T2 B using (c1)' -> 오류 why? using절 사용 시 using절에 지정한 칼럼을 기준으로 두 테이블을 등가 조인 단 usingㅈ절에 지정한 칼럼을 alias등으로 한정 불가 위 쿼리는 using절에 지정한 c1칼럼을 select절에서 한정하여 기술했기에 오류..! => select c1,B.c3 from T1 A join T2 B using (c1)'

SQL 2023.08.28

SQLD 문제 푸는데 필요한 지식 +

NULL의 사칙 연산 규칙 NULL + 숫자: NULL과 숫자를 더하면 결과는 항상 NULL. 어떠한 숫자와도 더해지지 않고 그냥 NULL을 유지 NULL - 숫자: NULL에서 숫자를 빼도 결과는 NULL. NULL에서 무엇이든 빼도 결과가 정의되지 않기 때문 NULL * 숫자: NULL과 숫자를 곱하면 결과는 항상 NULL. 어떠한 숫자와도 곱해지지 않고 그냥 NULL을 유지 NULL / 숫자: NULL을 숫자로 나누면 결과는 항상 NULL. 어떤 숫자로도 나눌 수 없기 때문 decode FLOOR : 입력된 인자 값보다 작거나 같은 정수 값을 반환 CEIL: 입력된 인자 값보다 크거나 같은 정수 값을 반환 TRUNC: 첫번째 인자값을 소수점 N번째 자리(두번째 인자값)로 버림하여 반환 ROUND: ..

SQL 2023.08.25

SQL 54(서브쿼리를 사용해 데이터 입력,수정,삭제,합치기)

EMP 테이브의 구조를 그대로 복제한 EMP2 테이블에 부서 번호가 10번인 사원들의 사원 번호, 이름, 월급, 부서 번호 입력하기 insert into 직업이 salesman인 사원들의 월급 allen의 월급으로 변경하기 update scott보다 월급 많이 받는 사원 삭제하기 delete from 부서 테이블에 숫자형으로 sumsal 컬럼 추가, 사원테이블 이용해 sumsal 컬럼의 데이터를 부서 테이브의 부서 번호별 토탈 월급으로 갱신하기 merge into

SQL 2023.08.18

SQL 53 (SELECT FOR UPDATE절 이해하기)

JONES의 이름과 월급과 부서 번호를 조회하는 동안 다른 세션에서 JONES의 데이터 갱신하지 못하도록하기 순서 SCOTT으로 접속한 터미널창1 SCOTT으로 접속한 터미널창2 1 select ename, sal, deptno from emp where ename = 'JONES' for update; 2 update emp set sal = 9000 where ename = 'JONES' ←-------------------------멈춤 3 commit; 커밋 완료 4 1행 업뎃 SELECT .. FOR UPDATE 문은 검색하는 행에 LOCK을 거는 SQL문 순서2에서 update하려해도 update가 안되고 waiting commit 수행 시 LOCK해제되어 업데이트 된다

SQL 2023.08.16

SQL 52(락/LOCK)

LOCK: 같은 데이터 동시에 갱신할 수 없도록 함 순서 SCOTT으로 접속한 터미널 창 1 SCOTT으로 접속한 터미널 창 2 1 update emp set sal =3000 where ename ='JONES'; 1행이 업데이트 2 update emp set sal = 9000 where ename='JONES'; 터미널 창 1에서 접속한 SCOTT세션이 jones의 행을 갱신하고 아직 commit/rollback을 수행하지 않았기 때문에 해당행이 잠겨있음 update문을 수행하면 update 대상이 되는 행을 잠굼(LOCK)처리 행 전체를 잠궈버리기에 jones월급 뿐만 아니라 다른 컬럼들의 데이터도 변경 할 수 없음 터미널 창 1에서 commit 수행 시 jones의 월급은 3000으로 저장, 행..

SQL 2023.08.14

SQL 51(데이터 입력, 수정, 삭제/ MERGE)

--사원 테이블에 부서 위치 컬럼 추가하고, 부서 테이블을 이용하여 해당 사원의 부서 위치로 값이 갱신되도록 + 만약 부서 테이블에 존재하지만, 사원테이블에 없다면 새로운 사원 테이블에 입력되도록 SQL> merge into emp e --merge into 다음에 대상이되는 target table명 작성 2 using dept d --using 절 다음에는 source 테이블명 작성, 3 on (e.deptno = d.deptno) --target과 source테이블 조인 4 when matched then --merge update 절 -- 조인에 성공 시 수행 5 update set e.loc = d.loc 6 when not matched then --merge insert 절 --조인에 실패시 ..

SQL 2023.08.11

SQL 50 (데이터 저장 취소/COMMIT, ROLLBACK)

데이터 저장 및 취소 COMMIT, ROLLBACK COMMIT 명령어는 COMMIT 이전에 수행했던 DML 작업들을 데이터 베이스에 영구히 반영하는 TCL(Transaction Control Language) ROLLBACK 명령어는 마지막 COMMIT 명령어를 수행한 이후 DML문을 취소하는 TCL Intsert into emp(empno, ename, sal, deptno) VALUES(1122, 'JACK', 3000, 20); COMMIT; ---------------------COMMIT 이후까지 ROLLBACK update emp set sal = 4000 where ename = 'SCOTT'; ROLLBACK

SQL 2023.08.11

SQL 49데이터 삭제하기 (DELETE / TRUNCATE / DROP)

데이터 삭제하는 3가지 명령어 DELETE TRUNCATE DROP 데이터 삭제 삭제 삭제 저장 공간 남김 삭제 삭제 저장 구조 남김 남김 삭제 취소 여부 가능 불가능 불가능 플래쉬백 여부 가능 불가능 가능 TRUNCATE (DDL) TRUNCATE명령어는 모든 데이터를 한번에 삭제한다 데이터 삭제 후에 취소가 불가능하여 DELETE 보다 삭제되는 속도 빠르다 데이터 모두 지우고 테이블 구조만 남기는것이 TRUNCATE TRUNCATE table emp; DROP (DDL) DROP명령어는 테이블 전체를 한번에 삭제하는 명령어 삭제후에 취소(ROLLBACK)는 불가능 , FLASHBACK으로 테이블 복구는 가능 DROP table emp; DELETE (DML) DDL문은 DML문과 다르게 암시적인 CO..

SQL 2023.07.25