본문 바로가기

오라클

PL/SQL PL/SQL 블럭구조1. 4개의 키워드로 구성a. [declare]b. beginc. [exception]d. end; 2. declare- 선언부, declare section- 프로그램에서 사용되는 변수, 객체 등을 선언하는 영역- 생략 가능 3. begin- 실행부, 구현부, executable section- begin ~ end- 프로그램에서 실제 구현 내용들을 선언하는 영역- 표준 SQL + PL/SQL(연산, 제어 등..)- 생략 불가능 4. exception- 예외 처리부, exception section- catch 절 역할- 예외 처리 코드를 선언한느 영역- 생략가능 5. end;- 블럭의 종료- 생략 불가능 6. PL/SQL 블럭 = 선언부 + 실행부 + 예외처리부 begin begi.. 더보기
프로시저 프로시저 - 특정 작업을 수행하는, 이름이 있는 PL/SQL BLOCK 이다- 매개 변수를 받을 수 있고, 반복적으로 사용 할 수 있는 BLOCK 이다- 보통 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL BLOCK을 데이터베이스에 저장하기 위해 생성한다. 1. 익명 프로시저 : 이름없음 > 재사용을 목적을 하지 않는 프로시저 > 동작 방식(표준 SQL 동일) > 확장 기능때문에 사용2. 실명 프로시저 : 이름있음 > 재사용을 목적을 하지 않는 프로시저 > 동작 방식(PL/SQL 동일. 재사용) . 비용절감 + 확장 기능 --프로시저 영역(코드 블럭{})begin --각종 명령어 : 표준 SQL + PL/SQLdums_output_line('Hello'); end; begin - 시작du.. 더보기
정규화(Normalization) 정규화, Normalization - 자료의 손실이나 불필요한 정보를 없애고, 데이터의 일관성을 유지하고, 데이터 중복을 최소화하기 위해 자료 구조(테이블 스키마)를 변경하는 작업 - 우리가 만든 테이블(비정형) -> 정규형의 테이블로 수정하는 작업 - 제 1 정규화, 제 2 정규화, 제 3 정규화.. 관계형 데이터베이스 시스템이 지향하는 데이터베이스의 상태 1. 최대한 null을 가지지 않는다. 2. 중복값을 가지지 않는다.(완전히 동일한 데이터가 2군데 이상 존재하지 않는다.) 정규화를 하는 목적 1. null + 중복값을 제거 2. 자료 삽입, 갱신, 삭제에 따른 이상 현상 제거 이상 현상(Anomaly) - 테이블 설계가 잘못되면 발생 > 현상을 발생 안하도록 테이블을 다시 설계 > 정규화 1. .. 더보기
키의 개념 및 종류 키 - 튜플들 속에서 구별할 수 있는 유일한 기준이 되는 Attribute 속성 > 컬럼 > 키(Key)- 역할(의미)이 부여된 속성이나 컬럼 1. 슈퍼키- 레코드(행)을 구분할 수 있는 역할- 식별자 역할을 할 수 있는 속성- 복합키(Composite Key) 2. 후보키- 슈퍼키들 중에서 최소성을 갖춘 키- 릴레이션을 구성하는 속성 중에서 튜플을 유일하게 구별할 수 있는 속성들의 부분집합- 유일성과 최소성 만족. 3. 기본키- 후보키들 중에서 정식으로 테이블의 식별자로 선택된 키- 한 릴레이션 에서 특정 튜플을 유일하게 구별할 수 있는 속성- null값을 가질수 없고(not null), 중복되어서도 안된다.(unique) 4. 대체키- 기본키에서 탈락된 나머지 후보키 5. 외래키- 부모 테이블을 참조.. 더보기
데이터베이스 모델링 ** 데이터 베이스 작업 1. 데이터베이스 설계 a. 데이터베이스 모델링 - 가장 초반 작업 - 데이터베이스 구성 요소 인식 + 정의 > 테이블 도식화 > 최종 산출물 > ERD - ERD 만드는 과정 = 모델링 ( ERD, Entity(테이블) Relationship Diagram) b. 데이터베이스 설계 -ERD를 가지고 구체적 방안(자료형 지정, 실제 컬럼명) ---------------------------------------------------------------------------DBMS 결정되기 전(현실 : 미리정함) 2. 데이터베이스 구현 a. DB Object 구현 -ERD를 오라클 적용하는 단계 ** 데이터베이스 모델링 1. ERD- 엔티티 관계 다이어그램- 모델링 대표적인 방식.. 더보기
Group by 절 group by절- 레코드들을 특정 컬럼값에 맞춰서 그룹을 나누는 작업- 편가르기- 그룹을 왜 묶을까?1. 그룹을 나눠서 구분해서 관리하려고? 따로 정렬하기 위해서? :X2. 나눠놓은 그룹을 완전 분리 > 별도의 테이블로 관리 : X3. 각각의 나눠놓은 그룹별로 집계함수를 적용하기 위해서 : O(group by 절의 목적) group by 컬럼명- 그룹을 나누는데 기준이 되는 컬럼명(1개 or 그이상) gropu by 구문- select 컬럼리스트 from 테이블명 [where절] [group by 절] [order by 절] group by 사용 시 컬럼리스트에 올 수 있는 대상a. 집계함수 b. group by의 대상 컬럼c. a와 b를 제외하고는 모두 불가능 ex) tblinsa. 부서별(그룹) 평.. 더보기
사용자 계정(SQL) 사용자 계정 생성하기- 시스템 권한을 가지고 있는 계정만 가능하다. 새 계정 관리하지- create user 계정명 identified by 암호; //계정 생성 + 암호지정- alter user 계정명 identified by 암호; //암호 수정- drop user 계정명; //계정 삭제 각종 권한 관리하기-권한 부여하기 (grant)- grant 권한 to 유저명;-객체 권한 관리하기 접속 권한 grant create table to team; --테이블 생성 권한 .. 더보기
계층형 쿼리(Hierarchical Query) ex)tblComputer 테이블컴퓨터 -본체 -메인보드 -그래픽카드 -랜카드 -메모리 -모니터 -보호필름 -프린터 -잉크 카트리지 -A4 용지 create table tblComputer( seq number primary key, --PK name varchar2(100) not null, --요소명 qty number not null, --수량 pseq number references tblComputer(seq) --부모부품(FK)); 1. 셀프 조인: inner join or outer join > 동일한 테이블을 가지고 실행 select * from tblComputer c1 inner join tblComputer c2on c1.seq = c2.pseq; -- c1(부모) , c2(자식) 2.. 더보기
페이징 (웹) ex) 페이징 만드는 순서 select name,basicpay from tblInsa; --원본 select name,basicpay from tblInsa order by basicpay desc; --원하는 정렬 + 행번호(유효X) select name,basicpay,rownum from (select name,basicpay from tblInsa order by basicpay desc); --원하는 정렬 > 다시 행번호 할당(from절) select name, basicpay,rownum as 방금만든행번호, rnum as 아까만든행번호 from(select name,basicpay,rownum as rnum from (select name,basicpay from tblInsa order .. 더보기
Alter/Drop (DDL) **객체 생성 : create객체 수정 : alter객체 삭제 : drop 데이터 생성 : insert데이터 수정 : update데이터 삭제 : delete-----------------------------------------------------------------------------------------------------------------------------테이블 수정하기- 테이블의 구조를 수정하기 > 컬럼의 정의를 수정하기- 최대한 테이블을 수정할 상황을 만들면 안된다.(*************************************) 1. 테이블 삭제 > 테이블 DDL 수정 > 수정된 DDL 새롭게 테이블 생성 + 기존에 데이터가 있으면 데이터 백업 > 테이블 삭제 > 테이블 .. 더보기