데이터베이스 22

제약조건 - PRIMARY KEY

PRIMARY KEY는 UNIQUE와 NOT NULL 제약조건의 특성을 모두 가지는 제약조건이다. NULL이 아니면 중복되지 않는 유일한 값을 가지므로 사원번호 같이 테이블의 각 행을 식별하는데 활용한다. 테이블마다 단 하나밖에 지정할 수 없다. 특정 열을 PRIMARY KEY로 지정하면 해당 열에는 자동으로 인덱스가 만들어진다. 주민번호 같은 예민한 개인 정보를 의미하는 데이터는 지정하지않는다. 테이블 생성시 제약조건 지정하기 CREATE TABLE TABLE_PK( LOGIN_ID VARCHAR2(20) PRIMARY KEY, LOGIN_PWD VARCHAR2(20) NOT NULL, TEL VARCHAR2(20) ); 테이블 생성 시 제약 조건 이름 직접 지정하기 CREATE TABLE TABLE_..

데이터베이스 2022.04.20

제약조건 - NOT NULL

① 테이블 생성시 제약 조건 지정 ※ 오라클이 자동으로 제약조건이름을 지정해 준다. ② 제약 조건 이름 직접 지정 ※ 제약조건이 많아지면 찾기 어려워 질 수 있어서 이름 붙이는 규칙을 정하여 제약 조건 이름을 지정하는 경우가 많다. ③ 생성한 테이블에 제약조건을 이름 직접 지정해서 추가하기 ※ ALTER 명령어와 MODIFY 키워드를 사용한다. ④ 생성한 제약조건의 이름 변경하기 ※ ALTER명령어에 RENAME CONSTRAINT 키워드를 사용해서 TBLNN_TEL_NN --> TBLNN2_TEL_NN으로 변경 ⑤ 제약조건 삭제 ※ ALTER명령어에 DROP CONSTRAINT 키워드를 사용하면 지정한 제약조건을 삭제할 수 있다.

데이터베이스 2022.04.20

제약조건

