1.  열 / 행

  • 열(column): 속성(attribute) 혹은 필드(field) 라고도 불림. 테이블의 세로 방향 데이터.
  • 행(row): 레코드(record) 또는 튜플(tuple)이라고도 불림. 테이블의 가로 방향 데이터.
  • 예를들어 html에서 테이블은 tr(table-row)의 리스트로 구성된다.
    테이블 헤더부분을 제외한 각 tr태그 안에는 td(table-data)태그들이 포함되어 있는 형태를 볼 수 있다.
    즉, 테이블은 여러 필드로 구성되고, 그 틀을 채우는 한줄한줄의 레코드는 속성마다의 데이터를 갖는 객체로 생각할 수 있다.

2. 데이터베이스 구조

  • 데이터베이스 > 스키마 > 테이블(=릴레이션=RDBS)
  • 데이터베이스는 여러 스키마로 구성됨.
  • 스키마는 테이블을 포함하며, 테이블은 데이터를 저장하는 구조화된 단위임.

3. 주요 테이블 용어

  • 도메인: 어떤 속성이 가질 수 있는 값의 범위.
    예) 속성 '나이'의 도메인이 0~150이라면, '나이'는 0에서 150 사이 값만 가질 수 있음.
  • 기수(cardinality): 행의 개수. => 비행기
    예) 학생 테이블에 10명의 학생 데이터가 있다면 기수는 10.
  • 차수(degree): 열의 개수. => 열차
    예) 학생 테이블에 '이름', '나이', '학번' 열이 있다면 차수는 3.
  • Primary Key (PK): 기본키. 각 행을 고유하게 식별하게 해줌. 즉, 정체성을 구분지어주는 중복되지 않는 속성(= unique, not null).
  • Foreign Key (FK): 외래키. 다른 테이블의 기본키를 참조하는 속성. 

 

SQL 언어 분류 (CDM)

1. DCL (Data Control Language) - 제어어

  • GRANT, REVOKE, ROLLBACK, COMMIT: 권한 관련, 쿼리 실행 결과 컨트롤 
    시스템관리자 계정으로 유저에게 DB에 특정 ROLL 부여. (ex) 특정 테이블에 대한 SELECT 권한만 부여하기) /
    실행한 쿼리 최종 적용 여부 결정.(auto commit시 쿼리 실행시 바로 결과를 db에 적용) /
    (정보처리산업기사 시험때도 요거 중요했었음.)

2. DDL (Data Definition Language) - 정의어

  • CREATE, DROP, ALTER: 테이블의 구조(틀) 관련된 명령어.

3. DML (Data Manipulation Language) - 조작어

  • SELECT, INSERT, UPDATE, DELETE: 데이터를 조회하거나 삽입, 수정, 삭제.
    가장 많이 사용하게 되는 명령어들(CRUD).
  • SELECT는 데이터를 조회만 하므로 COMMIT/ROLLBACK 대상이 아님.

 

데이터 형식(Data Types)

1. 정수형

  • TINYINT, SMALLINT, INT(INTEGER), BIGINT
    • Java와 대응: byte, short, int, long (1, 2, 4, 8바이트로 크기 동일)

2. 실수형

  • FLOAT, DOUBLE
    • Java와 동일. 부동소수점 숫자를 표현.

3. 문자형

  • CHAR(N), VARCHAR(N)
    • CHAR(N): 고정 길이 문자형. N글자 크기 고정.
    • VARCHAR(N): 가변 길이 문자형. 저장된 데이터의 실제 길이만큼 메모리를 사용(N 글자 이하).
    • 일반적으로 VARCHAR를 사용하는 것이 효율적임.
      예) CHAR(10)에 "abc" 저장 시, 10바이트를 모두 차지하지만 VARCHAR(10)은 3바이트만 사용. 숫자 범위도 더 큼.

4. 날짜형

  • DATE, TIME, DATETIME, TIMESTAMP
    • DATE: YYYY-MM-DD 형식.
    • TIME: HH:MM:SS 형식.
    • DATETIME: 이름처럼 DATE와 TIME의 결합(YYYY-MM-DD HH:MM:SS).
    • TIMESTAMP: 어딘지(time-zone)를 반영하여 시간 저장. 환경에 따라 출력 값이 달라질 수 있음.

(프로그래밍 언어랑 다르게 날짜형이 있는 것이 좀 특이한 점.)

 

  • 숫자 데이터 외에는 작은따옴표('') 사용. 날짜형은 숫자 데이터 아님.
  • 타 언어와의 연동시 데이터 타입 확인 잘 해서 정확히 매칭하기.

 

+ Recent posts