몰입하며 나아가는 개발이란

Language/SQL 16

Oracle SQL Sequence, Index (시퀀스, 목차(색인))

Sequence란? 유일한 값을 생성해주는 Oracle Object 이며, 유일한 값이기 때문에 Primary Key 와 속성이 같기 때문에 PK 값으로 주로 사용 한다. 즉, 순차적으로 증가하는 Column을 하나 만들 수 있으며, SEQUENCE는 스키마에서 테이블과는 독립적으로 저장되고 생성된다. 주로 사용하는 곳은 회원번호, 게시판 관리 글 번호 등이 있으며, 초기화가 불가능하므로 삭제후 다시 작성하는것이 일반적이다. SEQUENCE : 생성 CREATE SEQUENCE test_seq -- test_seq 이름으로 시퀀스 생성. INCREMENT BY 1 -- 증가 설정 START WITH 10 -- 시작 숫자 설정 MAXVALUE 100 -- 최대 설정 (보통생략함.) MINVALUE 1; -..

Language/SQL 2019.12.26

Oracle SQL VIEW

VIEW 실체가 없는 가상테이블이며, c언어에서의 pointer 와 비슷한 역할을 수행한다. 한개의 view로 여러개의 table의 데이터를 검색하고 확인하는것이 가능하다는 장점이 있으며, Oracle 개발자들은 view를 많이 만들어 놓고 사용하는 편이라고 한다. 데이터추가 수정에 제한을 설정할 수 있으며, null을 허용하지 않는 컬럼은 반드시 추가해주어야한다. /* view : 가상테이블 vue 실체가 없는 테이블. 실제 저장되는 것이 아니다 => pointer table

Language/SQL 2019.12.21

Oracle SQL DML : INSERT, UPDATE, DELETE (추가, 수정, 삭제)

INSERT, UPDATE, DELETE 테이블의 row를 추가, 수정, 삭제 하는 예약어이며, 먼저 ROLLBACK과 COMMIT를 알고 사용하는것이 데이터가 손실되는것을 방지 할 수 있다. ROLLBACK; -- COMMIT 실행 전에 UPDATE된 row를 되돌릴 수 있음. COMMIT; -- COMMIT을 실행시 밖에서도 적용이 된다. 즉, git 과 동일하게 commit 전 후가 있다. INSERT INTO row 추가. CREATE TABLE test_par( pkey_01 VARCHAR2(10) ,pkey_02 VARCHAR2(10) ,col_01 VARCHAR2(10) ,col_02 VARCHAR2(10) , CONSTRAINT pk_test_01 PRIMARY KEY (pkey_01, p..

Language/SQL 2019.12.21

Oracle SQL DML : SELECT 05(SUB QUERY)

SUB QUERY 간단하게 보면 Query 안의 Query 라고 볼 수 있으며, 한개의 행(row)에서 결과 값이 반환되는 Query 이다. SELECT 부분에서의 SUBQUERY 는 단일 ROW 단일 COLUMN (나오는 데이터가 한개, 컬럼 한개) FROM 부분에서의 SUBQUERY 는 다중 ROW 다중 COLUMN WHERE 부분에서의 SUBQUERY 는 다중 ROW 다중 COLUMN --> 가장 많이 사용한다고 한다. /* SELECT EMPLOYEE_ID, (SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES) -- 다중컬럼 사용x SELECT EMPLOYEE_ID, (SELECT FIRST_NAME FROM EMPLOYEES) -- 다중row 사용x */ SELECT..

Language/SQL 2019.12.21

Oracle SQL DML : SELECT 04(JOIN)

JOIN 두개 이상의 테이블이 필요할때, 테이블을 연결하여 데이터를 검색하는 방법이다. 보통 두개이상의 행(row)들의 공통된 값 Primary key(기본키), Foreign key(외래키)값을 사용해서 JOIN한다. Primary key(기본키) : 테이블에서 중복이 되지 않는 키 Foreign key(외래키) : 다른 테이블에서 Primary key, Unique key 일 가능성이 크다. (키에 대한 자세한 설명은 Oracle - DDL - DDL02 글을 참고.) 여기서 설명할 JOIN의 종류는 총 5가지이며, 주로 사용하는것은 inner JOIN과, self JOIN이다. INNER JOIN -- Ansi SQL SELECT employee_id, first_name, e.department_..

Language/SQL 2019.12.21

