테이블 제약조건
1. SELLER(판매자)
판매자 : 판매자 아이디(PK),
판매자 비밀번호(NOT NULL),
판매자 주소(NOT NULL),
판매자 이메일(UNIQUE, NOT NULL),
판매자 연락처(UNIQUE, NOT NULL),
계좌번호(NOT NULL)
2. BUYER(구매자)
구매자 : 구매자 아이디(PK),
구매자 비밀번호(NOT NULL),
구매자 주소(NOT NULL),
구매자 이메일(UNIQUE, NOT NULL),
구매자 연락처(UNIQUE, NOT NULL),
계좌번호(NOT NULL)
3. GOODS(상품)
상품 : 상품번호(PK),
상품종류(NOT NULL),
상품사이즈(NOT NULL),
상품색상(NOT NULL),
상품이름(NOT NULL),
상품설명(NOT NULL),
상품가격(NOT NULL),
상품수량(NOT NULL),
판매자아이디(FK)
4. ORDERS(주문)
주문 : 주문번호(PK),
주문날짜(NOT NULL),
상품번호(FK),
구매자 아이디(FK)
PRIAMRY KEY(PK) 지정방법(1)
CREATE TABLE 테이블명(
컬럼명 타입 PRIMARY KEY
);
ex)
CREATE TABLE ORDERS(
ORDER_NUM NUMBER(4) PRIMARY KEY
);
PRIAMRY KEY(PK) 지정방법(2)
CREATE TABLE 테이블명(
컬럼명 타입 PRIMARY KEY
CONSTRAINT 제약조건명 PRIMARY KEY (컬럼명)
);
ex)
CREATE TABLE ORDERS(
ORDER_NUM NUMBER(4),
CONSTRAINT O_ON_PK PRIMARY KEY ORDER_NUM
);
PRIAMRY KEY(PK) 지정방법(3)
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 KEY(ORDER_NUM);
ex) ALTER TABLE ORDERS ADD CONSTRAINT O_ON_PK PRIMARY KEY(ORDER_NUM);
FOREIGN KEY(FK) 지정방법(1)
CREATE TABLE 테이블명(
컬럼명 타입,
참조할 테이블명 참조할 컬럼명 타입,
CONSTRAINT 제약조건명 KEY(컬럼명) REFERENCES 참조할 테이블명(참조할 컬럼명),
);
ex)
CREATE TABLE ORDER(
ORDER_NUM NUMBER(4) PRIMARY KEY,
ORDER_DATE DATE NOT NULL,
GOODS_NUM NUMBER(4) NOT NULL,
CONSTRAINT FK_GN FOREIGN KEY(GOODS_NUM) REFERENCES GOODS(GOODS_NUM),
);
-- 제약조건명 X
CREATE TABLE 테이블명(
컬럼명 타입,
참조할 테이블명 참조할 컬럼명 타입,
KEY(컬럼명) REFERENCES 참조할 테이블명(참조할 컬럼명),
);
ex)
CREATE TABLE ORDER(
ORDER_NUM NUMBER(4) PRIMARY KEY,
ORDER_DATE DATE NOT NULL,
GOODS_NUM NUMBER(4) NOT NULL,
FOREIGN KEY(GOODS_NUM) REFERENCES GOODS(GOODS_NUM),
);
FOREIGN KEY(FK) 지정방법(2)
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 FOREIGN KEY(컬럼명)
REFERENCES 참조할 테이블명(참조할 컬럼명);
테이블 생성
CREATE TABLE SELLER(
SELLER_ID NVARCHAR2(8) PRIMARY KEY,
SELLER_PASSWORD NVARCHAR2(20) NOT NULL,
SELLER_ADDR NVARCHAR2(30) NOT NULL,
SELLER_EMAIL NVARCHAR2(30) UNIQUE NOT NULL,
SELLER_PHONE VARCHAR2(13) UNIQUE NOT NULL,
SELLER_ACCOUNT NVARCHAR2(10) UNIQUE NOT NULL
);
CREATE TABLE BUYER(
BUYER_ID NVARCHAR2(8) PRIMARY KEY,
BUYER_PASSWORD NVARCHAR2(20) NOT NULL,
BUYER_ADDR NVARCHAR2(30) NOT NULL,
BUYER_EMAIL NVARCHAR2(30) UNIQUE NOT NULL,
BUYER_PHONE VARCHAR2(13) UNIQUE NOT NULL,
BUYER_ACCOUNT NVARCHAR2(10) UNIQUE NOT NULL
);
CREATE TABLE GOODS(
GOODS_NUM NUMBER(4) PRIMARY KEY,
GOODS_TYPE NVARCHAR2(10) NOT NULL,
GOODS_SIZE NVARCHAR2(4) NOT NULL,
GOODS_COLOR NVARCHAR2(5) NOT NULL,
GOODS_NAME NVARCHAR2(20) NOT NULL,
GOODS_PRICE NUMBER(9) NOT NULL,
GOODS_quantity NUMBER(10) NOT NULL,
SELLER_ID NVARCHAR2(8),
CONSTRAINT FK_SI FOREIGN KEY(SELLER_ID) REFERENCES SELLER(SELLER_ID)
);
CREATE TABLE ORDERS(
ORDER_NUM NUMBER(4) PRIMARY KEY,
ORDER_DATE DATE NOT NULL,
GOODS_NUM NUMBER(4) NOT NULL,
BUYER_ID NVARCHAR2(8) NOT NULL,
CONSTRAINT FK_GN FOREIGN KEY(GOODS_NUM) REFERENCES GOODS(GOODS_NUM),
CONSTRAINT FK_BI FOREIGN KEY(BUYER_ID) REFERENCES BUYER(BUYER_ID)
);
제약조건 확인하는 SQL문
SELECT * FROM USER_CONSTRAINTS WHERE OWNER = '해당아이디';
OWNER : 제약조건 소유 계정
CONSTRAINT_NAME : 제약조건 이름(이름을 설정하지 않으면 자동저장)
제약조건 이름 정하기
- [TABLE_NAME]약자_[COL_NAME]약자_CONSTRAINT TYPE
- FM_PW_NN : FMEMBER 테이블의 F_PASSWORD 컬럼에 NOT NULL 제약조건 부여
CONSTRAINT_TYPE
- C : CHECK, NOT NULL
- U : UNIQUE
- P : PRIMARY KEY
- R : FOREIGN KEY
SELLER(판매자) 테이블
INSERT INTO SELLER VALUES('admin','1234','대한민국','admin@admin.com','010-1234-1234','1234567');
SELECT * FROM SELLER;
BUYER(구매자) 테이블
INSERT INTO BUYER VALUES('buyer','1234','대한민국','buyer@buyer.com','010-1212-1212','11111');
INSERT INTO BUYER VALUES('buyer2','1234','일본','buyer2@buyer.com','010-2323-2323','22222');
INSERT INTO BUYER VALUES('buyer3','1234','미국','buyer3@buyer.com','010-3434-3434','33333');
SELECT * FROM BUYER;
GOODS(상품) 테이블
INSERT INTO GOODS VALUES('0001','청바지','27','청색','게스청바지',170000,100,'admin');
INSERT INTO GOODS VALUES('0002','스키니진','27','검정색','게스스키니진',140000,100,'admin');
INSERT INTO GOODS VALUES('0003','트레이닝바지','27','검정색','아디다스 트레이닝 바지',40000,100,'admin');
SELECT * FROM GOODS;
ORDERS(주문) 테이블
INSERT INTO ORDERS VALUES('0001',SYSDATE,'0001','buyer');
INSERT INTO ORDERS VALUES('0002',SYSDATE,'0001','buyer');
INSERT INTO ORDERS VALUES('0003',SYSDATE,'0001','buyer2');
INSERT INTO ORDERS VALUES('0004',SYSDATE,'0002','buyer2');
INSERT INTO ORDERS VALUES('0005',SYSDATE,'0003','buyer3');
SELECT * FROM ORDERS;