데이터 베이스(4), SQL 개요 및 데이터 무결성

2022. 10. 21. 18:52강의 내용 정리/데이터베이스

728x90
반응형

SQL 개요


1. SQL 개요

1) SQL 개요

다양한 상용관계 DBMS마다 지원하는 SQL의 기능에는 다소 차이가 있을 수 있다. 관계 데이터 모델은 집합을 기반으로 두고 있어 테이블 내에 동일한 튜플을 허용하지 않지만 SQL은 이를 허용한다.

 

2) SQL의 발전 역사

SQL 2 버전을 많이 사용한다. SQL 3 버전은 SQL 2 버전보다 더 많은 기능이 추가되었다.

 

3) SQL 특징

  • SQL은 비절차적 언어(선언적 언어)이므로 사용자는 자신이 원하는 바만 명시하며, 원하는 것을 처리하는 방법은 명시할 수 없다.
  • 관계 DBMS는 사용자가 입력한 SQL문을 번역하여 사용자가 요구한 데이터를 찾는데 필요한 모든 과정을 담당한다.
  • 자연어에 가까운 구문을 사용하여 질의를 표현할 수 있다.
  • 두 가지 인터페이스가 있다.
    • 대화식 SQL(interactive SQL): 콘솔 창을 열어 입력
    • 내포된 SQL(embedded SQL) : 호스트 언어 내에서 입력

 

SQL의 인터페이스와 구성요소

 


2. 데이터 정의어와 무결성 제약조건

1) 데이터 정의어의 종류

인스턴스가 아닌 스키마에 대한 조작을 의미한다.

  • CREATE: 생성
  • ALTER: 변경
  • DROP: 삭제

CREATE SCHEMA MY_DB AUTHORIZATION kim;

  • MY_DB라닌 이름의 스키마를 생성하는데, kim이 소유자임을 명시한다.
  • RESTRICT는 스키마 내의 데이터베이스 객체가 비었을 때만 삭제한다.
  • CASCADE는 스키마를 삭제하며 이와 연관된 객체를 모두 삭제한다.

 

2) 릴레이션 정의

SQL에서는 릴레이션을 TABLE이라 부른다. 괄호 안에는 어트리뷰트나 제약조건을 명시한다. 어트리뷰트 명세는 ,로 구분하여 정한다. 하나의 어트리뷰트는 어트리뷰트 이름과 데이터 타입, 제약조건을 명시하여 표현한다. 제약조건은 넣을수도 있고, 없을 수도 있다. 

 

무결성 제약조건도 선택적으로 사용할 수 있다.

 

 

릴레이션 정의에 사용되는 오라클 데이터 타입

  • 자주 사용하는 것은 INTEGER나 INT를 사용하는 경우가 많다.
  • NUMBER는 실수를 의미한다.
  • CHAR는 고정길이 문자열을 의미하고, VARCHAR는 가변 길이 문자열을 의미한다. 
  • VARCHAR는 끝에 NULL값을 넣는다던가, 길이 + 어레이의 형태로 표현할 수 있기에 표준이 다르다.
  • VARCHAR에서 n값은 가장 길이가 긴 문자를 사용한다. 고정길이 문자열을 사용하는 경우에는 문자열 길이의 변동성이 적을 때 사용한다. 가변 길이 문자열은 변동성이 큰 경우에는 해당 문자열을 사용한다. 또한 PRIMARY KEY를 사용할 때는 고정 길이를 사용하는 경우가 많다. 
  • 일반적으로 문자열은 오버헤드가 크기 때문에 이를 키값으로 많이 사용하지는 않지만 만약 사용한다면 고정길이 문자열을 사용하는 것이 더 좋을 수도 있다.

 

ALTER TABLE은 테이블 생성 후에 스키마나 제약조건을 변경하기 위해 사용한다.

 

인덱스 이름을 EMPDNO_IDX로 붙였다. 인덱스의 이름은 어트리뷰트 이름을 포함한 뒤 IDX를 뒤에 붙여 쉽게 기억할 수 있도록 하는 것이 좋다.

 

3) 제약조건

  • NOT NULL: 널을 허용하지 않는다. 이에 대한 언급이 없으면 디폴트로 널을 허용한다.
  • UNIQUE: 중복값을 받지 않는다.
  • DEFAULT: 튜플을 삽입할 때 해당 어트리뷰트의 값이 주어지지 않으면 디폴트값으로 설정한 값이 들어간다.
  • CHECK: 어트리뷰트 값의 범위를 지정한다.
  • IN: 정해진 범위를 설정해줄 수 있다.
  • PRIMARY KEY: 기본키를 설정한다. 두 개 이상의 어트리뷰트를 사용할 때는 ,를 사용하면 된다.
  • FOREIGN KEY: 외래키를 지정한다.
  • ON DELETE CASCADE: 참조 무결성 옵션을 지정할 수 있다.

 

참조 무결성 제약조건을 유지하기 위해 사용하는 옵션

ON UPDATE 에서는 NO ACTION만 가능하다.

 

 

예시 ON DELETE CASCADE 구문

DEPARTMENT 릴레이션에서 3번 부서를 삭제하면 3번 부서에 근무하는 모든 사원에 대한 정보도 삭제된다.

 

728x90
반응형