1. SQL의 데이터 정의 기능
SQL의 데이터 정의 기능은
테이블 생성 CREATE TABLE
테이블 변경 ALTER TABLE
테이블 삭제 DROP TABLE
2. 테이블의 생성
새로운 테이블을 생성하려면 먼제 테이블의 이름과 테이블을 구성하는 속성의 이름을 의미있게 정해야 한다
그런 다음 각 속성의 특성에 맞게 데이터 다입을 결정한다
테이블을 생성하는 SQL명령어는 CREATE TABLE임
생성할 테이블을 구성하는 속성들의 이름과 데이터 타입 및 제약 사항에 대한 정의, 기본키-대체키-외래키의 정의, 데이터 무결성을 위한 제약조건의 정의 등을 포함한다
CREATE TABLE 테이블 이름(
1 속성 이름 데이터 타입 [not null] [기본값]
2 [primary key (속성 리스트)]
3 [unique (속성 리스트)]
4 [foreign key (속성 리스트) peferences 테이블 이름(속성 리스트)]
[on delete 옵션] [on update 옵션]
5 [constraint 이름] [check (조건)]
);
1. 테이블을 구성하는 각 속성의 이름과 데이터 타입, 기본 제약 사항을 정의한다
2. 기본키 정의
3. 대체키, 테이블에 여러개 존재 가능하다
4. 외래키, 테이블에 여러개 존재 가능하다
5. 데이터 무결성을 위한 제약조건, 테이블에 여러개 존재 가능하다
[]표시 부분은 선택 사항이다 = 생략이 가능하다
모든 SQL문은 세이콜론;으로 문장 끝을 표시한다
SQL문에 사용되는 키워드는 대소문자를 구분하지 않는다
실제로 데이터베이스를 구축할 때는 모든 이름을 영어로 작성한다
속성의 정의
| CHAR(n) | 고정 길이 문자 데이터 |
| VARCHAR(n) | 가변 길이 문자 데이터 |
| CLOB | 대용량 문자 데이터(Character Large Object) |
| BLOB | 대용량 이진 데이터(Binary Large Object) |
| BOOLEAN | 참/거짓 값 |
| SMALLINT | 작은 범위 정수 |
| INTEGER | 일반 범위 정수 |
| BIGINT | 큰 범위 정수 |
| DECIMAL(p, s) | 고정 소수점 수(정밀도 p, 소수점 이하 s) |
| NUMERIC(p, s) | DECIMAL과 동일, 표준 정밀도 보장 |
| FLOAT(p) | 부동 소수점 수(정밀도 p) |
| REAL | 단정도 부동 소수점 수 |
| DOUBLE PRECISION | 배정도 부동 소수점 수 |
| DATE | 연-월-일 형식 날짜 |
| TIME | 시-분-초 형식 시간 |
| TIME WITH TIME ZONE | 시간 + 시간대 |
| TIMESTAMP | 날짜와 시간 |
| TIMESTAMP WITH TIME ZONE | 날짜와 시간 + 시간대 |
| INTERVAL | 시간 간격 |
테이블을 구성하는 각 속성의 데이터타입을 선택한 이후는 널값 허용, 기본값 필요 여부등을 결정해야 한다
고객 아이디와 같이 필수 입력인 경우 not null을 해야 한다
ex - 아이디 varchar(20) not null
속성에 기본 값을 지정해두지 않으면 사용자가 속성에 값을 입력하지 않았을 때 해당 속성에 널 값이 기본으로 저장된다
이때 default 키워드를 사용해 지정이 가능하다
ex - 값 int default 0
default 키워드로 기본 값을 지정할 때 숫자 데이터는 그대로 표현하고, 문자열이나 날짜 데이터는 작은따옴표로 묶어주어야 한다
작은 다옴표로 묶은 문자열은 대소문자를 구분한다
ex - 사람 varchar(10) default '기본 이름'
키의 정의
create table 문으로 테이블을 정의할 때는 기본키, 대체키, 외래키를 지정할 수 있다
기본키는 primary key 키워드를 사용해 지정한다
기본키가 없어도 테이블을 정의할 수 있지만 각 투플을 식별할 수 있는 기본키는 가능한 한 선택하는 것이 좋다
모든 테이블에서 기본키는 반드시 하나만 지정할 수 있고, 여러 개의 속성으로 구성할 수도 있다
ex - primary key(아이디)
ex - primary key(아이디, 비번)
대체키는 unique 키워드를 사용해 지정한다
대체키는 기본키와 같이 각 투플을 유일하게 식별하는 특성이 있다
대체키로 지정된 속성의 값은 테이블에서 중복되면 안 되고 유일성을 가져야 한다
기본키와 다르게 널값을 가질 수 있다
대체키는 한 테이블에서 여거 개를 지정할 수 있다
ex - unique(이름)
외래키는 foreign key 키워드를 사용해 지정한다
외래키를 지정할 때는 출처를 분명히 밝혀야 한다
외래키가 어떤 테이블을 무슨 속성을 참조하는지 references키워드 다음에 명학히 제시해야 한다. 이는 참조 무결성 제약조건을 유지하기 위함이다
이렇게 처리할시 참조되는 테이블에서 투플을 함부로 삭제하거나 변경하지 못한다
또한 참조되는 테이블에서 투플을 삭제하거나 변경할 때 처리하는 방법을 다양하게 선택할 수 있다
ex
on delete no action = 투플을 삭제하지 못하게 한다
on delete cascade = 관련 투플을 함께 삭제한다
on delete set null = 관련 투플의 외래키 값을 null로 변경한다
on delete set default = 관련 투플의 외래키 값을 미리 지정한 기본 값으로 변경한다
참조되는 테이블의 투플이 변경될 때도 다음 네 가지 중 한가지 방법으로 처리하도록 선택할 수 있다
지정하지 않으면 on update no action이 기본으로 선택된다
ex
on update no action = 투플을 변경하지 못하도록 한다
on update cascade = 관련 투플에서 외래키 값을 함께 변경한다
on update set null = 관련 투플의 외래키 값을 null로 변경한다
on update set default = 관련 투플의 외래키 값을 미리 지정한 기본 값으로 변경한다
데이터 무결성 제약조건의 정의
create table 문으로 테이블을 정의할 때 check 키워드를 사용해 특정 속성에 대한 제약조건을 지정할 수 있다. 그러면 테이블에는 check 키워드로 지정한 제약조건을 만족하는 투플만 존재하게 된다
테이블에 새로운 투플을 삽입하거나 기존 투플을 수정할 때도 이 제약 조건을 반드시 지켜야 한다. 이는 데이터 무결성을 위한 제약조건을 표현하는 방법이다
check 키워드를 사용해 지정한 제약조건에 constraint 키워드와 함꼐 고유의 이름을 부여할 수도 있다
제약조건을 여러 개 지정할 때 고유의 이름을 부여하면 테이블이 생성된 잉후에 제약조건을 수정하거나 제거할 때 식별하기 쉽다
check(조건);
constraint 속성 check(확인)
테이블 생성의 예
create table 테이블 이름(
속성1 자료형 not null, <- 이건 선택(널 체크)
속성2 자료형,
속성3 자료형,
... 이하 반복
primary key(원하는 속성)
);
3. 테이블의 변경
테이블 변경은
alter table 테이블 이름
으로 변경이 가능하다
새로운 속성 추가
alter table tableName
add 속성 데이터 타입 not null default;
기존 속성 삭제
drop를 사용하여 기존의 속성을 삭제할 수 있다
alter table tableName
drop column 속성 이름;
새로운 제약조건의 추가
테이블에 새로운 제약조건을 추가하는 것도 가능하다
alter table tableName
add constraint 제약조건 이름 제약조건 내용;
기존 제약조건의 삭제
alter table tableName
drop constraint 제약조건 이름;
4. 테이블의 삭제
create table로 생성한 테이블은 drop table로 삭제가 가능하다
drop table tableName;'공부 > 데이터베이스' 카테고리의 다른 글
| 7. 데이터베이스 언어 SQL / 04 뷰 (0) | 2025.09.13 |
|---|---|
| 7. 데이터베이스 언어 SQL / 03 SQL을 이용한 데이터 조작 (0) | 2025.09.11 |
| 7. 데이터베이스 언어 SQL / 01 SQL의 소개 (0) | 2025.09.09 |
| 6. 관계 데이터 연산 / 총 정리 (0) | 2025.09.08 |
| 6. 관계 데이터 연산 / 02 관계 대수 (0) | 2025.09.08 |