티스토리 뷰
테이블(Table)
- 데이터베이스의 기본적인 자료(데이터) 저장 단위이다.
- 테이블은 사용자가 접근 가능한 모든 데이터를 보유하며 열(Column)과 행(Row)으로 구성된다.
- 데이터 모델링 단계에서 생성된 엔티티들이 테이블로 생성된다.
- 테이블은 두 엔터티간의 관계를 지정할 수 있다.
- 테이블내에 있는 외래키(Foreign Key)는 두 엔티티 사이의 관계를 표현하는데 사용된다.
- 참고
- 테이블 생성시 칼럼을 정의할 때 선언한 데이터 유형은 그 칼럼이 받아들일 수 있는 자료의 유형을 규정한다. 따라서 선언한 유형이 아닌 다른 종류의 데이터가 들어오려고 하면 데이터베이스는 에러를 발생시킨다.
- 기본 데이터 타입의 종류는 크게 문자형 데이터, 숫자형 데이터, 날짜 데이터로 구분할 수 있다.
- 데이터 유형과 더불어 지정한 크기(SIZE)도 중요한 기능을 제공한다. 즉 선언 당시 지정한 데이터의 크기를 넘어선 자료가 입력되는 상황도 에러를 발생시킨다.
- 테이블 생성 구문
CREATE TABLE 테이블이름(
컬럼1 데이터타입 [DEFAULT 기본값] [제약조건],
컬럼2 데이터타입 [DEFAULT 기본값] [제약조건],
컬럼3 데이터타입 [DEFAULT 기본값] [제약조건],
:
);
CREATE TABLE 키워드 다음에 생성할 테이블 이름을 지정한다. 각 컬럼명을 지정한 다음 데이터 타입을 필수로 지정해야 하고 기본값이나 제약조건은 설정할 필요가 있는 컬럼에만 선택적으로 지정하면 된다.
1. 문자 데이터 타입
- 영문자, 한글 자료를 저장하기 위해 사용하는 자료형이다.
- 사용자가 입력한 글자만큼만 저장 공간을 할당하는 가변 문자형은 VARCHAR로 설정한다.
- 사용자 입력 글자가 아닌 설정한 크기만큼 저장 공간을 할당해서 저장하는 경우 CHAR로 설정한다.
-
데이터 유형 설명 길이 CHAR(size) 고정 길이의 문자데이터 최대크기는 2000바이트
size값 생략 시 기본값은 1VARCHAR(size) 가변 길이의 문자데이터 최대는 4000바이트, size값 생략 안됨 CLOB LONG 타입 확장된 형태
가변길이 문자데이터 저장최대 4GB LONG 가변 길이의 문자 데이터 최대 크기는 2GB - ABCDE란 문자열을 varchar(10)인 컬럼과 char(10)인 컬럼에 저장
- VARCHAR(10)
A B C D E - CHAR(10)
A B C D E 공백 공백 공백 공백 공백
- VARCHAR(10)
2. 숫자 / 날짜 데이터 타입
- 30, 2900 같은 숫자자료를 저장하기 위해서 사용하는 자료형이다.
- 정수를 저장하기 위해서는 INT형을 사용한다.
- 실수가 포함될 수도 있는 자료를 저장하기 위해서는 NUMBER형을 사용한다.
- 실수의 소수점 자리를 지정하려면 NUMBER(숫자, 소수점자리수) 형태로 지정하고, 정수만을 표현하려고 할 경우에는 NUMBER(자리수)만 지정하면 된다.
- NUMBER(4)인 경우 -9999부터 9999까지 입력할 수 있다.
- NUMBER(4,2)인 경우 -99.99부터 99.99까지 입력할 수 있다.
- 날짜 데이터를 저장하기 위해 DATE형을 사용한다.
3. 제약조건의 종류
- 제약조건이란 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 여러 가지 규칙을 적용하는 것을 말한다.
- 테이블에 행이 삽입, 갱신, 삭제될때마다 제약 조건을 만족하는지 확인 작업이 수행되고 제약조건을 만족하지 않는 자료는 입력/수정이 거부된다.
- 제약조건의 종류
-
제약 조건 종류 설명 NOT NULL 컬럼이 NULL값을 포함하지 못하도록 지정한다. UNIQUE 테이블의 모든 행에서 고유한 값을 갖는 컬럼 또는 컬럼 조합을 지정한다. PRIMARY KEY 테이블의 각 행을 고유하게 식별하도록 한다. FOREIGN KEY 다른 테이블 컬럼 값을 참조할 수 있도록 외래 키를 설정한다. CHECK 별도 조건을 이용해서 검사하도록 한다.
-
3-1. NOT NULL 제약조건
- 해당 컬럼에 NULL값을 허용하지 않도록 하는 설정이다. NULL이라는 것은 아무것도 입력되지 않는 것을 말하며, 문자열상의 공백을 뜻하는 것은 아니다.
- NULL값을 허용하지 않으려면 테이블 생성시 해당 컬럼명 다음에 NOT NULL로 지정한다.
- NOT NULL로 설정된 컬럼에는 아무런 값도 들어가지 않게 하려는 입력/수정하는 작업이 수행되지 않는다.
3-2. UNIQUE 제약조건
- 컬럼에 중복값이 들어가지 않도록 설정하는 것이다.
- 기존에 등록된 자료와 동일한 값으로는 입력/수정작업을 수행할 수 없다.
3-3. PRIMARY KEY 제약조건
- 기본키라 부르는 테이블의 각 행들을 구분할 수 있는 식별자이다.
- 중복될 수 없고, NULL값이 입력될 수 없다.
- 기본키로 설정하면 자동으로 인덱스가 생성된다.
- 기본키는 하나의 컬럼 또는 여러 개의 컬럼을 합쳐서 설정할 수는 있으나, 하나의 테이블에는 한 개만 설정할 수 있다.
3-4. FOREIGN KEY 제약조건
- 외래키라 부르는 두 테이블 간의 관계를 선언하는 제약조건이다.
- 외래키(FOREIGN)를 설정함으로써 데이터의 무결성을 보장해준다.
- 외래키 관계를 설정하게 되면 하나의 테이블이 다른 테이블에 의존하게 된다.
- 외래키 테이블에 데이터를 입력할 때는 꼭 기준 테이블 컬럼을 참조해서 입력하므로, 기준 테이블 컬럼에 해당 데이터가 존재해야만 한다.
- 동일한 테이블 내에서도 외래키를 설정해 참조할 수 있다.
3-5. CHECK 제약조건
- 제약이 되는 조건을 직접 입력할 수 있다.
- CHECK 제약조건으로 지정한 조건을 만족하는 자료만 입력/수정 가능하도록 설정한다.
- 다른 컬럼을 참조하는 것이 아니라 지정된 조건을 만족하는지 확인한다.
4. 테이블 이름 규칙
- 테이블을 생성하기 위해서는 CREATE TABLE이라는 키워드를 사용한다.
-
CREATE TABLE 테이블 명 - 테이블 이름 규칙
- 문자로 시작해야 한다.
- 1자부터 30자까지 가능하다.
- 다른 객체의 이름과 중복되지 않아야 한다.
- DB 서버의 예약어는 사용할 수 없다. (SELECT, FROM 등)
5. 기본값 설정하기
- 테이블에 데이터를 입력시 컬럼 목록에서 해당 컬럼을 생략한 경우 기본값으로 입력된다.
- 기본 값을 DEFAULT라는 키워드를 이용하며, 다음과 같은 형식을 사용한다.
-
DEFAULT 기본으로 들어갈 값
- 테이블 생성
CREATE TABLE t1 (
col1 int primary key
col2 varchar default 'DEFAULT' NOT NULL,
col3 int default 200 NOT NULL );
- 자료 입력
INSERT INTO t1 ( col1 ) values (1);
- 등록 자료 확인
col1 col2 col3 1 DEFAULT 200
6. 테이블 제거하기
- 테이블을 삭제하기 위해서는 DROP키워드를 사용한다.
- 테이블의 데이터와 저장 구조 모두 삭제한다.
- 해당 명령은 단독으로 수행되었을 때 되돌릴 수 없는 결과가 생기기 때문에 매우 민감한 명령이다. 그렇기 때문에 테이블을 생성한 사용자와 권한을 가진 사용자만 테이블을 삭제할 수 있다.
-
DROP TABLE 테이블명;
'SQL' 카테고리의 다른 글
그룹으로 나누기 (GROUP BY) (0) | 2021.06.21 |
---|---|
정렬하기 (order by) (0) | 2021.06.18 |
검색 조건 지정하기 (WHERE) (0) | 2021.06.17 |
SELECT 구문 (0) | 2021.06.13 |
데이터베이스 DBMS / RDBMS 및 SQL (0) | 2021.06.12 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코테
- 스마트워치
- 코딩테스트
- 프로그래밍
- 코드
- 머신러닝
- 경제신문
- 프로그래머스
- 영어
- SW
- 데이터분석
- 보안
- 경제
- 개발
- 영어회화
- 함수
- 모듈
- python
- 금리
- Programming
- 데이터
- sql
- 파이썬
- 코딩
- 클래스
- mysql
- 그래프
- 자바
- plot
- R
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함