Study/데이터베이스

8장 - 데이터베이스 언어 SQL (1)

석사한 화이트핸드 2024. 11. 23. 04:16
728x90
반응형

출처 : http://www.kocw.net/home/cview.do?lid=7edce2c5f1145aaf

 

데이터베이스의 원리와 응용

본 강의에서는 데이터베이스 입문자들에게 꼭 필요한 데이터베이스 기초 이론, 데이터 모델과 연산, SQL, 데이터베이스 설계에 대해 공부하고자 한다.

www.kocw.net

 

 

이번 시간에는 데이터베이스의 언어인 SQL을 학습한다.

  • SQL의 소개
  • SQL을 이용한 데이터 정의
  • SQL을 이용한 데이터 조작

 

 

학습목표

  • SQL의 역할을 이해하고, 이를 기능별로 분류해본다.
  • SQL의 데이터 정의 기능을 예제를 통해 익힌다.
  • SQL의 데이터 조작 기능을 예제를 통해 익힌다.

 

 

SQL의 소개

 

SQL(Structured Query Language)

  • 관계 데이터베이스를 위한 표준 질의어
  • 1974년에 IBM 연구소에서 데이터베이스 시스템, "시스템 R"을 질의하기 위해서 만들어진 구조화된 언어
  • 미국 표준 연수오니 ANSI와 국제 표준화 기구인 ISO에서 표준화 작업을 진행

 

 

  • SQL은 3가지 역할로 분류된다.
    • 데이터 정의어 : 테이블을 생성하고 변경, 제거하는 기능을 제공
    • 데이터 조작어 : 테이블에 새 데이터를 삽입하거나, 테이블에 저장된 데이터를 수정, 삭제, 검색하는 기능을 제공
    • 데이터 제어어 : 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능을 제공

 

 

  • 데이터 정의어는 객체 생성 및 변경 시 사용한다. 즉, 테이블 단위로 조작을 할 때 사용한다.
    • 명령문 : CREATE(테이블 생성), ALTER(테이블 변경), DROP(테이블 삭제)
  • 데이터 조작어는 데이터를 변경 시 사용한다.
    • 명령문 : SELECT(데이터 검색), INSERT(데이터 입력), UPDATE(데이터 수정), DELETE(데이터 삭제)

 

 

SQL를 이용한 데이터 정의

  • 테이블 생성 : CREATE TABLE 문을 사용
  • [ ]의 내용은 생략이 가능. 즉, 다른 값은 다 생략할 수 있지만 속성 이름과 데이터 타입은 반드시 정해줘야 한다.
  • SQL 질의문은 세미콜론; 으로 문장의 끝을 표시
  • SQL 질의문은 대소문자를 구분하지 않음

 

CREATE TABLE 문의 속성의 정의

  • 테이블을 구성하는 각 속성의 데이터 타입을 선택한 다음 NULL 값 허용 여부와 기본 값 필요 여부를 결정
  • NOT NULL
    • 속성이 NULL 값을 허용하지 않음을 의미하는 키워드
    • ex) 고객 아이디 VARCHAR(20) NOT NULL
  • DEFAULT
    • 속성의 기본 값을 지정하는 키워드
    • ex) 적립금 INT DEFAULT 0, 담당자 VARCHAR(10) DEFAULT '방경아'

 

키의 정의

  • PRIMARY KEY
    • 기본키를 지정하는 키워드
    • ex) PRIMARY KEY(고객아이디)
    • ex) PRIMARY KEY(주문 고객, 주문제품)
  • UNIQUE
    • 대체키를 지정하는 키워드
    • 대체키로 지정되는 속성의 값은 유일성을 가지며 기본키와 달리 NULL 값이 허용된다.
    • ex) UNIQUE(고객이름)
  • FOREIGN KEY
    • 외래키를 지정하는 키워드
    • 외래키가 어떤 테이블의 무슨 속성을 참조하는지 REFERENCES 키워드 다음에 제시
    • ex) FOREIGN KEY(소속부서) REFERENCES 부서(부서번호) : 소속부서라는 속성을 외래키로 사용을 하는데, 부서라는 릴레이션의 부서번호와 연결이 된다.

 

데이터 무결성 제약조건의 정의

  • CHECK
    • 테이블에 정확하고 유효한 데이터를 유지하기 위해 특정 속성에 대한 제약조건을 지정
    • CONSTRAINT 키워드와 함께 고유의 이름을 부여할 수 있음
    • ex) CHECK(재고량 >= 0 AND 재고량 <= 10000) : 재고량은 0 이상 10000 이하여야 한다.
    • ex) CONSTRAINT CHK_CPY CHECK(제조업체='한빛제과') : 제조업체 칼럼에 들어갈 수 있는 값은 한빛제과여야 한다.

 

 

위와 같은 예제가 있다고 해보자. 어떻게 SQL 문을 작성해야 할까?

CREATE TABLE 고객(
    고객아이디 VARCHAR(20) NOT NULL,
    고객이름 VARCHAR(10) NOT NULL,
    나이 INT,
    등급 VARCHAR(10) NOT NULL,
    직업 VARCHAR(10),
    적립금 INT DEFAULT 0,
    PRIMARY KEY(고객아이디)
);

 

 

CREATE TABLE 제품(
    제품번호 CHAR(3) NOT NULL,
    제품명 VARCHAR(20),
    재고량 INT,
    단가 INT,
    제조업체 VARCHAR(20),
    PRIMARY KEY(제품번호),
    CHECK(재고량 >= 0 AND 재고량 <= 10000)
);

 

 

CREATE TABLE 주문 (
    주문번호 CHAR(3) NOT NULL,
    주문고객 VARCHAR(20),
    주문제품 CHAR(3),
    수량 INT,
    배송지 VARCHAR(20),
    주문일자 DATETIME,
	PRIMARY KEY(주문번호),
    FOREIGN KEY(주문고객) REFERENCES 고객(고객아이디),
    FOREIGN KEY(주문제품) REFERENCES 제품(제품번호)
);

 

FOREIGN KEY의 경우 이름은 달라도 되지만 도메인 타입은 같아야 한다.

 

 

테이블 변경 : ALTER TABLE 문

테이블 변경의 경우 ALTER TABLE 문을 사용한다.

 

위 그림의 예시는 내가 기존의 테이블에 새로운 속성을 추가하는 것이다.

 

예제 7-4 SQL

ALTER TABLE 고객 ADD 가입날짜 DATETIME;

 

 

테이블을 변경할 때에는 ALTER 문을 사용하고, 여기에 기존 속성을 삭제할 때에 DROP을 사용한다. 이때, CASCADE, RESTRICT는 주로 외래 키 제약조건과 함께 사용되어, 부모 테이블의 변경이 자식 테이블에 미치는 영향을 결정하는 옵션이다.

  • CASECADE
    • 삭제할 속성과 관련된 제약조건이나 참조하는 다른 속성을 함께 삭제
    • 폭포처럼 연쇄적으로 영향을 미친다라는 의미
  • RESTRICT
    • 삭제할 속성과 관련된 제약조건이나 참조하는 다른 속성이 존재하면 삭제 거부
    • 제한한다는 의미

 

예제 7-5 SQL

ALTER TABLE 고객 DROP 등급 CASCADE;

 

 

테이블 제거 : DROP TABLE 문

테이블을 제거할 때에는 DROP TABLE 문을 사용한다.

 

예제 7-8 SQL

DROP TABLE 고객 RESTRICT;

 

728x90
반응형