본문 바로가기
컴퓨터과학[3-2]/D.B

데이터베이스 설계 및 구현 - [제6강] 데이터베이스의 정의 2

by boolean 2016. 7. 31.
728x90

데이터베이스 설계 및 구현 - [제6강] 데이터베이스의 정의 2

테이블 생성 및 관리 ․인덱스의 사용

데이터베이스 용어정리

  • 테이블
    사용자가 다루는 데이터의 접근 단위로 2차원 표의 구조로 실제 데이터가 구조화되어 저장되는 장소
  • 제약조건
    컬럼값을 제약조건에서 지정한 값으로만 한정하여 데이터의 오류가 발생하지 않도록 방지하기 위한 기능
  • 인덱스
    많은 양의 데이터에서 조건을 만족하는 데이터에 대한 검색의 속도를 향상시키기 위해 생성하는 자료 구조.
  • 요점정리

    1. 1. CREATE 문은 스키마, 테이블, 인덱스, 뷰 등의 개체를 생성하기 위한 SQL문이다. ALTER 문은 CREATE 문에 의해 생성된 개체를 수정하는 것으로 항목의 추가나 삭제 등 구조 변경의 경우에 사용되거나, 기존의 개체에 제약조건 추가 및 삭제하기 위해 사용된다. DROP 문은 개체를 제거하는 데에 이용된다.
    2. 2. 테이블 생성은 CREATE TABLE 문을 이용하며, 기존 테이블의 구조는 ALTER TABLE 문을 이용하여 언제든지 수정이 가능하다. 또한 테이블은 DROP TABLE 문으로 삭제할 수 있다.
    3. 3. 테이블 생성 및 수정시 컬럼에 7 가지의 제약조건을 정의할 수 있다. PRIMARY KEY는 기본키를 정의, NOT NULL은 컬럼값을 의무적으로 입력, UNIQUE는 동일한 컬럼값 존재할 수 없다는 제약, AUTO_INCREMENT는 자동 증가, DEFAULT는 기본값, FOREIGN KEY는 외래키, CHECK는 컬럼값을 한정하는 기능이 있다.
    4. 4. 인덱스는 DBMS에 의해 데이터 파일 내의 특정 레코드를 빠르게 찾을 수 있도록 하는 것으로 인덱스를 통하여 질의를 수행하면 응답시간이 향상된다.
    5. 5. MySQL Server에서 지원하는 인덱스는 주로 BTREE 계열의 인덱스이며, 제약조건에 의해 자동적으로 생성하는 방법이 있으며, 사용자에 의해 명시적으로 생성할 수도 있다. 생성된 인덱스는 SHOW INDEX 문을 이용하여 확인할 수 있다. 

    연습문제

    • 연습문제1

      CREATE TABLE 문에서 컬럼 정의 시 기술하는 항목이 아닌 것은?

      답을 체크하세요
      정답 :
      CREATE TABLE 문에서 각 컬럼 정의에는 컬럼 이름, 데이터 타입, 제약조건이 기술된다. 사용엔진 이름은 CREATE TABLE 문의 마지막에 적용되어 각각의 특징이 있는 엔진(기본값은 InnoDB) 중에서 사용되는 엔진을 선택할 수 있다.
    • 연습문제2

      학생 테이블에 데이터 타입은 CHAR(20), NULL 허용인 종교 컬럼을 추가하기 위해 다음 빈칸에 알맞은 말은 무엇인가?

      ALTER TABLE 학생
      종교 CHAR(20) NULL
      답을 체크하세요
      정답 :
      새로운 컬럼을 추가하는 것 또한 테이블을 수정하는 것이므로 ALTER TABLE 문이 사용된다. 새로운 컬럼 추가 시에는 ‘ADD COLUMN 컬럼명 데이터타입 제약조건’의 절이 ALTER TABLE문 뒤에 붙는다.
    • 연습문제3

      사용자가 직접 컬럼값을 입력하지 않고도 레코드가 추가될 때마다 서버에서 자동적으로 값을 계산하여 입력하기를 원할 때 사용하는 제약조건은 무엇인가?

      답을 체크하세요
      정답 :
      AUTO_INCREMENT는 특별한 의미가 없이 단순히 일련번호와 같은 역할을 의미하는 컬럼값이 사용되어 레코드 입력 시 마지막으로 입력되었던 값에 1을 증가시켜 자동으로 값을 입력한다. INT와 같이 숫자 데이터 타입에 적용이 가능하며, 사용자에 의해 임의의 값이 입력될 수도 있다.
    • 연습문제4

      CHECK 제약조건은 MySQL에서 아직 지원되지 않는다. CHECK 제약조건의 기능을 일부 대체할 수 있는 데이터 타입은 무엇인가?

      답을 체크하세요
      정답 :
      MySQL은 CHECK 절이 포함된 SQL문에 대해 파싱(parsing: SQL문을 문법적 단어마다 분류하여 인식하는 과정)시 오류로 판단하지 않지만 CHECK 절에 대한 기능을 지원하지 않아 실행되지 않는다. 따라서 컬럼값을 특정한 값으로만 한정하기 위해서 ENUM 데이터 타입이 사용된다.
    • 연습문제5

      KNOU 스키마에 포함된 학생 테이블의 인덱스 목록을 확인하기 위한 구문으로 올바른 것은?

      답을 체크하세요
      정답 :
      인덱스를 생성하기 전에 인덱스의 목록을 확인해야한다. 특정 테이블에 인덱스 목록을 출력하는 구분의 구문형식은 ‘SHOW INDEX FROM 테이블 이름 [FROM 스키마 이름]’이다. FROM 스키마 이름 절은 생략이 가능하며 현재 작업스키마가 아닌 다른 스키마에 존재하는 테이블의 인덱스 목록을 출력하고 싶을 때 사용한다.
    • 연습문제6

      다음 중 강의 테이블의 강의이름 컬럼에 정의된 idx_강의_1이라는 인덱스를 삭제하기 위한 구문으로 올바른 것은?

      답을 체크하세요
      정답 :
      인덱스를 삭제하는 SQL은 DROP INDEX문이고 DROP INDEX문에는 인덱스의 이름과 테이블이 포함되어 ‘DROP INDEX 인덱스이름 ON 테이블명’의 문법형식을 갖는다. 

    댓글