SQL 61

======= **** 계층형 쿼리 **** =======

계층형 쿼리는 Spring 프레임워크 시간에 답변형 게시판에서 사용한다. 또한 전자결재 에서도 사용된다. -- 결재라인 만들기 -- 104 ==> 103 ==> 102 ==> 100 ==> NULL -- 1 2 3 4 -- 104번 사원의 직속결재권자 찾기 select level , employee_id as 사원번호 , first_name || ' ' || last_name as 사원명 , manager_id as 직속결재권자 from employees start with employee_id = 104 connect by prior manager_id = employee_id; ----- ===== ***** !!!! prior 다음에 나오는 manager_id 컬럼은 start with 되는 행의 ..

SQL 2022.07.19

====== **** 데이터사전(Data Dictionary) **** ======

---- **** ORACLE DATA DICTIONARY VIEW(오라클 데이터 사전 뷰) **** ---- show user; -- USER이(가) "HR"입니다. select * from dictionary; -- 또는 select * from dict; /* USER_CONS_COLUMNS ALL_CONS_COLUMNS */ ----------------------------------------------- -- ========= SYS 로 접속한 것 시작 ========== -- ----------------------------------------------- show user; -- USER이(가) "SYS"입니다. -- 먼저 index 공부를 할 때 trace(자동추적) 때문에 HR 에..

SQL 2022.07.19

SQL*Developer 에서 Plan(실행계획) 확인하기

-- ==== *** SQL*Developer 에서 Plan(실행계획) 확인하는 방법 *** ==== -- select 문이 실행될 때 인덱스를 사용하여 데이터를 얻어오는지 인덱스를 사용하지 않고 Table Full Scan 하여 얻어오는지 알아봐야 한다. 이럴때 사용하는 것이 SQL Plan(실행계획)이다. SQL*Developer 에서는 "SQL편집창(SQL 워크시트)"에 Plan(실행계획) 과 Trace(자동추적) 메뉴가 상단에 있다. Plan(실행계획) 과 Trace(자동추적) 의 차이는, Plan(실행계획) 은 SQL을 실행하기 전에 Oracle Optimizer(옵티마이저, 최적화기)가 SQL을 어떻게 실행할지를 미리 알려주는 것이고, Trace(자동추적) 는 SQL을 실행해보고, Oracle..

SQL 2022.07.19

======== **** INDEX(인덱스, 색인) **** ========

ndex(==색인)는 예를 들어 설명하면 아주 두꺼운 책 뒤에 나오는 "찾아보기" 와 같은 기능을 하는 것이다. "찾아보기" 의 특징은 정렬되어 있는 것인데 index(==색인) 에 저장된 데이터도 정렬되어 저장되어 있다는 것이 특징이다. */ -- index(==색인)를 생성해서 사용하는 이유는 where 절이 있는 select 명령문의 속도를 향상 시키기 위함이다. -- index(==색인)은 어떤 컬럼에 만들어 할까요? /* 1. where 절에서 자주 사용되어진 컬럼에 만들어야 한다. 2. 선택도(selectivity)가 높은 컬럼에 만들어야 한다. ※ 선택도(selectivity)가 높다라는 것은 고유한 데이터일수록 선택도(selectivity)가 높아진다. 예: 성별컬럼 --> 선택도(sele..

SQL 2022.07.19

테이블에 새로운 컬럼 추가, 삭제

----- ***** 어떤 테이블에 새로운 컬럼 추가하기 ***** ----- alter table 테이블명 add 추가할 컬럼명 데이터타입; desc TBL_JIKWON; alter table TBL_JIKWON add salary number(5); -- Table TBL_JIKWON이(가) 변경되었습니다. select * from TBL_JIKWON; ----- ***** 어떤 테이블에 컬럼 삭제하기 ***** ----- alter table 테이블명 drop column 삭제할컬럼명; alter table TBL_JIKWON drop column salary; desc TBL_JIKWON; ----- ***** 어떤 테이블에 새로운 컬럼 추가하고 NOT NULL 을 주기 ***** ----- --..

SQL 2022.07.19

제약조건

--------- **** 어떤 테이블에 제약조건을 추가하기 **** ----------- 제약조건 추가시 NOT NULL 제약을 제외한 나머지 4개는 아래와 같이한다. alter table 테이블명 add constraint 제약조건명 primary key(컬럼명); alter table 테이블명 add constraint 제약조건명 unique(컬럼명); alter table 테이블명 add constraint 제약조건명 check( ... ); alter table 테이블명 add constraint 제약조건명 foreign key(컬럼명) references 부모테이블명(식별자컬럼명); alter table 테이블명 add constraint 제약조건명 foreign key(컬럼명) referen..

SQL 2022.07.15

NOT NULL 제약

-- tbl_new_member 테이블의 name 컬럼에 있는 NOT NULL 제약 제거하기 alter table tbl_new_member modify name null; -- Table TBL_NEW_MEMBER이(가) 변경되었습니다. -- tbl_new_member 테이블의 name 컬럼에 있는 NOT NULL 제약 추가하기 alter table tbl_new_member modify name not null; -- Table TBL_NEW_MEMBER이(가) 변경되었습니다. -- tbl_new_member 테이블의 mobile 컬럼에 있는 NOT NULL 제약 추가하기 alter table tbl_new_member modify mobile not null; -- ORA-02296: (HR.) 사..

SQL 2022.07.15

Constraint(제약조건) !!!! [개중요] !!!!

>>>> 제약조건(Constraint)의 종류 > Primary Key(기본키, 대표식별자) 제약 [P] 및 Unique 제약 [U] 에 대해서 알아보기 Foreign Key(외래키) 제약 [R] 에 대해서 알아보기 tbl_new_board.subject 작성자명 --> tbl_new_member.registerday 작성일자 --> tbl_new_board.name */ select B.boardno as 글번호 , B.subject as 글제목 , M.name as 작성자명 , to_char(B.registerday, 'yyyy-mm-dd hh24:mi:ss') as 작성일자 from tbl_new_board B join tbl_new_member M ON B.fk_member_id = M.membe..

SQL 2022.07.14

****** PACKAGE(패키지) ******

-------------------- ****** PACKAGE(패키지) ****** ---------------------- ---> PACKAGE(패키지)란? 여러개의 Procedure 와 여러개의 Function 들의 묶음 ------------------------------------------------------------------------------------- 1. PACKAGE(패키지) 선언하기 create or replace package employee_pack is -- employee_pack 패키지에 들어올 프로시저 또는 함수를 선언한다. procedure pcd_emp_info(p_deptno IN employees.department_id%type); procedure ..

SQL 2022.07.14

---- ===== **** CURSOR ( 중요 ) **** ===== -----

-- PL/SQL 에서 SELECT 되어져 나오는 행의 개수가 2개 이상인 경우에는 위에서 한 것처럼 -- table 타입의 변수를 사용하여 나타낼 수 있고, 또는 CURSOR 를 사용하여 나타낼 수도 있다. -- table 타입의 변수를 사용하는 것 보다 CURSOR 를 사용하는 것이 더 편하므로 -- 대부분 CURSOR 를 많이 사용한다. ----- ===== ***** 명시적 CURSOR 만들기 ***** ===== ----- ※ 형식 1.단계 -- CURSOR 의 선언(정의) CURSOR 커서명 IS SELECT 문; 2.단계 -- CURSOR 의 OPEN OPEN 커서명; 3.단계 -- CURSOR 의 FETCH (FETCH 란? SELECT 되어진 결과물을 끄집어 내는 작업을 말한다) FETC..

SQL 2022.07.14