Oracle SQL DML : SELECT 03(ORDER BY, GROUP BY, OVER ...)

ORDER BY : 정렬 ORDER BY는 SQL에서 데이터를 정렬을 할때 사용한다. (WHERE, HAVING 보다 뒤에 위치.) --** scott 계정 **-- -- ORDER BY : 정렬 SELECT * FROM emp ORDER BY sal; -- ORDER BY sal ASC -- 오름차순 정렬 -- ORDER BY sal DESC -- 내림차순 정렬 GROUP BY : 그룹 GROUP BY 로 COLUMN항목을 묶을 수 있으며, GRUOP으로 선정이되면 특정 함수 사용이 가능해진다. COUNT, SUM, AVG, MAX, MIN 이 대표적이다. 하지만 GROUP BY로 묶게 되면, 해당 COLUMN에 대한 값 이외의 선택이 불가능해지는데, 이 불편함을 없애기 위해서는 OVER(PARTITI..

Language/SQL 2019.12.21

Oracle PL/SQL PL03 (Procedural extension to Structured Query Language)

PL FUNCTION : 구조 1 SET SERVEROUTPUT ON CREATE OR REPLACE FUNCTION func(p_val IN NUMBER)RETURN NUMBER IS v_val NUMBER; BEGIN v_val := p_val; v_val := v_val*2; RETURN p_val; END; / SELECT func(24) FROM dual; PL FUNCTION : 구조 2 -- (급여와 커미션을 합쳐서 세금을 계산) CREATE OR REPLACE FUNCTION tax2( p_sal IN employees.salary%TYPE, p_bonus IN employees.commission_pct%TYPE) RETURN NUMBER IS BEGIN RETURN (( p_sal + ..

Language/SQL 2019.12.20

Oracle PL/SQL PL02 (Procedural extension to Structured Query Language)

Cursor 저장 주소 공간 으로 볼 수 있으며, C언어에서 pointer 와 같은역할을 한다. 암시적Cursor 와 명시적Cursor가 있다. 암시적 커서 : 자동생성 SQL%ROWCOUNT : ROW의 수 SQL%FOUND : ROW의 수가 한개이상일 경우 SQL%NOTFOUND : ROW의 수가 0 명시적 커서 : 수동생성 암시적CURSOR SET SERVEROUTPUT ON CREATE OR REPLACE PROCEDURE implicit_cursor(p_empname IN employees.first_name%TYPE) IS v_sal employees.salary%TYPE; v_update_row NUMBER; -- 몇개의 행이 수정되는지 조사하는 부분의 변수 BEGIN -- 검색 SELECT..

Language/SQL 2019.12.20

Oracle PL/SQL PL01 (Procedural extension to Structured Query Language)

PROCEDURE 매개변수로 RETURN값을 사용할 수 있으며, INSERT, DELETE, UPDATE를 주로 사용한다. PROCEDURE : 구조 SET SERVEROUTPUT ON -- (PROCEDURE myProc) CREATE OR REPLACE PROCEDURE myProc (inNum IN NUMBER, outNum OUT NUMBER) IS BEGIN DBMS_OUTPUT.PUT_LINE('inNum:'||inNum); outNum := 333; END; / -- (myProc 호출) VAR val NUMBER; EXECUTE myProc(111, :val); PRINT val; -- (매개변수가 없는 PROCEDURE helloProc) CREATE OR REPLACE PROCEDURE..

Language/SQL 2019.12.20

Oracle PL/SQL PL00 (Procedural extension to Structured Query Language)

PL이란? ACCEPT p_name PROMPT '이 름' ACCEPT p_salary PROMPT '이 름' ACCEPT p_deptno PROMPT '이 름' SQL을 확장한 순차적인 언어이다. SQL문을 간단히 접근하기 위하여 작성해 놓은 함수라고 볼 수 있다. proceduer, fuction, trigger 3가지 종류가 있다. PROCEDURE - INSERT, DELETE, UPDATE FUNCTION - SELECT TRIGER - UTIL 구조 1.선언부 : 사용할 변수, 상수를 선언, 초기화 2.실행부 : 실제 처리할 Query 부분이나 제어문등을 활용. 실제 처리 3.예외처리부 : 각종 오류 부분 처리 PL 구조 : 기본 SET SERVEROUTPUT ON -- 워크시트 내에서 한번만..

Language/SQL 2019.12.20