코린이 유치원/SQL반
04 - 2 DDL (CREATE)
개나리반
2022. 6. 3. 00:40
01 테이블 생성 (컬럼 레벨 설정)
다음과 같은 속성의 테이블을 만들고 싶다고 가정해boa!
컬럼명: 데이터 타입 제약조건
/*
테이블: 회원 (member)
속성
id: varchar2(10) primary key
password: varchar2(10) not null (필수)
name: varchar2(30) not null
point: number(6) nullable(null을 허용-not null이 아니면 nullable) -999999 ~ 999999. number(6,2) -9999.99 ~ 9999.99
join_date: date not null
*/
다음과 같이 작성해주면 위와 같은 속성을 가진 테이블 완!성!
변수이름 데이터타입 제약조건 순서로 작성하고, 쉼표는 한 열 완성하고 붙인다.
테이블 생성 시, 제약 조건 설정 방법은 두가지가 있는데, 이 경우는 컬럼 레벨에서 설정하는 경우!
(행 설정하는 컬럼 레벨에서 제약 조건을 넣어주니깐 컬럼 레벨 설정)
create table member(
id varchar(10) primary key,
password varchar(10) not null,
name varchar(30) not null,
point int, -- null 입력 가능한 것이 default라 제약조건 공란
joindate timestamp not null -- time zone에 따라 시간이 변경되는 timestamp로 데이터 타입 지정
);
02 테이블 생성 확인
desc(description) 테이블이름;
구문 이용하면 행 별 타입, 제약조건 확인 가능
desc member;
03 테이블 생성 (테이블 레벨 설정)
컬럼 설정 뒤에 따로 설정하는 경우가 테이블 레벨
-- 기본문법
constraint 제약조건이름 제약조건타입(지정할컬럼명)
- 제약조건 이름은 자유지만, 알아보기 테이블 이름과 행 이름, 제약조건 이름을 넣는 것이 일반적
- NOT NULL 제약조건은 컬럼레벨에서 지정
04 테이블 생성 연습 1
다음과 같은 조건의 부모 테이블을 만들어보자
create table publisher(
publisher_no int primary key auto_increment,
publisher_name varchar(50) not null,
publisher_address varchar(100),
publisher_tel varchar(20) not null,
);
☝🏻 NOT NULL은 컬럼 레벨에서 설정해야하고, PK와 자동증가 모두 컬럼 레벨에서 설정 가능
desc publisher; 사용해서 각 data type과 Null 조건, 제약 조건이 잘 들어갔는지 확인 가능
05 테이블 생성 연습 2
다음과 같은 조건의 자식 테이블을 만들어보자
create table book(
isbn varchar(13) primary key,
title varchar(50) not null,
author varchar(50) not null,
page int not null check(page >= 0),
price int not null check(price >=0),
publish_date timestamp not null default current_timestamp not null, -- current_timestamp(등록시점)
publisher_no int not null,
constraint book_publisher_publisher_no_fk foreign key(publisher_no) references publisher(publisher_no)
);
- FK는 constraint 테이블 구문 사용해서 제약 조건 설정(FK 생각 안나는 사람은 링크 참고)
- 제약조건이름은 자유롭게 설정 가능하지만 오류가 났을 때 알아보기 쉽게 테이블명, 컬럼명, 제약 조건 적어줌
- 테이블a_테이블b_컬럼명_제약조건명 = book_publisher_publisher_no_fk
05 테이블 제약 조건 조회
테이블 레벨에서 설정한 제약 조건을 조회하고 싶을 때 쓰는 구문 (FK 조건은 조회 불가)
select * from information_schema.table_constraints where table_schema = '테이블이름';