데이터 무결성이란? 데이터 무경설(data integrity)은 데이터베이스에 저장되는 데이터의 정확성과 일관성을 보장한다는 의미이며, 이를 위해 항상 유지해야 하는 기본 규칙을 가지고 있다. 제약조건은 이러한 데이터 무결성을 지키기위한 안전장치로서 잘못된 데이터의 입력이나 수정, 삭제 등 모든 과정으로부터 무결성을 보장한다. 종류 설명 영역 무결성 (domain integrity) 열에 저장되는 값의 적정 여부를 확인. 정해 놓은 범위를 만족하는 데이터임을 규정. 개체 무결성 (entity integrity) 테이블 데이터를 유일하게 식별할 수 있는 기본키(primary key)는 반드시 값을 가지고 있어야하며 NULL이 될 수 없고 중복될 수도 없음을 규정. 참조 무결성 (referential int..

데이터베이스 2022.04.20

데이터베이스 객체 - 뷰

① 뷰란? 흔히 가상 테이블(virtual table)로 부른다. 하나이상의 테이블을 조회하는 SELECT문을 저장한 객체를 뜻한다. 물리적 데이터를 따로 저장하지 않고 SELECT문을 저장 ▶ SELECT문을 저장하여 서브쿼리처럼 사용할 수 있다. ② 뷰의 사용 목적(편리성) ▶ 많은 양의 SELECT문을 사용하고 거기에 여러 개의 결과 값을 조인하고 서브쿼리로 WHERE 조건식에도 사용한다면 전체 SELECT문은 훨씬 더 커지게 된다. 또한 이후 수정이 필요하거나 다른 개발자가 코드를 처음부터 파악해야 하는 경우에 적잖은 시간과 노력이 든다는 것도 생각해야한다. 이럴 때 자주 활용하는 SELECT문을 뷰로 저장해 놓은 후 다른 SQL문에서 활용하면 전체 SQL문의 복잡도를 완화하고 본래목적의 메인쿼리..

데이터베이스 2022.04.19

데이터베이스 객체 종류 - 인덱스

① 인덱스란? 색인이라는 뜻의 인덱스(index)는 목차나 색인을 통해 책 내용을 찾는 것과 마찬가지로 오라클 데이터베이스에서 데이터 검색 기능의 향상을 위해 테이블 열에 사용하는 객체를 말한다. 테이블에 보관된 특정 행 데이터의 주소, 즉 위치 정보를 책 페이지처럼 목록으로 만들어 놓은 것이다. 인덱스는 테이블 열을 여러 가지 분석을 통해 선정하여 설정할 수 있다. 인덱스 사용 여부에 따라 데이터 검색방식을 두 가지로 나눈다. ◎ Table Full Scan : 테이블 데이터를 처음부터 끝까지 검색하여 원하는 데이터를 찾는 방식 ◎ Index Scan : 인덱스를 통해 데이터를 찾는 방식 인덱스도 오라클DB의 객체이므로 USER__INDEXES, USER_IND_COLUMNS와 같은 데이터 사전을 사용..

데이터베이스 2022.04.19

데이터베이스 객체 종류 - 데이터사전

데이터 사전 오라클의 데이터베이스 테이블은 사용자 테이블과 데이터 사전으로 나뉜다. 사용자 테이블(user table = normal Table) : 데이터베이스를 통해 관리할 데이터를 저장하는 테이블 데이터 사전(data dictionary = Base Table) : 데이터베이스를 구성하고 운영하는 데 필요한 모든 정보를 저장하는 특수한 테이블로 데이터베이스가 생성되는 시점에 자동으로 만들어진다. 데이터 사전에는 데이터베이스 메모리, 성능, 사용자, 권한, 객체 등 오라클 데이터베이스 운영에 중요한 데이터가 보관되어 있다. 그래서 사용자가 데이터 사전 정보에 직접 접근하거나 작업하는 것을 허용하지 않는다. 그 대신 데이터 사전 뷰(data dictionary view)를 제공하여 SELECT문으로 정..

데이터베이스 2022.04.19

세션과 읽기 일관성의 의미, LOCK

세션이란? 데이터베이스 접속을 시작으로 여러데이터베이스에서 관련 작업을 수행한 후 접속을 종료하기까지 전체기간을 의미한다. 그러므로 세션이 여러개라는 말은 현재 오라클 데이터베이스에 접속하여 사용 중인 연결이 여러개 있다는 뜻이다. 트랜잭션과 세션의 관계 트랜잭션은 데이터 조작 명령어가 모인 하나의 작업단위를 뜻하며 세션내부에는 하나이상의 트랜잭션이 존재한다. 왜냐하면 데이터베이스에 접속한 후 종료하기까지의 과정이 하나의 세션이고 이 세션이 유지되는 동안 여러번 COMMIT, ROLLBACK 작업이 진행되기 때문이다. 세션이 트랜젝션보다 큰 범위의 개념이다. 읽기 일관성의 중요성 데이터베이스는 여러 곳(여러사용자, 여러 응용프로그램) 에서 동시에 접근하여 데이터를 관리,사용하는 것이 목적이므로 대부분 수..

데이터베이스 2022.04.18

트랜잭션 제어 ROLLBACK, COMMIT

하나의 단위로 데이터를 처리하는 트랜잭션 관계형 데이터베이스에서 하나의 작업 또는 밀접하게 연관된 작업을 수행을 위해 나눌 수 없는 최소 수행 단위를 말한다. 트랜잭션 내에 있는 여러 명령어를 한 번에 수행하여 작업을 완료하거나 아예 모두 수행하지 않는 상태, 즉 모든 작업을 취소한다. 이러한 특성으로 트랜잭션 의미를 'ALL OR NOTHING' 문장으로 설명하기도 한다. 트랜잭션을 제어하기 위해 사용하는 명령어를 TCL(Transaction Control Language)이라고 한다. 트랜잭션의 필요성. 조작명령어를 하나씩 실행하다가 천재지변 또는 데이터베이스 서버에 갑작스런 문제로 인해 명령어를 실행하지 못하는 상황이 발생했을때 데이터가 유실되는 상황이 일어나는 것을 막기위해 사용한다. 트랜잭션을 ..

데이터베이스 2022.04.18

데이터조작어 DML - DELETE

테이블에 있는 데이터를 삭제할 때 사용한다. ▶ DELETE문의 기본형식 DELETE FROM 테이블 이름 WHERE 삭제할 대상 행을 선별하기 위한 조건식; DELETE문도 UPDATE문처럼 삭제 대상이 될 데이터를 선정하기 위해 WHERE절 및 조건식을 지정할 수 있다. 지정하지 테이블의 데이터가 모두 삭제된다. 데이터 일부분만 삭제하기 서브쿼리를 사용하여 데이터 삭제하기 DELETE문에서도 WHERE절에 서브쿼리를 사용하는 것이 가능하다. ex) 급여등급이 3등급, 즉 급여가 1401~2000 사이에 있는 30번 부서의 사원들만 삭제하기 ▶ 급여 등급이 3등급이면서 30번 부서인 사원들이 삭제되었다 ☆★ UPDATE문과 DELETE문은 테이블에 이미 존재하는 데이터를 수정하거나 삭제하는 기능을 수행..

데이터베이스 2022.04.18

데이터조작어 DML - UPDATE

테이블에 저장되어 있는 데이터 내용을 수정할 때 UPDATE문을 사용한다. UPDATE문의 기본사용법 UPDATE 변경할 테이블 SET 변경할 열1 = 데이터, 변경할 열2 = 데이터, ... , 변경할 열 n = 데이터 WHERE 데이터를 변경할 대상행을 선별하기 위한 조건 --WHERE절을 생략할 경우 지정된 모든 열의 데이터가 변경된다. 데이터 전체수정하기 ▶ 위 처럼 테이블에 저장되어 있는 모든 데이터의 특정 열 데이터를 일괄적으로 변경하는 경우는 흔치 않다. 대부분의 경우에 몇몇 행만 선정하여 데이터를 수정하는 방식을 사용한다. 데이터 일부분만 수정하기 서브쿼리를 사용하여 데이터 수정하기 여러 열을 한번에 수정하는 경우 열 하나하나를 수정하는 경우 열을 따로 나눠서 서브쿼리를 사용할 WHERE절..

데이터베이스 2022.04.18