relation(table)의 모임으로 데이터를 저장하는 시스템
- relation : 2차원 테이블
- tuple : 테이블의 행. record라고도 부름
- attribute : 테이블의 칼럼
- degree : attribute의 수
- cardinality : tuple의 수
- NULL은 0도 아니고 Empty space도 아니다. NULL 그 자체.
- relation 이름은 고유해야 한다.
- tuple의 순서는 중요하지 않다.
- 한 테이블에 같은 attribute 있으면 안되며, attribute의 순서는 중요하지 않다.
- super key : tuple을 유일하게 식별할 수 있는 attribute나 attribute의 집합.
- candidate key : tuple을 유일하게 식별할 수 있는 attribute. 즉, primary key가 될 수 있는 attribute
- primary key : candidate key들 중 하나. 밑줄로 표시한다.
- partial key : Weak Entity의 tuple을 유일하게 식별할 수 있는 key로, Regular Entity의 PK와 결합되어 복합 키(compound key)가 된다.
- alterate key : primary key를 제외한 나머지 candidate key
- foreign key : 두 relation 사이 관계를 만들기 위한 key
++ 1. 다른 테이블 attribute 참조
++ 2. 나의 테이블 다른 attribute 참조
++ 3. primary key들의 복합키
데이터베이스의 정확성, 일관성을 보장하기 위해 저장, 삭제, 수정 등을 제약하기 위한 조건
- Entity integrity constraint : primary key에 관련된 제약조건
=> 모든 relation은 꼭 PK가 있어야 한다.
=> PK는 value가 unique한 attribute여야 한다.
=> PK의 value는 NULL이 아니어야 한다.- Domain integrity constraint : attribute의 value에 관련된 제약조건
=> attribute의 Domain(Data type)은 꼭 선언되어야 한다.
=> 각 tuple에 한 attribute에는 하나의 값만 들어가야 한다.- Referential integrity constraint : foreign key에 관련된 제약조건
=> relation A가 B를 참조한다면, A에서 B의 모든 데이터를 접근할 수 있어야 한다.
데이터베이스에 접근하고 관리하는 언어.
- DDL (Data Definition Language) : 데이터베이스를 정의하는 언어.
=> CREATE / ALTER / DROP / TRUNCATE- DML (Data Manipulation Language) : 데이터를 조작하는 언어.
=> SELECT / INSERT / UPDATE / DELETE
++DELETE는 원하는 데이터만 삭제할 수 있고, 삭제 후 되돌릴 수 있다. 또한, 데이터는 지워지지만 테이블 용량은 줄어들지 않는다. (디스크 상의 할당 공간을 유지)
++truncate는 모든 데이터를 삭제해 테이블 생성 초기로 돌아가고, 삭제 후 되돌릴 수 없다.
- 데이터베이스 생성
CREATE DATABASE 데이터베이스 이름;
ex) create database testDB;- 데이터베이스 삭제
DROP DATABASE 데이터베이스 이름;
ex) drop database testDB;- 디폴트 스키마 설정
USE 데이터베이스 이름;
ex) use testDB;- 테이블 생성
- 테이블 삭제
DROP TABLE 테이블이름;
ex) drop table testDB;- 테이블 데이터만 삭제
TRUNCATE TABLE 테이블이름;
truncate table testDB;- 테이블 열 추가
ALTER TABLE 테이블이름 ADD 열 이름 데이터타입;
ex) alter table testDB add name varchar(45);- 테이블 열 삭제
ALTER TABLE 테이블이름 DROP COLUMN 열 이름;
ex) alter table testDB drop column name;- 테이블 열 이름 변경
ALTER TABLE 테이블이름 CHANGE 이전이름 새이름 데이터타입;
ex) alter table testDB change name studentname varchar(45);- 테이블 열 정보 수정
ALTER TABLE 테이블이름 MODIFY COLUMN 열 이름 데이터타입;
alter table testDB modify column name varchar(45);
constraint는 테이블의 데이터를 특정하는 것
- NOT NULL : 해당 attribute에 NULL value가 들어가는 것을 허용하지 않는다
- PRIMARY KEY(PK) : 각 tuple을 유일하게 구분할 수 있는 attribute에 지정한다.
- UNIQUE : 중복되면 안되는 데이터에(주민등록번호, 군번...) 부여한다. PK와 차이점은 PK는 테이블에서 유일한 attribute여야 하고, NULL이 허용되지 않지만, UNIQUE는 테이블에 여러 attribute에 부여해도 되고 NULL이 허용된다.
- FOREIGN KEY(FK) : 두 개의 relation 사이의 관계를 만들어준다. 참조하는 relation을 child relation이라 하고 참조되는 relation을 parent relation이라 한다.
++FK의 유형
1) FK가 다른 relation의 PK를 참조한다.
2) FK가 자신 relation의 PK를 참조한다.
3) FK가 복합 키(PK처럼 사용됨)를 참조한다.
- DEFAULT : attribute에 디폴트 value를 지정하기 위해 사용된다. tuple이 삽입될 때, 어떤 value가 없으면 default value가 삽입된다.
- CHECK : 해당 attribute에 삽입되는 value의 범위를 지정한다. 입력되는 값이 CHECK의 조건과 맞지 않으면 에러가 발생한다.
++ CONSTRAINT 제약조건 이름 ==> 이 부분은 해당 제약조건의 이름을 지정하는 것으로, 오류가 났을 때, 제약조건 이름이 출력될 때, 제약조건을 구분하기 편하기 위해 하는 것인데, 필수로 작성할 사항은 아니다.