모든지 기록하자!

[Oracle] 테이블 작성 예시 본문

Database

[Oracle] 테이블 작성 예시

홍크 2021. 6. 1. 19:10
728x90
--TABLE 작성
-- TEAM : 팀 아이디, 지역, 팀명, 개설 날짜, 전화번호, 홈페이지

CREATE TABLE TEAM(
        TEAMID NUMBER(8) CONSTRAINT PK_TEAM_ID PRIMARY KEY,
        RESIONNAME VARCHAR2(10),
        TEAMNAME VARCHAR2(30) NOT NULL,
        STARTDATE DATE,
        TEL VARCHAR(20), 
        HOMEPAGE VARCHAR(30)
);



-- PLAYER : 선수번호, 선수명, 등록일, 포지션, 키, 팀 아이디
CREATE TABLE PLAYER(
        PLAYERID NUMBER CONSTRAINT PK_PLAYER PRIMARY KEY,
        PLAYERNAME VARCHAR(20) NOT NULL,
        JOINDATE DATE, 
        POSITION VARCHAR(20),
        HEIGHT NUMBER(5,1),
        TEAMID NUMBER(8)
);

ALTER TABLE PLAYER
ADD
CONSTRAINT FK_TEAM_ID FOREIGN KEY (TEAMID)
REFERENCES TEAM(TEAMID);


-- TEAM 두개만 등록한다.
INSERT INTO TEAM(TEAMID,RESIONNAME,TEAMNAME,STARTDATE,TEL,HOMEPAGE)
VALUES (10, '서울', '베어즈', SYSDATE, '02-123-4567', 'http://www.naver.com');

INSERT INTO TEAM(TEAMID,RESIONNAME,TEAMNAME,STARTDATE,TEL,HOMEPAGE)
VALUES (20, '대구', '라이온즈', SYSDATE, '02-456-7897', 'http://www.naver.com');


-- 두개의 TEAM에 선수를 각각 3명씩 등록해 본다.
INSERT INTO PLAYER(PLAYERID, PLAYERNAME, JOINDATE, POSITION, HEIGHT, TEAMID)
VALUES (100, '홍길동', SYSDATE, '투수', 176.2, 20);

INSERT INTO PLAYER(PLAYERID, PLAYERNAME, JOINDATE, POSITION, HEIGHT, TEAMID)
VALUES (101, '이몽룡', SYSDATE, '타자', 182.4, 20);

INSERT INTO PLAYER(PLAYERID, PLAYERNAME, JOINDATE, POSITION, HEIGHT, TEAMID)
VALUES (102, '성춘향', TO_DATE('20030425', 'YYYYMMDD'), '타자', 162.9, 10);

INSERT INTO PLAYER(PLAYERID, PLAYERNAME, JOINDATE, POSITION, HEIGHT, TEAMID)
VALUES (103, '홍두께', TO_DATE('20120630', 'YYYYMMDD'), '투수', 172.3, 10);

INSERT INTO PLAYER(PLAYERID, PLAYERNAME, JOINDATE, POSITION, HEIGHT, TEAMID)
VALUES (104, '임꺽정', '', '투수', 189.2, '');


SELECT * FROM player;

-- LIONS 소속 선수들
SELECT *
FROM player
WHERE TEAMID = 20;


SELECT t.teamid, t.teamname, p.playername, p.position
FROM team t, player p
WHERE t.teamid = p.teamid
    AND t.teamname = '라이온즈';
    

-- 선수를 입력하면 그 선수의 팀명과 전화번호, 홈페이지가 출력되도록 한다.
SELECT t.teamname, t.tel, t.homepage, p.playername
FROM player p , team t
WHERE p.teamid = t.teamid
    AND p.playername = '성춘향';
-- 온라인 마켓 TABLE을 작성
-- PRODUCT(상품) : 상품번호, 상품명, 상품가격, 상품설명
CREATE TABLE PRODUCT(
        PRODUCTID NUMBER PRIMARY KEY,
        NAME VARCHAR(50),
        PRICE NUMBER NOT NULL,
        PRODUCT_DESC VARCHAR(500)
);
-- CONSUMER(소비자) : 소비자ID, 이름, 나이
CREATE TABLE CONSUMER(
        USERID VARCHAR(50) CONSTRAINT PK_USER_ID PRIMARY KEY,
        NAME VARCHAR(50) NOT NULL,
        AGE NUMBER(3) NOT NULL       
);

-- CART(장바구니) : 장바구니 번호, 소비자 ID, 상품번호, 수량
CREATE TABLE CART(
        CARTID VARCHAR(20) CONSTRAINT PK_CART_ID PRIMARY KEY,
        USERID VARCHAR2(50),  -- 왜래키
        PRODUCTID NUMBER,    -- 왜래키
        AMOUNT NUMBER
);

ALTER TABLE CART 
ADD
CONSTRAINT FK_PRODUCT_ID FOREIGN KEY(PRODUCTID)
REFERENCES PRODUCT(PRODUCTID);

ALTER TABLE CART
ADD
CONSTRAINT FK_USER_ID FOREIGN KEY(USERID)
REFERENCES CONSUMER(USERID);


-- 상품 테이블에 상품을 등록합니다.
INSERT INTO PRODUCT(PRODUCTID, NAME, PRICE, PRODUCT_DESC)
VALUES (100, '새우깡', 1500, '새우가 들어가 있지 않다.');

INSERT INTO PRODUCT(PRODUCTID, NAME, PRICE, PRODUCT_DESC)
VALUES (101, '홈런볼', 1800, '초코가 들어간 과자');

INSERT INTO PRODUCT(PRODUCTID, NAME, PRICE, PRODUCT_DESC)
VALUES (102, '포카칩', 1500, '짭잘한 감자칩');

SELECT * FROM product;

-- 소비자를 등록합니다.
INSERT INTO CONSUMER(USERID, NAME, AGE)
VALUES ('rma7','홍길동',24);

INSERT INTO CONSUMER(USERID, NAME, AGE)
VALUES ('ekekekwnsrl','성춘향',16);

-- 소비자가 쇼핑한 상품을 추가합니다.(장바구니에 담는다)
INSERT INTO CART(CARTID, USERID, PRODUCTID, AMOUNT)
VALUES (1, 'ekekekwnsrl', 101, 3);

INSERT INTO CART(CARTID, USERID, PRODUCTID, AMOUNT)
VALUES (2, 'ekekekwnsrl', 102, 10);

INSERT INTO CART(CARTID, USERID, PRODUCTID, AMOUNT)
VALUES (3, 'rma7', 100, 1);


-- 쇼핑한 상품을 출력한다.
SELECT
    *
FROM cart
WHERE userid = 'ekekekwnsrl';

SELECT c.userid, c.productid, p.name, p.price
FROM cart c, product p
WHERE c.productid = p.productid
        AND c.userid = 'ekekekwnsrl';
728x90

'Database' 카테고리의 다른 글

[Oracle] SEQUENCE와 동의어 생성/삭제/수정  (0) 2021.06.01
[Oracle] VIEW 생성/삭제/예시  (0) 2021.06.01
[Oracle] 무결성 제약 조건  (0) 2021.06.01
[Oracle] SUB QUERY 예제  (0) 2021.05.31
[Oracle] SUB QUERY  (0) 2021.05.31
Comments