테이블 생성
1. 테이블 생성
데이터베이스에 저장할 새 엔터티와 관계가 있는 경우 CREATE TABLE
문을 사용하여 새 데이터베이스 테이블을 만들 수 있다.
1
2
3
4
5
CREATE TABLE IF NOT EXISTS mytable (
column DataType TableConstraint DEFAULT default_value,
another_column DataType TableConstraint DEFAULT default_value,
...
);
새 테이블의 구조는 일련의 열을 정의하는 테이블 스키마에 의해 정의된다. 각 열에는 이름, 해당 열에 허용되는 데이터 유형, 삽입되는 값에 대한 선택적 테이블 제약 조건 및 선택적 기본값이 있다.
동일한 이름의 테이블이 이미 존재하는 경우 SQL 구현은 일반적으로 오류를 발생시키므로 오류를 억제하고 테이블 생성을 건너뛰려면 IF NOT EXISTS
절을 사용할 수 있다.
2. 테이블 데이터 유형
데이터베이스마다 다른 데이터 유형을 지원하지만 공통 유형은 숫자, 문자열 및 날짜, 부울 또는 이진 데이터와 같은 기타 잡다한 것들을 지원한다. 다음은 실제 코드에서 사용할 수 있는 몇 가지 예이다.
데이터 형식 | 설명 |
---|---|
INTEGER, BOOLEAN | 정수 데이터 유형은 숫자 또는 연령의 수와 같은 전체 정수 값을 저장할 수 있다. 일부 구현에서 부울 값은 0 또는 1의 정수 값으로 표현된다. |
FLOAT, DOUBLE, REAL | 부동소수점 데이터 유형은 측정값 또는 분수값과 같은 보다 정밀한 수치 데이터를 저장할 수 있다. 해당 값에 필요한 부동소수점 정밀도에 따라 다른 유형을 사용할 수 있다. |
CHARACTER(num_chars), VARCHAR(num_chars), TEXT | 텍스트 기반 데이터 유형은 문자열과 텍스트를 모든 종류의 로케일에 저장할 수 있다. 다양한 유형의 차이는 일반적으로 이러한 열로 작업할 때 데이터베이스의 효율성을 떨어뜨리는 것과 같다. CHARACTER 및 VARCHAR(변수 문자) 유형은 모두 저장할 수 있는 최대 문자 수로 지정되므로(길수록 값이 잘릴 수 있음) 큰 테이블을 사용하여 저장하고 쿼리하는 것이 더 효율적일 수 있다. |
DATE, DATETIME | 또한 SQL은 날짜 및 타임스탬프를 저장하여 시계열 및 이벤트 데이터를 추적할 수 있다. 특히 시간대에 걸쳐 데이터를 조작할 때 작업하기가 까다로울 수 있다. |
BLOB | 마지막으로, SQL은 이진 데이터를 데이터베이스의 블록에 저장할 수 있다. 이러한 값은 데이터베이스에 대해 불투명하기 때문에 일반적으로 올바른 메타데이터와 함께 저장하여 재쿼리해야 한다. |
3. 테이블 제약 조건
각 열에 추가 제약 조건이 있어 해당 열에 삽입할 수 있는 값을 제한할 수 있다. 이 목록은 포괄적인 목록은 아니지만 유용할 수 있는 몇 가지 일반적인 제약 조건을 보여 준다.
제약 조건 | 설명 |
---|---|
PRIMARY KEY | 이 열의 값은 고유하며 각 값을 사용하여 이 표의 단일 행을 식별할 수 있다. |
AUTOINCREMENT | 정수 값의 경우, 이는 각 행 삽입에 따라 값이 자동으로 채워지고 증가함을 의미한다. 일부 데이터베이스에서 지원되지 않는다. |
UNIQUE | 이 열의 값은 고유해야 하므로 표의 다른 행과 같은 값을 가진 다른 행을 이 열에 삽입할 수 없다. 표의 행에 대한 키가 될 필요가 없다는 점에서 Primary KEY와 다르다. |
NOT NULL | 삽입된 값은 NULL일 수 없다. |
CHECK (expression) | 복잡한 식을 실행하여 삽입된 값이 유효한지 테스트할 수 있다. 예를 들어 값이 양수이거나 특정 크기보다 큰지 확인하거나 특정 접두사 등으로 시작할 수 있다. |
FOREIGN KEY | 열의 각 값이 다른 테이블의 열에 있는 다른 값과 일치하는지 확인하는 일관성 검사이다. 예를 들어, ID별로 모든 직원을 나열하는 테이블과 해당 직원의 급여 정보를 나열하는 테이블이 두 개 있는 경우, FOREIGN KEY는 급여 테이블의 모든 행이 마스터 직원 목록에 있는 유효한 직원과 일치하도록 보장할 수 있다. |
[출처 및 참고]
This post is licensed under CC BY 4.0 by the author.