본문 바로가기

DB

Oracle DataBase(DB) SQL 제약조건(CONSTRAINT) 예제

테이블 제약조건

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;