데이터베이스 데이터 정의어(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인 부동 소수점 실수

 - 소수점 이하 자리수가 변함
 - 숫자가 지수 형태로 들어감

DATETIME, DATE: 년, 월, 일로 표현 되는 날짜

TIME: 시, 분, 초로 표현되는 시간

댓글

이 블로그의 인기 게시물

[정보처리기사] OSI 7계층 정리

블로그스팟 상위노출 시작하기