2 minute read

SQL이란

  • SQL(Structed Query Langauge)
  • 관계 데이터베이스를 위한 표준 질의어
  • SQL의 분류
    • 데이터 정의어 (DDL- Data Definition Language)
      테이블을 생성하고 변경/제거하는 기능을 제공한다.
      객체 생성 및 변경 시 사용.
      CREATE(테이블 생성)
      ALTER(테이블 변경)
      DROP(테이블 삭제)
    • 데이터 조작어 (DML - Data Manipulation Language)
      테이블에 새 데이터를 삽입하거나, 테이블에 저장된 데이터를 수정/삭제/검색하는 기능을 제공한다.
      데이터 변경 시 사용.
      SELECT(데이터 검색 시 사용)
      INSERT(데이터 입력)
      UPDATE(데이터 수정)
      DELETE(데이터 삭제)
    • 데이터 제어어 (DCL - Data Control Language)
      보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능을 제공한다.

SQL을 이용한 데이터 정의

테이블 생성: CREATE TABLE문

SQL 질의문은 세미콜론으로 문장의 끝을 표시한다.
SQL 질의문은 대소문자를 구분하지 않는다.

  1. 테이블을 구성하는 각 속성의 이름, 데이터 타입, 기본 제약사항 정의
  2. 기본키 정의
  3. 대체키 정의
  4. 외래키 정의
  5. 데이터 무결성을 위한 제약조건 정의
  • 속성의 정의
    • 테이블을 구성하는 각 속성의 데이터 타입을 선택한 다음 널 값 허용 여부와 기본 값 필요 여부를 결정한다.
    • NOT NULL
      • 속성이 널 값을 허용하지 않음을 의미하는 키워드다.
      • 예) 고객아이디 VARCHAR(20) NOT NULL
    • DEFAULT
      • 속성의 기본 값을 지정하는 키워드다.
      • 예) 적립금 INT DEFAULT 0
        적립금에 값을 넣지 않으면 기본값인 0을 사용한다.
  • 키의 정의
    • PRIMARY KEY
      • 기본키를 지정하는 키워드다.
      • 예) PRIMARY KEY(고객아이디, 나이)
    • UNIQUE
      • 대체키를 지정하는 키워드다.
      • 대체키로 지정되는 속성의 값은 유일성을 가지며 기본키와 달리 널 값이 허용된다.
      • 예) UNIQUE(고객이름)
    • FOREIGN KEY
      • 외래키를 지정하는 키워드
      • 외래키가 어떤 테이블의 무슨 속성을 참조하는지 REFERENCES 키워드 다음에 제시한다.
      • 예) FOREIGN KEY(소속부서) REFERENCES 부서(부서번호)
  • 데이터 무결성 제약조건의 정의
    • CHECK
      • 테이블에 정확하고 유효한 데이터를 유지하기 위해 특정 속성에 대한 제약조건을 지정한다.
      • CONSTRAINT 키워드와 함께 고유의 이름을 부여할 수도 있다.
      • 예) CHECK(재고량 >= 0 AND 재고량 <= 10000)
      • 예) CONSTRAINT CHK_CPY CHECK(제조업체 = ‘한빛제과’)
  • 예시
    • 고객 테이블은 고객아이디, 고객이름, 나이, 등급, 직업, 적립금 속성으로 구성되고, 고객아이디 속성이 기본키다. 고객이름과 등급 속성은 값을 반드시 입력해야 하고, 적립금 속성은 값을 입력하지 않으면 0기 기본으로 입력되도록 고객 테이블을 생성하라.
      CREATE TABLE 고객(  
      고객아이디 CHAR(20) NOT NULL,
      고객이름 CHAR(10) NOT NULL,
      나이 INT,
      등급 CHAR(10) NOT NULL,
      직업 CHAR(10),
      적립금 INT DEFAULT 0,
      PRIMARY KEY(고객아이디)
      );  
      

      기본키로 지정한 속성은 자동으로 NOT NULL속성을 갖지만 제약조건을 더 명확히 표현하기 위해 NOT NULL을 표기한다.

    • 제품 테이블은 제품번호, 제품명, 재고량, 단가, 제조업체 속성으로 구성되고, 제품번호 속성이 기본키다. 재고량이 항상 0개 이상 10000개 이하를 유지 하도록 제품 테이블을 생성하라.
      CREATE TABLE 제품(
      제품번호 CHAR(10) NOT NULL,
      제품명 CHAR(20),
      재고량 INT,
      단가 INT,
      제조업체 CHAR(20),
      PRIMARY KEY(제품번호),
      CHECK(재고량 >= 0 AND 재고량 <= 10000)
      );
      
    • 주문 테이블은 주문번호, 주문고객, 주문제품, 수량, 배송지, 주문일자 속성으로 구성되고, 주문번호 속성이 기본키다. 주문고객 속성이 고객 테이블의 고객아이디 속성을 참조하는 외래키이고, 주문제품 속성이 제품 테이블의 제품번호 속성을 참조하는 외래키가 되도록 주문 테이블을 생성하라.
      CREATE TABLE 주문(
      주문번호 CHAR(10) NOT NULL,
      주문고객 CHAR(20),
      주문제품 CHAR(10),
      수량 INT,
      배송지 CHAR(20),
      주문일자 DATETIME,
      PRIMARY KEY(주문번호),
      FOREIGN KEY(주문고객) REFERENCES 고객(고객아이디),
      FOREIGN KEY(주문제품) REFERENCES 제품(제품번호)
      );
      

      외래키를 연결할 때 반드시 도메인이 동일해야 한다.

테이블 변경: ALTER TABLE문

  • 새로운 속성 추가
    ALTER TABLE 테이블이름
    ADD 속성이름 데이터타입 [NOT NULL] [DEFAULT];
    
    • 예시
      고객 테이블에 가입날짜 속성을 추가하라.
      ALTER TABLE 고객
      ADD 가입날짜 DATETIME;
      
  • 기존 속성 삭제
    ALTER TABLE 테이블이름 DROP 속성이름 CASCADE | RESTRICT;
    
    • CASCADE
      삭제할 속성과 관련된 제약조건이나 참조하는 다른 속성을 함께 삭제
    • RESTRICT
      삭제할 속성과 관련된 제약조건이나 참조하는 다른 속성이 존재하면 삭제 거부
    • 예시
      고객 테이블의 등급 속성을 삭제하면서 관련된 제약조건이나 등급 속성을 참조하는 다른 속성도 함께 삭제하라.
      ALTER TABLE 고객 DROP 등급 CASCADE;
      

테이블 제거: DROP TABLE문

  • 테이블 제거
    DROP TABLE 테이블이름 CASCADE | RESTRICT;
    
    • 예시
      고객 테이블을 삭제하되 고객 테이블을 참조하는 다른 테이블이 존재하면 삭제가 수행되지 않도록 하라.
      DROP TABLE 고객 RESTRICT;
      

Leave a comment