QUERY안의 QUERY
SELECT 단일 ROW 단일 COLUMN(산출되는 데이터는 한개, 컬럼도 한개)
FROM 다중 ROW 다중 COLUMN
WHERE 다중 ROW 다중 COLUMN
CREATE TABLE MEMBER(
ID VARCHAR2(50) PRIMARY KEY,
PWD VARCHAR2(50) NOT NULL,
NAME VARCHAR2(50) NOT NULL,
EMAIL VARCHAR2(50) UNIQUE,
AUTH NUMBER(1) /* AUTH - 사용자 관리자 계정 구별?*/
);
INSERT INTO MEMBER(ID, PWD, NAME, EMAIL, AUTH)
VALUES('aaa', '111', '홍길동', 'AAA', 3);
INSERT INTO MEMBER(ID, PWD, NAME, EMAIL, AUTH)
VALUES('bbb', '222', '성춘향', 'BBB', 3);
INSERT INTO MEMBER(ID, PWD, NAME, EMAIL, AUTH)
VALUES('ccc', '333', '일지매', 'CCC', 3);
-- CASE == SWITCH
SELECT employee_id, first_name, phone_number,
CASE SUBSTR(phone_number, 1, 3)
WHEN '515' THEN '서울'
WHEN '590' THEN '부산'
WHEN '650' THEN '광주'
ELSE '기타'
END
FROM employees;
SELECT employee_id, first_name
FROM employees
Where employee_id >= 100 AND employee_id <= 109;
-- 급여 랭킹 top10을 구하라
SELECT employee_id, first_name, salary
FROM employees
ORDER BY salary DESC;
SELECT ROWNUM, employee_id, first_name -- 하나의 조건에서만 가능
FROM employees
WHERE ROWNUM <= 10;
SELECT ROWNUM, employee_id, first_name --
FROM employees
WHERE ROWNUM >= 11 AND ROWNUM <=20;
SELECT RNUM, employee_id, first_name, salary
FROM
(SELECT ROWNUM as RNUM, employee_id, first_name, salary -- 2. 번호지정
FROM
(SELECT employee_id, first_name, salary --1. 급여순위
FROM employees
ORDER BY salary DESC)
)
Where RNUM >= 11 AND RNUM <= 20; -- 3. 범위지정
-- 문제1 급여 3000이상
SELECT employee_id, first_name, job_id, salary
FROM employees
Where salary >= 3000;
-- 문제2 담당 업무가 ST_MAN
SELECT employee_id, first_name, job_id, salary, department_id
FROM employees
Where job_id = 'ST_MAN';
-- 문제3 입사일이 2006년 1월 1일 이후인 사원
SELECT employee_id, first_name, job_id, salary, hire_date, department_id
FROM employees
Where hire_date > '2006/01/01';
-- 문제4 급여가 3000에서 5000사이
SELECT first_name, job_id, salary, department_id
FROM employees
Where salary >= 3000 AND salary <= 5000;
-- Where salary BETWEEN 3000 AND 5000;
-- 문제5 사원번호가 145, 152, 203인 사원
SELECT employee_id, first_name, job_id, salary, hire_date
FROM employees
Where job_id IN (145, 152, 203);
-- 문제6 05년도에 입사한 사원
SELECT employee_id, first_name, job_id, salary, hire_date
FROM employees
Where hire_date LIKE '05%';
-- 문제7 보넉스가 없는 사원 NVL(해당되면 표시할 값, 해당안될시 표시할 값)
SELECT employee_id, first_name, job_id,salary , hire_date, salary * NVL(commission_pct, 0), department_id
FROM employees
Where commisssion_pct is null;
-- 문제8 급여가 1100이상이고 담당업무가 ST_MAN인 사원
SELECT employee_id, first_name, job_id, salary, hire_date, department_id
FROM employees
Where salary >= 1100 AND job_id = 'ST_MAN';
-- 문제9 급여가 10000이상 담당업무가 ST_MAN인 사원
SELECT employee_id, first_name, job_id, salary, hire_date, department_id
FROM employees
Where salary >= 10000 OR job_id = 'ST_MAN';
-- 문제10 담당업무가 ST_MAN, SA_MAN, SA_REP가 아닌 사원
SELECT employee_id, first_name, job_id, salary, hire_date, department_id
FROM employees
Where job_id not in('ST_MAN', 'SA_MAN', 'SA_REP');
-- 문제11 업무가 PRES이고 급여가 12000이상이거나 업무가 SA_MAN인 사원
SELECT employee_id, first_name, job_id, salary
FROM employees
Where (job_id LIKE ('%PRES%') and salary >= 12000) or job_id = ('SA_MAN');
-- Where job_id LIKE '%PRES%'
-- AND salary >= 12000 여기까지 계산 후 OR는 이후에 결과 출력
-- OR job_id = 'SA_MAN'; 과 같음
-- 문제12 업무가 AD_PRES 또는 SA_MAN이고 급여가 12000이상인 사원
SELECT employee_id, first_name, job_id, salary, hire_date
FROM employees
Where job_id IN('AD_PRES', 'SA_MAN') AND salary >= 12000;
-- 정렬
-- 문제1번 입사일 순으로 정렬
SELECT employee_id, first_name, salary, hire_date, department_id
FROM employees
ORDER BY hire_date ASC;
-- 문제2번 최근에 입사한 순으로 정렬
SELECT employee_id, first_name, salary, hire_date, department_id
FROM employees
ORDER BY hire_date DESC;
-- 문제3번 부서번호로 정렬 후 부서번호가 같을 경우 급여가 많은 순으로 정렬
SELECT employee_id, first_name, salary, hire_date, department_id
FROM employees
ORDER BY department_id ASC, salary DESC;
-- 문제4번 첫번째 정렬-부서번호, 두번째 정렬-업무, 세번째 정렬-급여 많은 순
SELECT employee_id, first_name, hire_date, department_id, job_id, salary
FROM employees
ORDER BY department_id ASC, job_id ASC, salary DESC;
-- 표준함수 TO_DATE, TO_CHAR
-- 문제1번 King의 정보를 대문자로 검색
SELECT employee_id, last_name, upper(job_id), department_id
FROM employees
Where UPPER(last_name) LIKE 'KING';
-- 문제2번 부서번호와 부서이름, 부서이름과 위치번호를 합하여 출력
SELECT department_id, department_name, department_id || ' ' || location_id
FROM departments;
-- concat
SELECT department_id, department_name, CONCAT(department_id, location_id)
FROM departments;
-- 문제3번 이름 중 e자의 위치를 출력
SELECT first_name, INSTR(first_name, 'e', 1, 1) as "e의 위치"
FROM employees;
-- 문제4번 부서번호가 80인 사람의 급여를 30으로 나눈 나머지를 구하라
SELECT first_name 이름 , MOD(salary, 30) as "급여/30의 나머지"
FROM employees
Where department_id = 80;
-- 문제5번 근무일수가 몇주 몇일 인지 출력
SELECT first_name 이름, trunc((sysdate - hire_date)/7)|| '주 ' || MOD(trunc((sysdate - hire_date)),7)||'일' as "근무일수"
FROM employees
ORDER BY "근무일수" DESC;
-- TO_DATE('21/01/01) - hire_date : O
-- '21/01/01' - hire_date : X
-- 문제6번 부서 50에서 급여 앞에 $를 넣고 3자리마다 ,를 출력
SELECT first_name 이름, TO_CHAR(salary,'$999,999') 급여
FROM employees
Where department_id = 50;
-- 그룹핑
-- 문제1번 SALESMAN(SA_)의 급여 평균, 최고액, 최저액, 합계 출력
SELECT job_id, avg(salary) 평균, max(salary) 최고, min(salary) 최저, sum(salary) 합계
FROM employees
GROUP BY job_id
HAVING job_id LIKE '%SA_%';
-- 문제2번 보너스가 NULL이 아닌 인원수의 보너스의 평균, 부서의 수
SELECT count(commission_pct) 보너스, ROUND(avg(commission_pct*salary)) 평균, count(department_id)
FROM employees
GROUP BY commission_pct
HAVING commission_pct is not NULL
-- 문제3번 부서별 인원수, 평균, 최저, 최고, 합을 출력
SELECT department_id, count(department_id), ROUND(avg(salary)) 평균, max(salary) 최고, min(salary) 최저, sum(salary) 합계
FROM employees
GROUP BY department_id
-- 문제4번 부서별 인원수, 평균, 최저, 최고, 합을 구하고 합을 오름차순으로 나열
SELECT department_id, count(department_id), ROUND(avg(salary)) 평균, max(salary) 최고, min(salary) 최저, sum(salary) 합계
FROM employees
GROUP BY department_id
ORDER BY SUM(salary) ASC;
-- 문제5번 부서별, 업무별 그룹 후 인원수, 급여의 평균, 합을 출력
SELECT department_id, job_id, count(department_id), count(job_id), ROUND(avg(salary)), sum(salary)
FROM employees
GROUP BY department_id, job_id ;
-- 문제6번 부서인원이 4명보다 많은 부서의 부서번호, 인원수, 급여의 합을 출력
SELECT department_id 부서번호, count(department_id) 인원수, sum(salary) "급여의 합"
FROM employees
GROUP BY department_id
HAVING count(*) > 4;
-- 문제7번 급여가 최대 10000이상인 부서의 부서번호, 급여의 평균, 합을 출력
SELECT department_id 부서번호, ROUND(avg(salary)) "급여의 평균", sum(salary) "급여의 합"
FROM employees
GROUP BY department_id
HAVING max(salary) > 10000;
-- 문제8번 업무별 평균 급여가 10000이상인 업무의 업무명, 급여의 평균, 합을 출력
SELECT job_id 업무명, ROUND(avg(salary)) "급여의 평균", sum(salary) "급여의 합"
FROM employees
GROUP BY job_id
HAVING avg(salary) > 10000;
-- 문제9번 전체 월급이 10000초과인 업무의 업무명과 급여의 합을 출력
-- 단, 판매원(SA)는 제외하고 월 급여 합계로 내림차순
SELECT job_id 업무명, sum(salary) "급여의 합"
FROM employees
Where job_id NOT LIKE 'SA%'
GROUP BY job_id
HAVING SUM(salary) > 10000
ORDER BY SUM(salary) DESC;
-- 문제1) 사원들의 이름, 부서번호, 부서명을 출력하라
SELECT e.first_name, e.department_id, d.department_name
FROM employees e, departments d
Where e.department_id = d.department_id;
-- 문제2) 30번 부서의 사원들의 이름,직업,부서명을 출력하라
SELECT e.first_name, e.job_id, d.department_name
FROM employees e, departments d
Where e.department_id = d.department_id
AND e.department_id = 30;
SELECT e.first_name, e.job_id, d.department_name, j.job_title
FROM employees e, departments d, jobs j
Where e.department_id = d.department_id
AND e.job_id = j.job_id
AND e.department_id = 30;
-- 문제3) 커미션을 받는 사원의 이름, 직업, 부서번호,부서명을 출력하라
SELECT e.first_name, e.job_id, e.department_id, d.department_name, e.commission_pct*e.salary
FROM employees e, departments d
Where e.department_id = d.department_id
AND e.commission_pct is not NULL;
-- 문제4) 지역번호 2500 에서 근무하는 사원의 이름, 직업,부서번호,부서명을 출력하라
SELECT e.first_name, e.job_id, e.department_id, d.department_name
FROM employees e, departments d
Where e.department_id = d.department_id
AND d.location_id = 2500;
-- 문제5) 이름에 A가 들어가는 사원들의 이름과 부서이름을 출력하라
SELECT e.first_name, d.department_name
FROM employees e, departments d
Where e.department_id = d.department_id
AND e.first_name LIKE '%A%';
-- 문제6) 사원이름과 그 사원의 관리자 이름을 출력하라
SELECT a.first_name 사원이름, b.first_name "관리자 이름"
FROM employees a, employees b
Where a.manager_id = b.employee_id;
-- 문제7) 사원이름과 부서명과 월급을 출력하는데 월급이 3000 이상인 사원을 출력하라
SELECT first_name, d.department_name, salary
FROM employees e, departments d
Where e.department_id = d.department_id
AND e.salary>=3000;
-- 문제8) TJ 이란 사원보다 늦게 입사한 사원의 이름과 입사일을 출력하라
SELECT b.first_name, b.hire_date
FROM employees a, employees b -- a:TJ b:사원들
Where a.first_name = 'TJ'
AND b.hire_date > a.hire_date
ORDER BY b.hire_date ASC;
-- 문제9) 급여가 3000에서 5000사이인 사원의 이름과 소속부서명 출력하라
SELECT first_name, d.department_name, salary
FROM employees e, departments d
Where e.department_id = d.department_id
AND e.salary BETWEEN 3000 AND 5000;
-- 문제10) ACCOUNTING 부서 소속 사원의 이름과 입사일 출력하라
SELECT e.first_name, e.hire_date
FROM employees e, departments d
Where d.department_id = e.department_id
AND d.department_name = 'Accounting';
-- 문제11) 급여가 3000이하인 사원의 이름과 급여, 근무지를 출력하라.
SELECT first_name, salary, l.street_address
FROM employees e INNER JOIN departments d
ON e.department_id = d.department_id
INNER JOIN locations l
ON d.location_id = l.location_id
Where e.salary <= 3000;
SELECT first_name, salary, l.street_address
FROM employees e, departments d, locations l
Where e.department_id = d.department_id
AND d.location_id = l.location_id
And e.salary <= 3000;
-- 문제1) EMPLOYEES 테이블에서 Kochhar의 급여보다 많은 사원의 정보를 사원번호,이름,담당업무,급여를 출력하라.
SELECT employee_id, first_name, job_id, salary
FROM employees
Where salary > (SELECT salary
FROM employees
Where last_name = 'Kochhar');
-- 문제2) EMPLOYEES 테이블에서 급여의 평균보다 적은 사원의 정보를
-- 사원번호,이름,담당업무,급여,부서번호를 출력하여라.
SELECT employee_id, first_name, job_id, salary, department_id
FROM employees
Where salary < (SELECT avg(salary) FROM employees);
-- 문제3) EMPLOYEES 테이블에서 100번 부서의 최소 급여보다 최소 급여가 많은 다른 모든 부서를 출력하라
SELECT department_id, min(salary)
FROM employees
GROUP BY department_id
HAVING min(salary) > (SELECT min(salary) FROM employees Where department_id = 100);
-- 문제4) 업무별로 최소 급여를 받는 사원의 정보를 사원번호,이름,업무,부서번호를 출력하여라.
-- 단 업무별로 정렬하여라.
SELECT employee_id, first_name, job_id, salary, department_id
FROM employees
Where (job_id, salary) IN (SELECT job_id, min(salary) FROM employees GROUP BY job_id);
-- 문제5) EMPLOYEES 과 DEPARTMENTS 테이블에서 업무가 SA_MAN 사원의 정보를 이름,업무,부서명,근무지를 출력하라.
-- FROM, WHERE절 둘 다 작성
SELECT first_name, job_id, d.department_name, l.city
FROM (SELECT * FROM employees Where job_id = 'SA_MAN') e, departments d, locations l
Where e.department_id = d.department_id
AND d.location_id = l.location_id;
SELECT first_name, job_id, d.department_name, l.city
FROM employees e, departments d, locations l
Where e.department_id = d.department_id
AND d.location_id = l.location_id
AND e.job_id = 'SA_MAN';
-- 문제6) EMPLOYEES 테이블에서 가장 많은 사원을 갖는 MANAGER의 사원번호를 출력하라.
SELECT manager_id, count(*)
FROM employees
GROUP BY manager_id
HAVING count(manager_id) = (SELECT max(count(*)) FROM employees GROUP BY manager_id);
-- 문제7) EMPLOYEES 테이블에서 가장 많은 사원이 속해 있는 부서 번호와 사원수를 출력하라.
SELECT department_id, count(*)
FROM employees
GROUP BY department_id
HAVING count(department_id) = (SELECT max(count(*)) FROM employees GROUP BY department_id);
-- 문제8) EMPLOYEES 테이블에서 사원번호가 123인 사원의 직업과 같고
-- 사원번호가 192인 사원의 급여(SAL)보다 많은 사원의 사원번호,이름,직업,급여를 출력하라.
SELECT employee_id, first_name, job_id, salary
FROM employees
Where job_id = (SELECT job_id FROM employees Where employee_id = 123)
AND salary > (SELECT salary FROM employees Where employee_id = 192);
-- 문제9)직업(JOB)별로 최소급여를 받는 사원의 정보를 사원번호,이름,업무,부서명을 출력하라.
-- 조건1 :직업별로 내림차순정렬
SELECT e.first_name, job_id, department_name, e.salary
FROM employees e, departments d
Where e.department_id = d.department_id
AND (job_id, salary) IN (SELECT job_id, min(salary) FROM employees GROUP BY job_id)
ORDER BY e.job_id DESC;
-- 문제10) EMPLOYEES 테이블에서 (50번 부서의 최소 급여)를 받는 사원보다 많은 급여를 받는
-- 사원의 정보를 사원번호,이름,업무,입사일자,급여,부서번호를 출력하라.
-- 단 50번은 제외
SELECT employee_id, first_name, job_id, hire_date, salary, department_id
FROM employees
Where salary > (SELECT min(salary) FROM employees Where department_id = 50)
AND department_id != 50;
-- 문제11) EMPLOYEES 테이블에서 50번 부서의 최고 급여를 받는 사원 보다 많은 급여를 받는 사원의 정보를 사원번호,이름,업무,입사일자,급여,부서번호를 출력하라.
-- 단50번은 제외
SELECT employee_id, first_name, job_id, hire_date, salary, department_id
FROM employees
Where salary > (SELECT max(salary) FROM employees Where department_id = 50)
AND department_id != 50;
CREATE TABLE DEFT(DEPTNO, DNAME, MGR, LOC)
AS
SELECT department_id, department_name, manager_id, location_id
FROM departments
Where 1=2;
-- insert
INSERT INTO deft(deptno, dname, mgr, loc)
VALUES(10, '기획부', 100, 123);
INSERT INTO deft(deptno, dname) -- 비어있는 데이터 열은 NULL값
VALUES(20, '관리부');
INSERT INTO deft
VALUES(30, 'IT부', 333, 234);
INSERT INTO deft(dname, deptno, mgr, loc) -- 데이터 내용 입력 순서 상관 없음
VALUES('경리부', 40, 200, 345);
INSERT INTO deft -- deft를 비운상태에서 value값을 모두 입력하지 않을 시 에러
VALUES(30, 'IT부', 333);
INSERT INTO deft(deptno, dname, mgr, loc) -- value값에 숫자대신 문자로 넣어도 입력가능
VALUES('40', '영업부', '400', '678');
INSERT INTO deft(deptno, dname, mgr, loc) -- 문자열 ""사용 안됨
VALUES(50, "영업부", 400, 678);
-- delete
DELETE
FROM deft
Where dname = '100';
DELETE
FROM deft
Where mgr IS NULL;
-- update
UPDATE deft -- deptno = 30인 행에서 mgr을 300으로 수정
SET mgr = 300
Where deptno = 30;
UPDATE deft
SET deptno = 50, mgr = 500
Where dname = '영업부';
--온라인 마켓 TABLE을 작성하라.
-- PRODUCT(상품) : 상품번호, 상품명, 상품가격, 상품설명
CREATE TABLE PRODUCT(
PRODUCTID NUMBER PRIMARY KEY,
NAME VARCHAR2(50) NOT NULL,
PRICE NUMBER NOT NULL,
PRODUCT_DESC VARCHAR2(500)
);
-- CONSUMER(소비자) : 소비자 ID, 이름, 나이
CREATE TABLE CONSUMER(
USERID VARCHAR2(50) CONSTRAINT PK_USER_ID PRIMARY KEY,
NAME VARCHAR2(50) NOT NULL,
AGE NUMBER(3) NOT NULL
);
-- CART(장바구니) : 장바구니 번호, 소비자 ID, 상품번호, 수량
CREATE TABLE CART(
CARTID NUMBER 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, '포테이토칩', 2300, '통감자');
INSERT INTO PRODUCT(PRODUCTID, NAME, PRICE, PRODUCT_DESC)
VALUES(102, '카누', 5000, '');
SELECT * FROM PRODUCT;
-- 소비자를 등록합니다.
INSERT INTO CONSUMER(USERID, NAME, AGE)
VALUES('hgd1001', '홍길동', 24);
INSERT INTO CONSUMER(USERID, NAME, AGE)
VALUES('sch2002', '성춘향', 16);
-- 소비자가 쇼핑한 상품을 추가합니다.(장바구니에 담는다)
INSERT INTO CART(CARTID, USERID, PRODUCTID, AMOUNT)
VALUES(1, 'sch2002', 101, 3);
INSERT INTO CART(CARTID, USERID, PRODUCTID, AMOUNT)
VALUES(2, 'sch2002', 102, 10);
INSERT INTO CART(CARTID, USERID, PRODUCTID, AMOUNT)
VALUES(3, 'hgd1001', 100, 1);
-- 쇼핑한 상품을 출력합니다.
SELECT *
FROM cart
WHERE userid = 'sch2002';
SELECT c.userid, c.productid, p.name, p.price
FROM cart c, product p
WHERE c.productid = p.productid
AND c.userid = 'sch2002';
-- 문제 1번
CREATE TABLE TEAM(
TEAM_ID VARCHAR2(10),
LOCATION VARCHAR2(20),
TEAM_NAME VARCHAR2(10),
START_DATE VARCHAR2(30),
PHONE_NUM VARCHAR2(30),
HOMEPAGE VARCHAR2(30),
CONSTRAINT PK_TEAM PRIMARY KEY(TEAM_ID)
);
CREATE TABLE PLAYER(
PLAYER_NUM VARCHAR2(10),
PLAYER_NAME VARCHAR2(20),
ENROLL_DATE VARCHAR2(20),
POSIT VARCHAR2(10),
HEIGHT NUMBER(4, 1),
TEAM_ID VARCHAR2(10),
CONSTRAINT FK_TEAM FOREIGN KEY(TEAM_ID) REFERENCES TEAM(TEAM_ID)
);
Drop table TEAM;
Drop table exercise;
INSERT INTO TEAM(TEAM_ID, LOCATION, TEAM_NAME, START_DATE, PHONE_NUM, HOMEPAGE)
VALUES('A', '서울', 'Seoul', '2002/02/01', '02-0123-4567', 'se@gmail.com');
INSERT INTO TEAM(TEAM_ID, LOCATION, TEAM_NAME, START_DATE, PHONE_NUM, HOMEPAGE)
VALUES('B', '부산', 'Busan', '2004/07/01', '053-7654-0123', 'bu@gmail.com');
INSERT INTO(PLAYER_NUM, PLAYER_NAME, ENROLL_DATE, POSIT, HEIGHT, TEAM_ID)
VALUES('1', '호날두', '2007/12/02', '스트라이커', '185,3', 'A');
INSERT INTO(PLAYER_NUM, PLAYER_NAME, ENROLL_DATE, POSIT, HEIGHT, TEAM_ID)
VALUES('2', '메시', '2006/02/07', '윙포워드', '167,5', 'B');
INSERT INTO(PLAYER_NUM, PLAYER_NAME, ENROLL_DATE, POSIT, HEIGHT, TEAM_ID)
VALUES('7', '손흥민', '2013/05/15', '윙포워드', '181,3', 'B');
INSERT INTO(PLAYER_NUM, PLAYER_NAME, ENROLL_DATE, POSIT, HEIGHT, TEAM_ID)
VALUES('9', '케인', '2012/08/22', '스트라이커', '184,7', 'A');
INSERT INTO(PLAYER_NUM, PLAYER_NAME, ENROLL_DATE, POSIT, HEIGHT, TEAM_ID)
VALUES('15', '알리', '2015/04/27', '미드필더', '178,3', 'A');
INSERT INTO(PLAYER_NUM, PLAYER_NAME, ENROLL_DATE, POSIT, HEIGHT, TEAM_ID)
VALUES('17', '산체스', '2013/05/15', '수비수', '182,6', 'B');
SELECT TEAM_ID, t.PHONE_NUM, t.homepage
FROM TEAM t = PLAYER p
WHERE p.PLAYER_NAME;
---------------------------------------------------------
-- 2번문제
CREATE TABLE PRODUCT(
PRO_NUM VARCHAR2(10),
PRO_NAME VARCHAR2(20),
PRICE INTEGER,
EXPLAIN VARCHAR2(30),
CONSTRAINT PK_PRODUCT PRIMARY KEY(PRO_NUM)
);
Drop table PRODUCT;
CREATE TABLE CONSUMER(
CON_ID VARCHAR2(10),
CON_NAME VARCHAR2(10),
CON_AGE VARCHAR2(10),
CONSTRAINT PK_CONSUMER PRIMARY KEY(CON_ID)
);
CREATE TABLE CART(
SHOPPING_BASKET VARCHAR2(10),
CON_ID VARCHAR2(10),
PRO_NUM VARCHAR2(10),
QUANTITY INTEGER,
CONSTRAINT FK_CART1 FOREIGN KEY(PRO_NUM) REFERENCES PK_PRODUCT(PRO_NUM),
CONSTRAINT FK_CART2 FOREIGN KEY(CON_ID) REFERENCES PK_CONSUMER(CON_ID)
);
INSERT INTO PRODUCT(PRO_NUM, PRO_NAME, PRICE, EXPLAIN)
VALUES('a123', '초코과자', 1500, '달고달고단 과자');
INSERT INTO CONSUMER(CON_ID, CON_NAME, CON_AGE)
VALUES('hello', '홍씨', 27);
'SQL Developer' 카테고리의 다른 글
[SQL Developer] SELECT 2 (0) | 2022.05.23 |
---|---|
[SQL Developer] SELECT 1 (0) | 2022.05.23 |
댓글