- 데이터 정의
데이터베이스에서 릴레이션의 집합은 데이터 정의 언어(DDL)-Mega data : data of data를 이용하여 시스템에 명시되어야 한다. SQL DDL은 릴레이션의 집합 뿐만 아니라 다음을 포함하는 각 릴레이션들에 관한 정보를 명시할 수 있게 한다.
- 각 릴레이션의 스키마
- 각 속성들과 관련된 값들의 타입
- 무결성 제약조건(integrity constraint)
- 각 릴레이션에서 유지하여야 할 인데스들의 집합
- 각 릴레이션의 보안과 권한정보
- 각 릴레이션의 디스크에서의 물리적인 저장 구조
DDL
- 보안. 권한
- 무결성 제약 조건
- 값 타입
- 스키마
- 물리적 저장 구조
- 기본 타입
SQL 표준은 다음을 포함하여 다양한 내장 타입들을 지원한다.
- char(n) : 사용자가 지정하는 길이 n을 갖는 고정 길이 문자열. character 라는 완전한 형태를 사용할 수도 있음
- varchar(n) : 사용자가 지정하는 최대 길이 n을 갖는 가변 길이 문자열. character varying 이라는 완전한 형태를 사용할 수도 있음
- int : 정수(기계 종속적인 정수의 유한 부분 집합). integer 라는 완전한 형태와 동일함
- smallint : 작은 정수(정수 도메인 타입의 기계 종속적인 부분 집합).
- numeric(p,d) : 사용자가 지정하는 정확도(precision)를 갖는 고정 소수정 수(fixed-point number). 수는 p개의 숫자(부호도 포함하여)로 구성되어 있고, p개의 숫자에서 d개는 소수점의 오른쪽에 있다. 따라서 numeric(3,1)은 44.5는 정확히 저장하지만, 444.5 혹은 0.32는 이 타입으로는 정확하게 저잘할 수 없다. (10자리 정수 -> (10,0)
- real, double, precision : 기계종속적인 정확도를 가지는 이동 소수점 수와 기계종속수준 주배의 정확도를 기닌 이동 소수점 수
- float(n) : 적어도 n개의 숫자의 정확도를 가지는 이동 소수점 수
각각의 타입은 특별한 값인 null 값도 포함할 수 있다. null값은 값이 존재하지만 알 수 없거나, 값이 전혀 존재하지 않는 경우에 값의 부재를 가리킨다. 우리가 곧 보게 될 몇몇 경우에, null값을 입력하게 되는 것을 금지하길 바랄 수 있다.
char 데이터 타입은 고정 길이의 문자열을 저장한다. 예를 들어, char(10)타입의 속성 A를 고려해보자. 만약 이 속성에 "Avi"라는 문자열을 저장하면, 10 문자 길이를 맞추기 위해 7개의 공백이 첨부된다. 반대로 varchar(10)타입의 속성 B가 있다고 하고, "Avi"를 속성 B에 저장하면, 공백은 더해지지 않는다. char 타입의 두 값을 비교할 떄 두 값이 길이가 다르면, 비교하기 전에 길이가 짭은 값에 여백을 자동으로 더해서 두 값이 같은 크기가 되도록 만든다.
char 타입과 varchar타입을 비교할 때, 비교하기 전에 길이를 같게 하기 위해 varchar 타입에 여분의 공백이 더해질 것으로 기대할 것이다. 하지만 이러한 일은 데이터베이스 시스템에 따라 일어날 수 있고 일어나지 않을 수도 있다. 결과적으로 위에서 나온 속성 A, B에 "Avi"라는 같은 값이 저장되었다고 하더라도 A = B 비교가 거짓이라는 결과로 나타날 수도 있다. 이러한 문제를 피하기 위해 항상 char 타입 대신에 varchar 타입을 사용하는 것을 추천한다.
SQL은 또한 유니코드 표현을 사용하여 여러 언어의 데이터를 저장할 수 있도록 하는 nvarchar 타입을 제공한다. 하지만, 많은 데이터베이스는 유니코드가 (UTF-8 표현에서) varchar 타입에도 저장될 수 있도록 허락한다.
'Programming > DataBase System' 카테고리의 다른 글
jdbc time zone Error 해결방법 (0) | 2020.06.09 |
---|---|
Chapter4 - 조인식 (0) | 2019.04.30 |
Chapter3 -SQL 질의 언어의 개요 (0) | 2019.04.14 |
Chapter2 - 요약 (0) | 2019.04.14 |
Chapter2 - 관계 연산 (0) | 2019.04.14 |