데이터베이스 데이터 정의어(DDL), 자료형(데이터 타입)
데이터베이스
데이터 정의어(DDL), 자료형(데이터 타입)
데이터 정의어(DDL)
데이터 정의어(DDL : Data Definition Language)
데이터베이스 구조를 정의하고 변경하는 언어 입니다.
스키마를 정의하거나 수정 또는 삭제 하기 위해 사용합니다.
쉽게 설명하면 테이블(표)를 만드는 것입니다.
질의문 끝에는 세미콜론(;)으로 문장의 끝을 표시해야합니다.
SQL 질의문은 대소문자를 구분하지 않지만 보기쉽게 포스팅에는 대문자로 표기하겠습니다.
테이블 생성
CREATE TABLE 테이블명
고객 테이블을 생성하는 예제를 만들어보겠습니다.
CREATE TABLE 고객 (
고객번호 INT NOT NULL,
속성명: 고객번호, 타입: INT, NOT NULL: NULL값 허용안함
아이디 VARCHAR (30),
속성명: 아이디, 타입: VARCHAR(글자수 30), NULL값 허용
등급 VARCHAR (30),
속성명: 등급, 타입: VARCHAR(글자수 30), NULL값 허용
이름 VARCHAR (100) NOT NULL,
속성명: 이름, 타입: VARCHAR(글자수 100), NULL값 허용안함
나이 INT NOT NULL,
속성명: 나이, 타입: INT, NULL값 허용안함
성별 VARCHAR(1) NOT NULL,
속성명: 성별, 타입: VARCHAR(글자수 1), NULL값 허용안함
주소 VARCHAR(255) NOT NULL,
속성명: 주소, 타입: VARCHAR(글자수 255), NULL값 허용안함
상세주소 VARCHAR(255) NOT NULL,
속성명: 상세주소, 타입: VARCHAR(글자수 255), NULL값 허용안함
연락처 VARCHAR(18) NOT NULL,
속성명: 연락처, 타입: VARCHAR(글자수 18), NULL값 허용안함
비상연락망 VARCHAR(18) DEFAULT ''
속성명: 비상연락망, 타입: VARCHAR(글자수 18), NULL값 허용, DEFAULT(기본값): 공백
PRIMARY KEY (고객번호),
기본키(속성명): 고객번호, NULL값 허용안함
UNIQUE (아이디),
대체키(속성명): 아이디, 기본키에서 뺀 나머지 후보키, NULL값 허용
FOREIGN KEY (고객번호) REFERENCES 주문 (고객번호),
외래키(속성명): 고객번호, 주문테이블의 고객번호를 참조(주문테이블이 있어야함)
CONSTRAINT CHECK_AGE CHECK ( 나이 >= 18 )
제약조건: 나이가 18세 이상, CONSTRAINT CHECK_AGE(제약조건명)은 생략 가능
);
위의 SQL문을 실행하면 아래 이미지같은 느낌으로 생성 됩니다.
테이블 변경
ALTER TABLE 테이블명
고객 테이블에 가입 날짜 속성을 추가
ALTER TABLE 고객 ADD 가입날짜 DATETIME;
속성 추가: 가입날짜, 타입: DATETIME
고객 테이블에 18세 이상의 고객만 가입 할 수 있는 데이터 무결성 제약조건 추가
ALTER TABLE 고객 ADD CONSTRAINT CHECK_AGE CHECK(나이>=18)
제약조건 추가: 나이 속성이 18보다 크거나 같으면 가입
고객 테이블에 기존에 있는 비상연락망 속성 삭제
ALTER TABLE 고객 DROP 비상연락망 CASCADE | RESTRICT;
기존 속성 삭제: 비상연락망
- CASCADE: 삭제할 속성과 관련된 제약조건이나 참조하는 다른 속성을 함께 삭제
ex) ALTER TABLE 고객 DROP 비상연락망 CASCADE;
- RESTRICT: 삭제할 속성과 관련된 제약조건이나 참조하는 다른 속성이 존재하면 삭제 거부
ex) ALTER TABLE 고객 DROP 비상연락망 RESTRICT;
고객 테이블에 18세 이상의 고객만 가입 할 수 있는 데이터 무결성 제약조건 삭제
ALTER TABLE 고객 DROP CONSTRAINT CHECK_AGE;
제약조건 삭제: 제약조건명 CHECK_AGE 삭제
테이블 제거
DROP TABLE 테이블명
고객 테이블 삭제
DROP TABLE 고객 CASCADE | RESTRICT;
- CASCADE: 제거할 테이블을 참조하는 다른 테이블도 함께제거
- RESTRICT 제거할 테이블을 참조하는 다른 테이블이 존재하면 제거 거부
자료형(데이터 타입)
비슷해보이는 자료형들이 많아서 조금 정확하게 알아보겠습니다. 자료형을 설정해놓으면 낭비하는 용량이 적어지기 때문에 비슷해보여도 각 쓰임새가 다 다릅니다.
INT, INTEGER: 정수
- 음수도 포함되는 숫자
- 소수점 X, 분수 X
- 2^31 ~ 2^31 - 1 사이의 정수. 0의 자리를 위해 양수에서 -1
- 크기: -2,147,483,648 ~ 2,147,483,647
SAMLLINT: INT보다 작은 정수
- -2^15 ~ 2^15 - 1 사이의 정수. 0의 자리를 위해 양수에서 -1
- 크기: -32,768 ~ 32, 767
- 용량: 2바이트
CHAR(n), CHARACTER(n): 문자 길이가 n인 고정 길이의 문자열
- 문자 길이 n이 정해진만큼 공간을 차지
VARCHAR(n), CHARACTER VARYING(n): 최대 문자 길이가 n인 가변 길이의 문자열
- 입력되는 글자의 길이에 따라 그에 맞게 공간을 할당
- 길이 정보로 한두 바이트를 더 차지
- 연산시에 글자 길이를 계산하기 때문에 CHAR보다 미세하게 시간을 더 소모
- 입력되는 데이터를 통제하기 위해 n길이 지정
NUMBERIC(p, s), DECIMAL(p, s): 고정 소수점 실수 / p는 소수점을 제외한 전체 숫자의 길이이고, s는 소수점 이하 숫자의 길이
- 소수점 이하 자리수가 변함
FLOAT(n): 문자 길이가 n인 부동 소수점 실수
- 소수점 이하 자리수가 변함
- 숫자가 지수 형태로 들어감
댓글
댓글 쓰기