Database - # 07_01

7.1 SQL의 소개
SQL (Structured Query Language)
비절차적 데이터 언어의 특징
사용 방식
- 대화식 SQL: 데이터베이스 관리 시스템에 직접 접근해 질의를 작성하여 실행
- 삽입 SQL: 프로그래밍 언어로 작성된 응용 프로그램에 삽입
SQL의 분류

- 데이터 정의어(DDL): 테이블을 생성하고 변경,제거하는 기능을 제공
- 데이터 조작어(DML): 테이블에 새 데이터를 삽입하거나, 테이블에 저장된 데이터를 수정,삭제,검색하는 기능을 제공
- 데이터 제어어(DCL): 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능을 제공
질의에 사용할 판매 데이터베이스: 고객 테이블

질의에 사용할 판매 데이터베이스: 제품 테이블

질의에 사용할 판매 데이터베이스: 주문 테이블

7.2 SQL을 이용한 데이터 정의
SQL 데이터 정의 기능
테이블 생성 - CREATE TABLE
테이블 변경 - ALTER TABLE
테이블 삭제 - DROP TABLE
테이블 생성 : CREATE TABLE 문
생성할 테이블을 구성하는 아래의 항목을 포함
- 속성들의 이름
- 데이터 타입 및 제약 사항에 대한 정의
- 기본키, 대체키, 외래키의 정의
- 데이터 무결성을 위한 제약조건의 정의

속성의 정의
테이블을 구성하는 각 속성의 데이터 타입을 선택 -> NULL 값 허용 여부와 기본 값 필요 여부를 결정
CREATE TABLE문으로 생성된 테이블은 속성의 NULL 값 허용
NOT NULL: 속성이 널 값을 허용하지 않음을 의미하는 키워드
- 기본키를 구성하는 모든 속성은 NULL 값을 가질 수 없도록 반드시 NOT NULL 키워드를 표기 -> 개체 무결성 제약조건
- 기본키를 구성하는 속성이 아니더라도 값을 꼭 입력해야 한다면 NOT NULL 키워드를 표기
ex) 고객아이디(C_ID) VARCHAR(20) NOT NULL
-> 고객 테이블의 고객아이디 속성을 길이가 최대 20인 가변 길이의 문자열 데이터로 구성하고, NULL 값을 허용하지 않음
DEFAULT: 속성의 기본 값을 지정하는 키워드
- ex) 적립급(C_Reverse) INT DEFAULT 0
고객 테이블의 적립금 속성을 정수 데이터로 구성, 사용자가 적립금을 입력하지 않으면 0이 기본으로 저장되도록 함
- ex) 담당자 VARCHAR(10) DEFAULT '방경아'
고객 테이블의 담당자 속성은 길이가 최대 10인 가변 길이의 문자열 데이터로 구성, 담당자를 입력하지 않으면 방경아 가 기본값으로 지정
- ex) 학점 CHAR(2) DEFAULT 'a0' / CHAR(2) DEFAULT 'A0'
A0과 a0은 다른 값으로 취급됨 -> 도메인이 같은값이 아님, 대소문자 구분이 중요
키의 정의
PRIMARY KEY
- 기본키를 지정하는 키워드
- 모든 테이블에서 기본키는 반드시 하나만 지정할 수 있고, 여러 개의 속성으로 구성할 수 있음
ex) PRIMARY KEY(고객아이디) - 고객아이디 속성을 기본키로 지정
ex) PRIMARY KEY(주문고객, 주문제품) - 주문고객과 주문제품 속성으로 기본키를 지정
UNIQUE
- 대체키를 지정하는 키워드
- 대체키로 지정되는 속성의 값은 유일성을 가지며 기본키와 달리 널 값이 허용됨
- 대체키는 한 테이블에서 여러 개 지정할 수 있음
ex) UNIQUE(고객이름) - 고객이름 속성을 대체키로 지정
FOREIGN KEY
- 외래키를 지정하는 키워드
- 외래키가 어떤 테이블의 무슨 속성을 참조하는지 REFERENCES 키워드 다음에 제시 -> 참조 무결성 제약조건 유지
- 참조되는 테이블에서 튜플을 함부로 삭제하거나 변경하지 못함
참조 무결성 제약조건 유지를 위해 참조되는 테이블에서 튜플 삭제 시 처리방법을 지정하는 옵션
< DELETE >

< UPDATE >

데이터 무결성 제약조건의 정의
CHECK
- CHECK 키워드를 사용 -> 특정 속성에 대한 제약조건 지정
- 테이블에 정확하고 유효한 데이터를 유지하기 위해 특정 속성에 대한 제약조건 지정
- CONSTRAINT 키워드와 함께 고유의 이름을 부여할 수도 있음
ex) CHECK(재고량 >= 0 AND 재고량 <= 10000)
모든 제품의 재고량은 항상 0개 이상, 10,000개 이하로 유지되어야 한다는 데이터 무결성 제약조건
ex) CONSTRAINT CHK_CPY CHECK(제조업체 = '한빛제과')
모든 제품의 제조업체로 한빛제과만 허용한다는 데이터 무결성 제약조건에 CHK_CPY라는 고유의 이름을 부여
다른 테이블에는 CHK_CPY라는 이름으로 정의된 제약조건이 있으면 안 됨
테이블 생성: CREATE TABLE 문 작성




테이블 생성: CREATE TABLE 문 작성
새로운 속성 추가, 기존 속성 삭제, 새로운 제약조건 추가, 기존 제약조건 삭제




테이블 생성: DROP TABLE 문 작성
