[Database] SQL 개요와 MySQL 테이블 생성, AUTO_INCREMENT(자동증가)


SQL 개요


SQL (Structured Query Language)

  • 데이터베이스에 데이터 삽입/삭제/수정/검색 방법

    • 관계 대수나 관계 해석을 사용 ==> 일반사용자가 사용하기 어렵다. · 대안 : SQL 사용
  • SQL

    • 관계 데이터베이스를 위한 표준 질의어
    • 사용자가 처리를 원하는 데이터가 무엇인지만 제시
    • 데이터를 얻는 방법에 대하여 언급하지 않음
      ==> 비절차적 데이터 언어의 특성

SQL의 역사

  • 1974년 SEQUEL (Structured English QUEry Language)에서 유래

    • IBM 연구소의 연구용 관계 데이터베이스 관리시스템 (System R)을 위한 언어
  • 이후 개발된 관계 데이터베이스 관리 시스템은 다른 질의어를 사용

  • 1986년 미국 표준 연구소인 ANSI와 국제 표준화 기구인 ISO에서 SQL을 관계 데이터베이스의 표준 질의어로 채택하고 표준화 작업 진행

  • 1986년 표준 SQL : SQL-86 또는 SQL1

  • 1992년 표준 SQL : SQL-92 또는 SQL2

  • 1999년 표준 SQL : SQL-99 또는 SQL3

SQL 사용 방법

  • DBMS 내에서 대화식으로 질의
  • C, C++, Java와 같은 언어로 작성한 프로그램에 삽입하여 사용

SQL의 분류

  • 데이터정의어 (DDL, Data Definition Language)

    • 테이블을 생성, 변경, 삭제하는 기능
  • 데이터조작어 (DML, Data Manipulation Language)

    • 테이블에 데이터를 삽입, 수정, 삭제, 검색하는 기능
  • 데이터제어어 (DCL, Data Control Language)

    • 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여, 취소하는 기능

    • 데이터베이스 관리자가 주로 사용

SQL의 기능

  • 주기능 : 검색을 위한 질의 작성용 비절차적 데이터 조작어

  • 보조기능 : 데이터 정의 및 제어

MySQL 테이블 생성, AUTO_INCREMENT(자동증가)


실습용 데이터베이스

  • A. Customer 테이블

  • B. Items 테이블

  • C. Orders 테이블

테이블 생성 – 속성 정의


  • A. 테이블 생성시 정의할 사항

    • ① 테이블 이름
    • ② 속성 이름 및 데이터 타입, 제약 사항
    • ③ 기본키, 대체키, 외래키의 정의
    • ④ 데이터 무결성을 위한 제약조건 정의


  • SQL 질의문

    • 세미콜론( ; )으로 문장의 끝을 표시
    • 대소문자 구분하지 않음


  • B. 속성 정의

    • 테이블을 구성하는 속성 정의

      • 데이터 타입 정의
      • NULL 값 허용 여부 정의
      • 기본 값 필요 여부


  • C. 속성의 데이터 타입

  • D. NOT NULL

    • 속성의 NULL 값을 허용하지 않음을 의미
    • 반드시 값이 입력되어야 하는 속성에 사용
    • 인터넷 상의 회원가입시 필수항목
    • 예 : account VARCHAR(20) NOT NULL


  • E. DEFAULT

    • 속성의 기본 값을 지정
    • DEFAULT를 지정하지 않고, 값이 입력되지 않은 경우 NULL값으로 자동 저장
    • 예 : credit INT DEFAULT 0
    • 예 : grade VARCHAR(10) DEFAULT ‘NEW’

    [TIP]

    • 문자열, 날짜 데이터 : 작은 따옴표로 묶어야 함
    • 작은 따옴표 내의 문자열 : 대소문자 구분됨
      • 예 :

        • grade VARCHAR(10) DEFAULT ‘NEW’
        • grade VARCHAR(10) DEFAULT ‘New’


  • F. AUTO_INCREMENT

    • 테이블에 새로운 투플이 삽입될 때, 자동으로 DBMS에서 유일한 번호를 생성
    • AUTO_INCREMENT인 속성은 기본키로 지정되어야 함.
    • 1부터 시작하며, 새로운 투플(레코드) 추가시 1씩 증가
    • 형식 : 속성이름 INT NOT NULL AUTO_INCREMENT
    • 다른 값부터 시작하도록 설정할 수 있다.

      • 형식 : ALTER TABLE 테이블명 AUTO_INCREMENT=초기값
    • 새로운 레코드를 삽입할 때, AUTO_INCREMENT로 지정된 속성값은 입력하지 않아도 됨
    • AUTO_INCREMENT로 지정된 속성의 현재 값은 변경할 수 없음
    • 레코드 삽입시 SQL 구조

      • INSERT INTO 테이블명 ( 속성1, … 속성N ) values ( 속성값1, … 속성값N )
      • AUTO_INCREMENT로 지정된 속성은 제외할 수 있음
  • G. 실습용 데이터베이스 데이터 정의

    • Customer 테이블

실습용 데이터베이스 데이터 정의 (Customer 테이블)

  • 기본 테이블 생성

  • 데이터 입력

  • 데이터입력 : NOT NULL 속성 데이터만 입력시

  • AUTO_INCREMENT 적용시

  • AUTO_INCREMENT 의 초기값을 100으로 설정하기

    • 테이블 생성 직후에 설정
  • AUTO_INCREMENT 적용시 INSERT 오류

  • AUTO_INCREMENT : 속성이름 리스트를 사용하지 않고 입력하기

    • AUTO_INCREMENT 속성 값 = 숫자 이외의 모든 문자열이나 NULL을 속성 값으로 입력하면 DBMS는 자동으로 다음 숫자를 사용하여 투플을 삽입함

    • AUTO_INCREMENT 속성 값 = 숫자를 사용하면, 입력한 숫자로 값이 지정됨


실습용 데이터베이스 데이터 정의 (Items 테이블)



  • Orders 테이블