~2023.02/DB(SQL)

    서브 쿼리란? (SELECT절 서브 쿼리, FROM절 서브 쿼리, WHERE절 서브 쿼리)

    서브 쿼리란? (SELECT절 서브 쿼리, FROM절 서브 쿼리, WHERE절 서브 쿼리)

    서브 쿼리란? 서브 쿼리는 SQL문 안에 포함된 또 다른 SQL문을 의미한다. 서브 쿼리의 종류 SELECT절 서브쿼리 서브쿼리가 SELECT절 안에 들어있는 형태이다. 스칼라 서브 쿼리라고도 불린다. SELECT절에 오는 서브 쿼리는 반드시 단일 행을 리턴해야 한다. FROM절 서브 쿼리 서브 쿼리가 FROM절 안에 들어있는 형태이다. 인라인 뷰라고도 불린다. 뷰처럼 결과가 동적으로 생성된 테이블 형태로 사용할 수 있다. WHERE절 서브 쿼리 서브쿼리가 WHERE절 안에 들어있는 형태이다. 중첩 서브 쿼리라고도 불린다. 서브 쿼리 예제 SELECT절 서브쿼리 FROM절 서브 쿼리 WHERE절 서브 쿼리

    JDBC_02

    JDBC_02

    1. JDBC select package sec02.exam01_statement; import java.io.BufferedReader; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class JDBC_Select { public static void main(String[] args) { // TODO Auto-generated method stub String driver = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:..

    JDBC_01

    JDBC_01

    1. JDBC 기본 JDBC(Java Database Connectivity) java library(java class)로써 db에 접속하여 CRUD 기능을 수행할 수 있는 API(Application Program Interface)이다. package sec01.exam01_jdbc; import java.sql.*; public class JDBC_Connect01 { public static void main(String[] args) { /** ORACLE JDBC Driver Test ***************************/ String driver = "oracle.jdbc.driver.OracleDriver"; /************************************..

    패키지

    패키지

    -- 패키지 선언(명세부) CREATE OR REPLACE PACKAGE EXAM_PACK IS FUNCTION CAL_BONUS(VEMPNO IN EMP.EMPNO%TYPE) RETURN NUMBER; PROCEDURE CURSOR_SAMPLE02; END; / -- 패키지 몸체 선언(몸체부) CREATE OR REPLACE PACKAGE BODY EXAM_PACK IS FUNCTION CAL_BONUS(VEMPNO IN EMP.EMPNO%TYPE) RETURN NUMBER IS VSAL NUMBER(7, 2); BEGIN SELECT SAL INTO VSAL FROM EMP WHERE EMPNO = VEMPNO; RETURN (VSAL * 200); END; PROCEDURE CURSOR_SAMPLE..

    커서와 트리거

    -- 5. 커서 -- 실습: 부서 테이블의 모든 내용을 조회하기 -- 커서를 사용하여 부서 테이블의 모든 내용을 출력한다. SELECT * FROM DEPT; SET SERVEROUTPUT ON CREATE OR REPLACE PROCEDURE CURSOR_SAMPLE01 IS VDEPT DEPT%ROWTYPE; -- 레코드 타입으로 변수 선언 CURSOR C1 -- 커서 선언 IS SELECT * FROM DEPT; BEGIN DBMS_OUTPUT.PUT_LINE('부서번호 / 부서명 / 지역명'); DBMS_OUTPUT.PUT_LINE('-----------------------------------------'); OPEN C1; -- 커서 열기 LOOP FETCH C1 INTO VDEPT.DEPT..

    저장 프로시저와 저장 함수

    -- 1. 저장 프로시저 -- 실습: 저장 프로시저 생성하기 -- 사원 테이블에 저장된 모든 사원을 삭제하는 프로시저 작성 DROP TABLE EMP01; CREATE TABLE EMP01 AS SELECT * FROM EMP; SELECT * FROM EMP01; CREATE OR REPLACE PROCEDURE DEL_ALL IS BEGIN DELETE FROM EMP01; END; / EXECUTE DEL_ALL; SELECT * FROM EMP01; -- 저장 프로시저의 오류 원인 살피기 DROP TABLE EMP01; CREATE TABLE EMP01 AS SELECT * FROM EMP; SELECT * FROM EMP01; DROP PROCEDURE DEL_ALL; CREATE OR REPL..

    PL/SQL

    PL/SQL

    SET SERVEROUTPUT ON -- 출력해 주는 내용을 화면에 보여주도록 설정한다. BEGIN DBMS_OUTPUT.PUT_LINE('HELLO WORLD!'); END; / -- PL/SQL에서 SELECT INTO문 -- PL/SQL의 SELECT 문으로 EMP 테이블에서 사원번호와 이름을 조회한다. SET SERVEROUTPUT ON DECLARE -- %TYPE 속성으로 컬럼 단위 레퍼런스 변수 선언 VEMPNO EMP.EMPNO%TYPE; VENAME EMP.ENAME%TYPE; BEGIN DBMS_OUTPUT.PUT_LINE('사번 / 이름'); DBMS_OUTPUT.PUT_LINE('-------------'); SELECT EMPNO, ENAME INTO VEMPNO, VENAME F..

    사용자 관리

    -- user01 계정(비밀번호: tiger)을 생성하고 -- 해당 계정에서 오라클 데이터 베이스에 접속해서, 테이블을 생성할 수 있는 권한을 부여하시오. CONN SYSTEM/SYS CREATE USER USER01 IDENTIFIED BY TIGER; GRANT CREATE SESSION, CREATE TABLE, RESOURCE TO USER01;

    시퀀스

    -- 시퀀스 CREATE SEQUENCE DEPT_DEPTNO_SQ INCREMENT BY 10 START WITH 10; SELECT DEPT_DEPTNO_SQ.NEXTVAL FROM DUAL; -- 다음 값을 알아내기 위해 SELECT DEPT_DEPTNO_SQ.CURRVAL FROM DUAL; -- 시퀀스의 현재 값을 알아내기 위해 SELECT SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY, CYCLE_FLAG FROM USER_SEQUENCES; SELECT * FROM DEPT_COPY; INSERT INTO DEPT_COPY VALUES(50, 'TEST', 'TEST'); ALTER TABLE DEPT_COPY ADD PRIMARY KEY(DEPTN..