SQL. 2026-06-26
SELECT *
FROM BUY;
SELECT *
FROM MEMBERS;
-- MEM_ID, MEM_NAME, PROD_NAME, AMOUNT
SELECT
M.MEM_ID,
M.MEM_NAME,
B.PROD_NAME,
B.AMOUNT
FROM MEMBERS M
JOIN BUY B ON M.MEM_ID = B.MEM_ID
WHERE MEM_NAME = '마마무'
ORDER BY AMOUNT ASC;
-- 서브쿼리
-- 단일 행 서브쿼리
SELECT *
FROM EMPLOYEES A
WHERE A.SALARY = (
SELECT SALARY
FROM EMPLOYEES
WHERE LAST_NAME = 'De Haan'
);
SELECT *
FROM EMPLOYEES A
WHERE A.SALARY = 17000;
-- 서브쿼리 : IN
SELECT *
FROM EMPLOYEES A
WHERE A.SALARY IN (
SELECT MIN(SALARY)
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
)
ORDER BY A.SALARY DESC;
SELECT MAX(HEIGHT)
FROM MEMBERS;
SELECT MEM_NAME, HEIGHT
FROM MEMBERS
WHERE HEIGHT = (
SELECT MAX(HEIGHT)
FROM MEMBERS
);
-- 서브쿼리
-- 다중 열 서브쿼리
SELECT *
FROM EMPLOYEES A
WHERE (A.JOB_ID, A.SALARY)IN (
SELECT JOB_ID, MIN(SALARY) 그룹별급여
FROM EMPLOYEES
GROUP BY JOB_ID
)
ORDER BY A.SALARY DESC;
-- DML
-- INSERT : 행 삽입하기
INSERT INTO DEPARTMENTS(DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID)
VALUES
(271, 'Sample_Dept', 200, 1700);
-- INSERT 생략형
-- 모든 컬럼 정보가 있을시 생략 가능
-- NULL값인 곳은 ''로 빈 정보 입력 가능
INSERT INTO departments
VALUES
(273, 'Sample_Dept', '',1700);
COMMIT; -- DML 작업확정
ROLLBACK; -- 보류중이었던 모든 DML 변경사항이 폐기되고 이전의 상태가 복원
-- DML
-- UPDATE : 행 갱신하기
UPDATE departments
SET manager_id = 201,
LOCATION_ID = 1800
WHERE department_name = 'Sample_Dept';
UPDATE departments
SET department_name = '홍길동'
WHERE department_id = 271;
UPDATE departments
SET (departments.manager_id, departments.location_id) =
(SELECT departments.manager_id, departments.location_id
FROM departments
WHERE departments.department_id = 40)
WHERE departments.department_name = 'Sample_Dept';
-- DML
-- DELETE : 행 삭제하기
DELETE FROM departments
WHERE departments.department_id IN (
SELECT departments.department_id
FROM departments
WHERE departments.department_name = 'Sample_Dept');
DELETE FROM departments
WHERE departments.department_name = 'Sample_Dept';