코딩두의 포트폴리오

Database - # 07_01 본문

Database

Database - # 07_01

코딩두 2024. 4. 11. 20:43

 

7.1 SQL의 소개

SQL (Structured Query Language)

비절차적 데이터 언어의 특징

사용 방식

  • 대화식 SQL: 데이터베이스 관리 시스템에 직접 접근해 질의를 작성하여 실행
  • 삽입 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 >

외래키를 통해 관계를 맺고 있는 2개의 테이블

 

< 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 문 작성

'Database' 카테고리의 다른 글

Database - # 07_03  (1) 2024.05.28
Database - # 07_02  (0) 2024.05.27
Database - # 06  (0) 2024.04.05
Database - # 05  (0) 2024.04.01
Database - # 04  (1) 2024.03.31