반응형
-- 1. 테이블 생성
CREATE TABLE employees(
employee_id NUMBER(6) PRIMARY KEY,
first_name VARCHAR2(20),
last_name VARCHAR2(25),
email VARCHAR(25) UNIQUE,
hire_date DATE,
salary NUMBER(8, 2),
department_id NUMBER(4)
);
-- 2. 열(Column) 추가
ALTER TABLE employees
ADD phone_number VARCHAR2(20);
-- 3. 제약조건(Constraint) 추가
ALTER TABLE employees
ADD CONSTRAINT check_salary
CHECK (salary > 0);
-- 4. 열(Column) 수정
ALTER TABLE employees
MODIFY phone_number VARCHAR(30);
-- 5. 제약조건(Constraint) 삭제
ALTER TABLE employees
DROP CONSTRAINT check_salary;
-- 6. 테이블 조회
SELECT *
FROM EMPLOYEES;
-- 7. 열(Column) 추가
ALTER TABLE employees
ADD job_id VARCHAR2(10);
-- 8. 열 위치 변경(*)
-- 9. 예제 Data 입력
INSERT INTO employees
(employee_id, first_name, last_name, email, phone_number,
hire_date, salary, department_id, job_id)
VALUES (1, 'John', 'Doe', 'john.doe@example.com', '555-1234',
TO_DATE('20220101', 'YYYYMMDD'), 4000.00, 10, 'SA_REP');
-- 10. 예제 Data 추가 입력
--INSERT INTO employees
-- (employee_id, first_name, last_name, email, phone_number,
-- hire_date, salary, department_id, job_id)
-- VALUES
-- (2, 'Jane', 'Doe', 'jane.doe@example.com', '555-5678',
-- TO_DATE('20220115', 'YYYYMMDD'), 5000.00, 10, 'SA_REP');
-- (3, 'Bob', 'Smith', 'bob.smith@example.com', '555-9012',
-- TO_DATE('20220130', 'YYYYMMDD'), 6000.00, 10, 'SA_REP');
-- (4, 'Mary', 'Johnson', 'mary.johnson@example.com', '555-3456',
-- TO_DATE('20220201', 'YYYYMMDD'), 7000.00, 20, 'SA_REP');
-- (5, 'Mike', 'Brown', 'mike.brown@example.com', '555-7890',
-- TO_DATE('20220215', 'YYYYMMDD'), 8000.00, 20, 'SA_REP');
-- 11. Join 연산을 위한 추가 테이블 생성
CREATE TABLE departments(
department_id NUMBER(4) PRIMARY KEY,
department_name VARCHAR(3) NOT NULL,
manager_id NUMBER(10),
loacation_id NUMBER(4)
);
-- 12. EMPLOYEES TABLE의 department_id 수정
-- department_id = 10, 20, 30
UPDATE employees
SET department_id = 20
WHERE employee_id = 2;
UPDATE employees
SET department_id = 20
WHERE employee_id = 3;
UPDATE EMPLOYEES
SET DEPARTMENT_ID = 30
WHERE EMPLOYEE_ID = 4;
UPDATE EMPLOYEES
SET DEPARTMENT_ID = 30
WHERE EMPLOYEE_ID = 5;
-- 13. DEPARTMENT_NAME DATA-TYPE 크기 변경
ALTER TABLE DEPARTMENTS
MODIFY DEPARTMENT_NAME VARCHAR2(30);
-- 14. DEPARTMENTS 테이블에 데이터 추가
INSERT INTO DEPARTMENTS
(DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOACATION_ID)
VALUES (10, 'Sales', 123, 1000);
INSERT INTO DEPARTMENTS
(DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOACATION_ID)
VALUES (20, 'Marketing', 234, 2000);
INSERT INTO DEPARTMENTS
(DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOACATION_ID)
VALUES (30, 'Human Resources', 345, 2000);
-- 15. DEPARTMENTS 테이블의 LOACATION_ID(ADDITION ERROR) 수정
ALTER TABLE DEPARTMENTS
RENAME COLUMN LOACATION_ID TO LOCATION_ID;
-- 16. EMPLOYEES 와 DEPARTMENTS 테이블 INNER JOIN 수행
SELECT E.FIRST_NAME, E.LAST_NAME, D.DEPARTMENT_NAME
FROM EMPLOYEES E
JOIN DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;
-- 17. EQUI JOIN과 INNER JOIN의 차이점 확인(+NATURAL JOIN)
-- EQUI JOIN(모든 열 출력, FK열은 중복 출력)
SELECT *
FROM EMPLOYEES E
JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;
-- INNER JOIN
SELECT *
FROM EMPLOYEES E
INNER JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;
-- NATURAL JOIN
SELECT *
FROM EMPLOYEES
NATURAL JOIN DEPARTMENTS;
-- 19. OUTER JOIN
-- LEFT OUTER JOIN
--SELECT *
--FROM EMPLOYEES
--LEFT OUTER JOIN DEPARTMENTS
--ON EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID;
SELECT *
FROM EMPLOYEES E
LEFT OUTER JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;
SELECT *
FROM DEPARTMENTS D
RIGHT OUTER JOIN EMPLOYEES E
ON D.DEPARTMENT_ID = E.DEPARTMENT_ID;
COMMIT;
반응형
'Language > RDBMS' 카테고리의 다른 글
SUMMARY OF DATABASE LANGUAGE (0) | 2023.04.18 |
---|---|
WHERE 조건절 내 IN, OR 연산 관련 (0) | 2023.04.18 |
사용자 생성 및 권한 부여 (0) | 2023.04.17 |
인덱스 기본 (0) | 2023.03.19 |
조인 수행원리 (0) | 2023.03.19 |