DB: 특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장해 놓은 것을 의미한다.
DBMS: 효율적인 데이터 관리 뿐만 아니라 예기치 못한 사건으로 인한 데이터의 손상을 피하고, 필요시 필요한 데이터를 복구하기 위한 강력한 기능의 소프트웨어
데이터를 저장하는 객체(Object)로서 관계형 데이터베이스의 기본 단위이다. 관계형 데이터베이스에서는 모든 데이터를 칼럼과 행의 2차원 구조로 나타낸다.
Column: 2차원 구조를 가진 테이블에서 세로 방향으로 이루어진 하나하나의 특정 속성 (더 이상 나눌 수 없는 특성)
Row: 2차원 구조를 가진 테이블에서 가로 방향으로 이루어진 연결된 데이터
Field: Column과 Row가 겹치는 하나의 공간
테이블을 분할하여 데이터의 불필요한 중복을 줄이는 것
기본 키 (Primary Key): 테이블에 존재하는 각 행을 한 가지 의미로 특정할 수 있는 한 개 이상의 칼럼
외부 키 (Foreign Key): 다른 테이블의 기본 키로 사용되고 있는 관계를 연결하는 칼럼
CHAR(s)
VARCHAR(s)
NUMERIC
DATETIME
테이블에 존재하는 모든 데이터를 고유하게 식별할 수 있으면서 반드시 값이 존재하는 단일 칼럼이나 칼럼의 조합들(후보키) 중에 하나를 선정하여 기본키 칼럼으로 지정한다.
기본 키는 단일 칼럼이 아닌 여러 개의 칼럼으로도 만들어질 수 있다.
테이블과 테이블 간에 정의된 관계는 기본키와 외부키를 활용해서 설정하도록 한다.
테이블명은 객체를 의미할 수 있는 적절한 이름을 사용한다. 가능한 단수형을 권고한다.
테이블 명은 다른 테이블의 이름과 중복되지 않아야 한다.
한 테이블 내에서는 칼럼명이 중복되게 지정될 수 없다.
테이블 이름을 지정하고 각 칼럼들을 괄효 "()"로 묶어 지정한다.
각 칼럼들은 콤마 ","로 구분되고, 테이블 생성문의 끝은 항상 세미콜론 ";"으로 끝난다;.
칼럼에 대해서는 다른 테이블까지 고려하여 데이터베이스 내에서는 일관성 있게 사용하는 것이 좋다.
칼럼 뒤에 데이터 유형은 꼭 지정되어야 한다.
테이블명과 칼럼명은 반드시 문자로 시작해야하고, 벤더별로 길이에 대한 한계가 있다.
벤더에서 사전에 정의한 예약어는 쓸 수 없다.
A-Z, a-z, 0-9, _, $, # 문자만 허용된다.
-> 주의할 것은 새롭게 추가된 칼럼은 테이블의 마지막 칼럼이 되며 칼럼의 위치를 지정할 수는 없다.
-> 해당 칼럼의 크기를 늘릴 수는 있지만 줄이지는 못한다. 이는 기존의 데이터가 훼손될 수 있기 때문이다
-> 해당 칼럼이 NULL 값만 가지고 있거나 테이블에 아무 행도 없으면 칼럼의 폭을 줄일 수 있다. 또한 해당 칼럼이 NULL 값만을 가지고 있으면 데이터 유형을 변경할 수 있다.
-> 해당 칼럼의 DEFAULT 값을 바꾸면 변경 작업 이후 발생하는 행 삽입에만 영향을 미치게 된다.
-> 해당 칼럼에 NULL 값이 없을 경우에만 NOT NULL 제약조건을 추가할 수 있다.
WHERE 절을 사용하지 않는다면 테이블의 전체 데이터가 삭제된다.
데이터베이스는 DDL 명령어와 DML 명령어를 처리하는 방식에 있어서 차이를 보인다.
-> DDL (CREATE, ALTER, RENAME, DROP): 직접 데이터베이스의 테이블에 영향을 미치기 때문에 DDL 명령어를 입력하는 순간 명령어에 해당하는 작업이 즉시 (AUTO COMMIT) 완료된다.
-> DML (INSERT, UPDATE, DELETE, SELECT): 조작하려는 테이블을 메모리 버퍼에 올려놓고 작업을 하기 때문에 실시간으로 테이블에 영향을 미치는 것이 아니다. 따라서 버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서는 COMMIT 명령어를 입력하여 TRANSACTION을 종료해야 한다.
테이블의 전체 데이터를 삭제하는 경우, 시스템 활용 측면에서는 삭제된 데이터를 로그로 저장하는 DELETE TABLE 보다는 시스템 부하가 적은 TRUNCATE TABLE을 권고한다. (단, TRUNCATE TABLE은 삭제된 데이터의 로그가 없으므려 ROLLBACK이 불가함)
입력한 자료나 수정한 자료에 대해서 또는 삭제한 자료에 대해서 전혀 문제가 없다고 판단되었을 경우 COMMIT 명령어를 통해서 트랜잭션을 완료할 수 있다.
COMMIT 명령어는 INSERT 문, UPDATE 문, DELETE 문을 사용한 후에 이런 변경 작업이 완료되었음을 데이터베이스에 알려 주기 위해 사용한다.
COMMIT이나 ROLLBACK 이전 상태
COMMIT 이후 상태
ROLLBACK 이후 상태
비교 연산자 (부정 비교 연산자 포함)
SQL 연산자 (부정 SQL 연산자 포함)
논리 연산자
연산자의 우선순위