데이터 정의어 (DDL)
CREATE문
CREATE문
· PRIMARY KEY : 기본키 지정
· FOREIGN KEY : 외래키 지정
CREATE TABLE 테이블명
( { 속성이름(컬럼명) 데이터타입
[NOT NULL | UNIQUE | DEFAULT 기본값 | CHECK 체크조건] }
[PRIMARY KEY 속성이름(들)]
{[FOREIGN KEY 속성이름 REFERENCES 테이블이름(속성이름)]
[ON DELETE [CASCADE┃SET NULL]
} )
■ 데이터 타입의 종류
데이터 타입 | 설명 | ANSI SQL 표준 타입 |
INTERGER INT |
4바이트 정수형 | INTERGER, INT SMALLINT |
NUMERIC(m, d) DECIMAL(m, d) |
전체자리수 m, 소수점 이하 자리수 d를 가진 숫자형 |
DECIMAL(p, s) NUMERIC[(p,s)] |
CHAR(n) | 문자형 고정길이, 문자를 저장하고 남은 공간은 공백으로 채운다. |
CHARACTER(n) CHAR(n) |
VARCHAR(n) | 문자형 가변길이 | CHARACTER VARYING(n) CHAR VARYING(n) |
DATE | 날짜형, 연도, 월, 날, 시간을 저장 |
■ 기본키를 지정하고 싶은 경우,
CREATE TABLE NewBook (
bookid INTEGER PRIMARY KEY (bookid),
bookname VARCHAR(20),
publisher VARCHAR(20),
price INTEGER);
또는
CREATE TABLE NewBook (
bookid INTEGER,
bookname VARCHAR(20),
publisher VARCHAR(20),
price INTEGER);
PRIMARY KEY (bookid));
■ 원하는 속성이 없어서 기본키를 여러개 지정하고자 하는 경우
CREATE TABLE NewBook (
bookname VARCHAR(20),
publisher VARCHAR(20),
price INTEGER);
PRIMARY KEY (bookname, publisher));
■ 제약 설정
: bookname은 null값을 가질 수 없고 publisher는 중복되는 값이 있어서는 안된다. price는 값이 입력되지 않았을 경우 기본값 100000을 저장하고, 최소 1,000원 이상이 되도록 한다. |
CREATE TABLE NewBook (
bookname VARCHAR(20) NOT NULL,
publisher VARCHAR(20) UNIQUE,
price INTEGER) DEFAULT 10000 CHECK(price > 1000),
PRIMARY KEY (bookname, publisher));
연습문제
질의 3-35. 다음과 같은 속성을 가진 NewCustomer 테이블을 생성하시오.
• custid(고객번호) - INTEGER, 기본키
• name(이름) – VARCHAR(40)
• address(주소) – VARCHAR(40)
• phone(전화번호) – VARCHAR(30)
CREATE TABLE NewCustomer (
custid INTEGER PRIMARY KEY,
name VARCHAR(40),
address VARCHAR(40),
phone VARCHAR(30)
);
질의3-36. 다음과 같은 속성을 가진 NewOrders 테이블을 생성하시오.
• orderid(주문번호) - INTEGER, 기본키
• custid(고객번호) - INTEGER, NOT NULL 제약조건, 외래키(NewCustomer.custid, 연쇄삭제)
• bookid(도서번호) - INTEGER, NOT NULL 제약조건
• saleprice(판매가격) - INTEGER
• orderdate(판매일자) – DATE
CREATE TABLE NewOrders(
orderid INTEGER,
custid INTEGER NOT NULL,
bookid INTEGER NOT NULL,
salesprice INTEGER,
orderdate DATE,
PRIMARY KEY(orderid),
FOREIGN KEY(custid) REFERENCES NewCustomer(custid) ON DELETE CASCADE
);
FOREIGN KEY()
외래키 제약 조건 명시할 때
반드시 참조되는 테이블(부모 릴레이션)이 존재해야 하며, 참조되는 테이블의 기본키여야 한다.
→ custid 컬럼은 (질의3-36)에서 생성한 NewCustomer 테이블의 기본키이다.
외래키 지정시
ON DELETE 또는 ON UPDATE 옵션은 참조되는 테이블의 튜플이 삭제되거나 수정될 때 취할 수 있는 동작을 지정한다.
'Database > SQL' 카테고리의 다른 글
[데이터 전처리1] 코드값 레이블로 변경하기 (0) | 2022.07.29 |
---|---|
데이터를 가공해야 하는 이유? (0) | 2022.07.29 |
집합연산 (0) | 2022.07.28 |
Q3-31 : 상관 부속질의 (0) | 2022.07.28 |
부속질의 (0) | 2022.07.28 |