데이터 모델링의 이해 데이터 모델링 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법 현실세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정 데이터베이스를 구축하기 위한 분석/설계의 과정 데이터 모델링의 특징 추상화 : 현실세계를 일정한 형식에 맞춰 표현 단순화 : 복잡한 현실을 제한된 언어나 표기법을 통해 이해하기 쉽게 표현 정확화 : 애매모호함을 배제하고 누구나 이해 가능하도록 정확하게 표현 💡 단추정! 데이터 모델링을 하는 주요 이유 분석된 모델을 가지고 데이터베이스를 생성하여 개발 및 데이터 관리에 사용 업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현 업무의 흐름을 설명하고 분석 데이터 모델링을 할 때 유의점 중복 : 여러 장소에 같은 정보를 저장하지 않도록 ..
SQL Developer 계정 생성 1. cmd 창에 sqlplus "/as sys dba" 입력 sys계정으로 로그인한다. sys계정은 모든 권한을 가진 계정. 정상 접속이 되었다면 SQL> 으로 바뀐다. 2. 계정 생성 create user 유저명 identified by 비밀번호; 3. 권한 부여 grant connect, resource, dba to 유저명; connect : 사용자가 DB에 접속 가능하도록 resource : 사용자가 객체(테이블, 뷰, 인덱스)를 생성할 수 있도록 dba : 사용자가 시스템 관리에 필요한 모든 권한을 부여할 수 있는 권한 4. 생성한 계정으로 접속
인덱스(INDEX)는 검색속도를 높이기 위한 기술이다. 해당 테이블의 컬럼을 색인화하여 검색 시 해당 테이블의 레코드를 FULL SCAN 하는 게 아니라 색인화되어 있는 인덱스 파일을 검색하여 빠르게 조회한다. 가장 일반적인 인덱스는B트리 인덱스로서 트리구조로 인덱스를 관리한다. 인덱스 생성 CREATE [UNIQUE] INDEX 인덱스명 ON 테이블( 컬럼[,컬럼] ); 인덱스 삭제 DROP INDEX 인덱스명; 💡 주의) B트리를 구현하는 오버헤드가 크다. 따라서 INDEX는 남발하면 안된다.
시퀀스(SEQUENCE) 시퀀스는 호출될 때마다 자동으로 숫자를 생성하는 Oracle 객체로서 테이블의 특정 컬럼값을 넘버링하기 위해 사용된다. 주로 게시판의 글 번호에 순차적인 넘버링을 적용하는 경우에 사용된다. CREATE SEQUENCE 시퀀스명 [ START WITH n] [ INCREMENT BY n] [ MAXVALUE n | NOMAXVALUE ] [ MINVALUE n | NOMINVALUE ] [ CYCLE | NOCYCLE ] [ CACHE n | NOCACHE ] START WITH n : 시퀀스 번호의 시작값 (생략시 1부터 시작) INCREMENT BY n : 시퀀스 번호의 증가치 (생략시 1씩 증가) MAXVALUE n : 시퀀스가 가질 수 있는 최대값 MINVALUE n : 시..
뷰(VIEW)는 다른 테이블에서 유도된 가상의 테이블이다. 실제 데이터를 저장하고 있지 않으며 기반이 되는 물리적인 테이블을 기본 테이블(base table)이라 한다. 뷰를 기반으로 새로운 뷰를 정의할 수도 있다. 용도 데이터베이스에서 선택적으로 데이터조회 가능 ➞ 민감한 데이터를 가진 컬럼들 접근 제어 ➞ 보안 강화 결과를 검색하기 위한 복잡한 질의를 단순화 뷰 (VIEW) CREATE [OR REPLACE] VIEW 뷰이름 [컬럼별칭1, 컬럼별칭2] AS SELECT 컬럼1, 컬럼2 FROM 테이블명 [WITH CHECK OPTION [CONSTRAINT 제약조건명]] [WITH READ ONLY [CONSTRAINT 제약조건명] ]; 생성된 뷰를 수정하기 위해서 CREATE OR REPLACE 명..
DDL(Data Definition Language)은 데이터베이스의 구조를 생성하거나 수정 및 삭제하는데 사용되는 SQL문이다. Oracle 에는 여러가지 Oracle 객체를 가지고 있다. [DB] Oracle의 5가지 객체 - Table, Index, View, Sequence, Synonym 객체 의미 💡 Table 데이터 저장소 💡 Index 테이블의 검색을 빠르게 💡 View 여러 테이블의 데이터를 조회하는 가상 테이블 💡 Sequence 테이블의 특정 컬럼값을 자동으로 넘버링 💡 Synonym 테이블 gangintheremark.tistory.com 1. CREATE CREATE문은 데이터베이스에서 테이블을 생성하는데 사용된다. CREATE TABLE [스키마].테이블명 ( 컬럼명1 데이터타입..
DML (Data Manipulation Language, 데이터 조작어)은 데이터베이스의 테이블에 새로운 데이터를 저장 INSERT 하거나 삭제 DELETE 또는 수정 UPDATE 및 병합 MERGE 할 때 사용하는 조작어를 의미한다. INSERT문 INSERT 문은 테이블에 데이터를 저장하기 위한 데이터 조작어이다. -- 기본 INSERT INTO 테이블명 (컬럼명, 컬럼명2, ...) VALUES (값, 값2, ...) 하나의 테이블에 하나의 행을 저장하는 단일행 INSERT문 하나의 테이블에 여러 행을 저장하는 다중행 INSERT문 여러 테이블에 여러 행을 저장하는 다중 테이블 다중행 INSERT문 1. 단일행 INSERT문 INSERT INTO 테이블명 (컬럼명, 컬럼명2, ...) VALUES..
DDL (Data Definition Language, 데이터 정의어) 데이터베이스의 구조를 생성하거나 수정 및 삭제하는데 사용되는 SQL문이다. [SQL] DDL (Data Definition Language, 데이터 정의어) DDL(Data Definition Language)은 데이터베이스의 구조를 생성하거나 수정 및 삭제하는데 사용되는 SQL문이다. Oracle 에는 여러가지 Oracle 객체를 가지고 있다. [DB] Oracle의 5가지 객체 - Table, Index, View, Sequenc gangintheremark.tistory.com DML (Data Manipulation Language, 데이터 조작어) 데이터베이스의 테이블에 새로운 데이터를 저장하거나 삭제 또는 수정 및 병합할 ..
서브쿼리 서브쿼리는 SQL문을 실행하는데 필요한 데이터를 추가로 조회하기 위해 SQL문 내부에서 사용하는 SELECT문을 의미한다. 서브쿼리의 결과 값을 사용하여 기능을 수행하는 영역은 메인쿼리main query이다. 서브쿼리는 반드시 괄호 () 내에 작성한다. -- Whalen 사원의 월급보다 많이 받는 사원을 조회 SELECT last_name,salary FROM employees WHERE salary >= (SELECT salary FROM employees WHERE last_name='Whalen'); 💡 서브쿼리는 메인쿼리의 컬럼을 사용할 수 있지만, 메인쿼리는 서브쿼리의 컬럼을 사용할 수 없다. 서브쿼리 종류 종류 설명 사용 가능한 연산자 단일행 서브쿼리 서브쿼리 실행 결과가 한 개의 행..
ANSI조인은 모든 DBMS에서 사용 가능한 조인을 의미한다. 여러 테이블을 연결하는 조인 조건을 WHERE 절에 명시하지 않고 다른 방법을 통하여 기술한다. 따라서 조인 조건과 검색 조건을 분리하여 지정하기 때문에 가독성이 향상된다. Nature 조인 두 개의 테이블에서 공통 컬럼을 찾아서 조인하는 방식 반드시 한 개의 공통 컬럼이 있어야 하며, 두 개 이상의 공통 컬럼이 있다면 공통 컬럼들 값이 모두 같은 것만 조회 공통 컬럼을 사용할 때 별칭(alias)은 사용 불가능 -- employees 테이블과 departments 테이블의 공통 컬럼 조회 SELECT last_name 이름,department_name 부서명, department_id 부서번호 FROM employees NATURAL JOI..
오라클 조인은 반드시 오라클에서만 사용 가능한 조인을 의미한다.오라클 조인 방법의 특징은 여러 테이블을 연결하는 조인 조건을 WHERE 절에 명시한다. Equi 조인 조인 대상이 되는 두 테이블에서 공통적으로 존재하는 컬럼의 값이 반드시 일치하는 행을 연결하여 데이터를 반환하는 조인이다. 기본키 primary key를 가진 테이블(master)과 참조키 foreign key를 가진 테이블(slave)을 조인할 때 사용한다. WHERE절에 두 개의 테이블을 연결할 조건인 조인 조건을 동등 연산자 =를 사용하여 명시한다. -- 사원 테이블(employees)과 부서 테이블(departments)의 사원명과 부서명 출력 SELECT last_name,department_name FROM employees, d..
WHERE절은 SELECT문에서 조건을 지정하여 조건과 일치하는 데이터만 추출할 때 사용되며 HAVING 절은 GROUP BY절에 의해서 생성된 결과 중에서 조건과 일치하는 데이터를 추출할 때 사용된다 -- 부서별 월급 총액이 90000 이상인 부서만 조회 SELECT department_id, SUM(salary) FROM employees GROUP BY department_id HAVING SUM(salary) >= 90000 ORDER BY 1; HAVING절을 사용하여 부서별로 그룹핑한 결과 중에서 90000 이상인 검색조건을 추가하였다. -- 3000이상의 월급을 가지고 있는 사원들에 대해서만 부서별 월급총액이 90000 이상인 부서를 조회 SELECT department_id, SUM(sal..