Database - SQL 개요 & 데이터 정의어와 무결성 제약 조건

Bomin Seo·2022년 7월 22일
0

SQL

  • IBM연구소에서 1974년 System R이라는 관계 DBMS 시제품을 연구할 때 관계 대수와 관계 해석을 기반으로, 집단함수/그룹화/갱신 연산 등을 추가하여 개발된 언어
  • 1986년에 ANSI(미국 표준 기구)에서 SQL 표준을 채택함으로써 상용화되었다.
  • 동일한 투플을 허용한다.
  • 비절차적 언어(선언적 언어)이므로 사용자는 자신이 원하는(What)만 명시하며, 처리하는 방법(How)는 명시할 수 없다.
  • SQL은 자연어에 가까운 구문을 사용하여 질의를 표현할 수 있으며 관계 DBMS는 사용자가 입력한 SQL문을 번역하여 요구한 데이터를 찾는데 필요한 모든 과정을 담당한다.

2가지 인터페이스

  1. 대화식 SQL(Interactive SQL) : Console창을 이용하여 사용자가 직접 SQL문 작성
  2. 내포된 SQL(Embedded SQL) : 호스트 언어에 내포된 SQL을 이용하여 작성

Oracle SQL의 구성 요소

데이터 검색

  • SELECT문을 통하여 데이터 검색

데이터 조작어

  • 삽입(INSERT), 삭제(DELETE), 수정(UPDATE)에 사용

데이터 정의어 (DDL)

데이터 베이스 객체(테이블, 도메인, 스키마, 인덱스. 뷰)를 생성/삭제/변경

변경은 INSTANCE의 변경이 아닌 스키마의 변경을 의미한다.

  • 스키마의 생성과 제거
  • 스키마 제거에서의 2가지 옵션
    • RESTRICT : 스키마 안에 데이터베이스의 객체들이 비었을 때만 삭제
    • CASCADE : 스키마와 함께 객체와 연관된 데이터를 같이 삭제
  • 릴레이션 정의 (CREATE TABLE + 릴레이션 이름)
    • 괄호 안에 Attribute 이름과 제약 조건(선택 사항) 나열

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

  • 고정 길이를 사용하는 이유 : 데이터가 수정되더라도 투플을 이동하지 않고 수정할 수 있다.
  • 고정 길이 사용 예시 : 데이터 변화가 적은 경우, 기본키를 설정하는 경우
  • 가변 길이 사용 예시 : 데이터의 길이 편차가 큰 경우
  • varchar는 empty string을 null로 간주하기 때문에 표준과 상이하며 varchar2는 표준에 따르기 때문에 varchar2를 사용하는 것이 바람직하다.

릴레이션 제거

DROP TABLE 릴레이션 이름;

TABLE 수정

ALTER TABLE 릴레이션 이름 ADD Attribute 이름 데이터타입(n);

인덱스 생성

CREATE INDEX 투플_IDX ON 릴레이션이름(애트리뷰트 이름);

제약조건

  • NULL 값 허용 여부 제약
EMPNO NUMBER NOT NULL
- NOT NULL을 지정하지 않으면 기본적으로 NULL을 허용한다.
  • UNIQUE 제약 조건
EMPNAME CHAR(10) UNIQUE
  • DEFAULT값 설정
TITLE CHAR(10) DEFAULT '사원'
  • CHECK 구문을 통한 데이터 확인
CHECK (MANAGER_SALARY > SALARY);
  • 참조 무결성 제약조건 유지 구문
    • ON DELETE [NO ACTION | CASCADE | SET NULL | SET DEFAULT]
    • ON UPDATE NO ACTION
  • 무결성 제약 조건의 추가 및 삭제
ALTER TABLE STUDENT ADD CONSTRAINT STUDENT_PK PRIMARY KEY (STNO) ;
ALTER TABLE STUDENT DROP CONSTRAINT STUDENT_PK
  • 제약 조건에 이름을 명시하지 않으면 UNNAMED CONSTRAINT가 생성되며 수정 및 삭제를 위해 카탈로그를 직접 수정해야하는 위험이 생긴다
FOREIGN KEY(DNO) REFERENCES DEPARTMENT(DEPTNO) ON DELETE CACADE;
profile
KHU, SWCON

0개의 댓글