패스트캠퍼스 백엔드 부트캠프 3기/database 9

[database] Advanced SQL - nvl, decode, case, pivot, rollup, cube, rank, 상관 쿼리

1. NVL 함수컬럼의 값이 null일 때 어떤 값을 보이게 할 것인지를 지정한다NVL 함수는 모든 데이터 타입에 적용할 수 있다NVL 함수를 사용할 때 변경되는 값의 데이터 타입을 일치시켜야 한다SELECT name, salary, nvl(salary, 0) modified_salary -- NVL()FROM temp;SELECT name, salary, nvl2(salary, 100000, 0) -- NVL2(값, 지정값1, **지정값2**)FROM temp;2. DECODE 함수n항연산자, switch 문컬럼 값에 따라 출력 값을 지정한다else 조건을 명시하지 않을 경우 기본 값으로 nullSELECT name, salary, DECODE(TRUNC(salary/1000), null, nul..

[database] 오라클 코멘트 설정 및 조회

-- DDL - COMMENT-- 테이블 코멘트 설정 및 조회COMMENT ON TABLE s_emp IS 'Employee table. Each row in this table represents one employee of the company.'; SELECT * FROM all_tab_commentsWHERE table_name LIKE 'S_EMP';-- 컬럼 코멘트 설정 및 조회COMMENT ON COLUMN s_emp.title IS 'Title on Employee table.'; 테이블 코멘트 설정$ COMMENT ON TABLE [테이블명] IS    '주석 문장'; 컬럼 코멘트 설정$ COMMENT ON COLUMN [테이블명].[컬럼명] IS ..

[database] Transaction Control, Dictionary

Transaction은 논리적인 업무의 작업단위를 의미한다SAVEPOINTROLLBACKCOMMITDDL과 DCL은 auto-commit이 된다.명령어설명COMMIT아직 저장되지 않은 모든 데이터 변경 사항을 데이터베이스에 저장하고 현재의 트랜잭션을 종료SAVEPOINT현재의 트랜잭션에 savepoint를 지정ROLLBACK(ROLLBACK TO [savepoint 이름])아직 저장되지 않은 모든 데이터 변경 사항을 취소하고 현재의 트랜잭션을 종료 1. commit, rollback 이전의 상태단지 버퍼에만 영향을 받았기 때문에 데이터의 이전 상태는 복구될 수 있다현재 사용자는 select 문으로 작업의 결과를 확인할 수 있다다른 사용자는 현재 사용자가 수행한 작업의 결과를 볼 수 없다변경된 행은 Loc..

[database] 트리거 (Trigger) 생성 오류 해결 및 메시지 출력

트리거 (Trigger)사용자가 호출하는 것이 아니고 어떤 테이블에 특정한 DML 문이 수행되었을 때 데이터베이스에서 자동적으로 동작하도록 작성된 프로그램타이밍에 따른 분류- DML 이전에 수행  BEFORE TRIGGER- DML 이후에 수행   AFTER TRIGGER 수행 차수에 따른 분류- 한 번만 수행 STATEMENT TRIGGER - 행 마다 수행 ROW TRIGGERCREATE OR REPLACE TRIGGER tg_show_planAFTER INSERT ON temp--REFERENCING NEW AS NEW OLD AS OLDFOR EACH ROWBEGIN DBMS_OUTPUT.PUT_LINE('트리거가 작동했습니다.'); INSERT INTO temp_tg_test (nam..

[database] 데이터베이스 목차 정리

SQLIntroductionDML - insert, update, delete데이터 검색 - selectstored function - 단일 행, 다중 행 함수 / 문자형, 숫자형, 날짜형, 변환형 함수SubGroup으로 데이터 분류 - GROUP BY, HAVINGjoin - Equijoin, Non-Equijoin, Outer join, Self join, Set 연산자 SubQueryConstraint - PK, NOT NULL, UNIQUE, FK, CHECKTransaction Control - COMMIT, ROLLBACK, SAVEPOINTDictionary - DBMS가 자동으로 생성하고 관리, readonlyDDL - create, alter, drop, truncate, rename, ..

[database] Oracle에서 Index Range Scan 확인하기, 쿼리 간 비교

🚨 주의! 여기서 비교하는 두 SQL 문은 비슷해 보이지만 같은 목적의 쿼리가 아닙니다.첫 번째 SQL 문: 급여가 5000이 아닌 사원의 이름, 급여 표시두 번째 SQL 문: 급여가 5000인 사원이 존재한다면 테이블 전체 미출력, 반대라면 전체 출력 // inner query에서 각 outer row에 대해 지정한 게 아님EXPLAIN PLAN FORSELECT name, salaryFROM tempWHERE salary 5000; -- TABLE ACCESS FULL(FULL SCAN)EXPLAIN PLAN FORSELECT name, salaryFROM tempWHERE NOT EXISTS ( SELECT 'X' FROM temp WHERE salary = 5000 -- IN..

[database] Constraint

Constraint 종류제약조건설명NOT NULL컬럼이 널 값을 가질 수 없음UNIQUE컬럼이나 컬럼의 조합이 테이블의 모든 행에서 고유한 값을 가져야 함, UNIQUE 컬럼에 대한 인덱스가 자동으로 생성PRIMARY KEYNOT NULL + UNIQUE컬럼이나 컬럼의 조합이 테이블의 각 행을 유일하게 구별시켜 줌FOREIGN KEY다른 테이블의 PK, 컬럼이나 컬럼의 조합이 다른 테이블의 컬럼이나 컬럼의 조합을 참조함CHECK컬럼값이 반드시 참이어야 하는 조건 Contraint 정의 방법컬럼 레벨테이블 레벨테이블과 제약조건은 별도로 관리되어 테이블을 삭제한다고 제약조건도 삭제되는 것은 아니다. 테이블 삭제 시 제약조건도 삭제되게 하기 위해서는 [CASCADE CONSTRAINTS] 옵션을 명시한다.반면..

[database] SQL 용어 설명, 조인과 서브쿼리

SQL(Structured Query Language)은 관계형 데이터베이스(RDB)에서 데이터를 조작하고 검색하기 위해 사용하는 언어다. 개념 설명Table Table은 RDBS의 기본적인 저장구조로, 한 개 이상의 Column과 0개 이상의 Row로 구성RowColumn들의 값의 조합, 즉 자바에서는 iv들의 조합으로서 객체를 나타냄 (=레코드)FieldRow와 Column의 교차점뷰(View)하나 또는 그 이상의 테이블로부터 논리적으로 데이터를 추출한 부분 집합으로서 논리적이고 가상적인 테이블시퀀스(Sequence)자동으로 고유한 숫자값 생성해 주며 주로 기본 키 값을 생성하기 위해 사용인덱스(index)쿼리 속도 향상시노님(synonym)Obejct에 대한 또 다른 이름으로 alias 역할프로그램..

[database] 오라클 다중 insert 문

1. insert allcreate table test( person VARCHAR(255) PRIMARY KEY, salary INT);insert into test values ('one', 1000),('two', 2000); -- 에러!-- SQL 오류: ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다 mysql(maria db)에서 사용하는 형식의 다중 삽입문이 오라클에서는 SQL 명령어가 올바르게 종료되지 않았다는 에러가 뜨며 동작하지 않는다. 그래서 다른 블로그들을 참고했더니 첫 번째로 이 해결책을 제시했다. insert all into test (person, salary) values ('one', 1000) into test (person, sal..