본문 바로가기

Oracle/Oracle 기초

테이블 관리 응용

반응형
--문제1) EMPLOYEES 테이블에서 부서별로 인원수,평균 급여,급여의 합,최소 급여,
--최대 급여를 포함하는 EMP_DEPTNO 테이블을 생성하라.
CREATE TABLE EMP_DEPTNO
AS
SELECT
    department_id, count(*) as count , avg(salary) as avg , sum(salary) as sum , min(salary) as min , max(salary) as max
FROM employees
group by department_id;

CREATE TABLE EMP_DEPTNO("부서 번호", "인원수", "평균 급여", "급여의 합", "최소 급여", "최대 급여")
as 
select department_id, count(*), round(avg(salary)), sum(salary), min(salary), max(salary)
from employees
group by department_id;

SELECT
    *
FROM EMP_DEPTNO;

--문제2) EMP_DEPTNO 테이블에 ETC COLUMN을 추가하라. 단 자료형은 VARCHAR2(50) 사용하라.

ALTER TABLE EMP_DEPTNO
ADD
ETC VARCHAR2(50);

--문제3) EMP_DEPTNO 테이블에 ETC COLUMN을 수정하라. 자료 형은 VARCHAR2(15)로 하라.

ALTER TABLE EMP_DEPTNO
MODIFY
ETC VARCHAR2(15);

DESC EMP_DEPTNO;

--문제4) EMP_DEPTNO 테이블에 있는 ETC 을 삭제하고 확인하라.

ALTER TABLE EMP_DEPTNO
DROP COLUMN ETC;

--문제5) 이전에 생성한 EMP_DEPTNO 테이블의 이름을 EMP_DEPT로 변경하라.

ALTER TABLE EMP_DEPTNO
RENAME TO EMP_DEPT;   

RENAME EMP_DEPTNO
TO
EMP_DEPT;

SELECT
    *
FROM EMP_DEPT;

--문제6) EMP_DEPT 테이블을 삭제하라.
DROP TABLE EMP_DEPT
CASCADE CONSTRAINTS;

--문제7) EMPLOYEES 테이블을 EMP 테이블을 생성하고 복제하도록 하라.
--(데이터 포함)
CREATE TABLE EMP
as
SELECT
    *
FROM employees;

SELECT
    *
FROM emp;

--문제8) EMP 테이블에 row를 추가해 봅니다.
--다만, 반드시 데이터를 기입을 안해도 되면, NULL로 설정하도록 한다.

INSERT INTO EMP
VALUES(277, null, 'ONYOU', 'http200', null, '14/11/13', 'hello', 25000, null, null, null);

--문제9) EMPLOYEES 테이블에서 EMPNO,ENAME,SAL,HIREDATE의 COLUMN만
--선택하여 EMP_10 테이블을 생성(데이터 미포함)한 후 10번 부서만 선택하여 이에 대응하는 값을 EMP_10테이블에 입력하라.

CREATE TABLE EMP_10
AS
SELECT employee_id ,last_name, salary, hire_date 
FROM employees
WHERE 1=2;

SELECT
    *
FROM emp_10;

insert INTO emp_10                                                
SELECT
    employee_id ,last_name, salary, hire_date
FROM employees
where department_id = 10;


--문제10) EMPLOYEES 테이블에서 사원 번호가 107인 사원의 부서를 10번으로
--변경하여라.
CREATE TABLE COPY_EMPLOYEES
AS 
SELECT
    *
FROM employees;

                                          
SELECT
    *
FROM copy_employees;


UPDATE copy_employees
set employee_id = 10
where employee_id = 107;

--문제11) EMPLOYEES 테이블에서 사원 번호가 180인 사원의 부서를 20, 급여를
--3500으로 변경하여라.

UPDATE copy_employees
set department_id = 20, salary = 3500
where employee_id = 180;

--문제12) EMPLOYEES 테이블에서 Smith의 업무와 급여가 Hall의 업무와 급여와
--일치하도록 수정하라.

UPDATE copy_employees
set (job_id, salary) = (select job_id, salary from copy_employees where last_name = 'Hall')
where last_name = 'Smith';



--문제 1번) 테이블명 address,
--id, name, addr, phone, email (BYTE 크기는 자유)
--테이블 생성하기.

CREATE TABLE address(
    id VARCHAR2(30),
    name VARCHAR2(30),
    addr VARCHAR2(30),
    phone VARCHAR2(30),
    email VARCHAR2(30)
);

SELECT
    *
FROM address;

drop table address
CASCADE CONSTRAINTS;

--문제2번) 주소록 테이블의 구조와 데이터를 복사하여 addr_second 테이블을 생성.(구조와 데이터만 복사해서 생성함.)
    CREATE TABLE addr_second
    as
    SELECT
        *
    FROM address
    WHERE 1=2;


--문제 3번) 주소록 테이블에서 id, name 칼럼만 복사하여 
--addr_forth 테이블을 생성 (구조만 복사)
        CREATE TABLE addr_forth
    as
    SELECT
        id, name
    FROM address
    WHERE 1=2;
    
    SELECT
        *
    FROM addr_forth;



--문제4번) Address 테이블에 5개의 데이터를 추가하세요 

    SELECT
        *
    FROM address;

    insert into address(id, name, addr, phone, email)
    VALUES(1, '온유', '경기도광주', '9536', 'http200');
    
    insert into address(id, name, addr, phone, email)
    VALUES(2, 'ㅇㅇ', '경기도광주', '95366', 'http2080');
    
    insert into address(id, name, addr, phone, email)
    VALUES(3, 'ㄴㄴ', '경기도광주', '95363', 'http2700');
    
    insert into address(id, name, addr, phone, email)
    VALUES(4, 'ㅎㅎ', '경기도광주', '95362', 'http2500');
    
    insert into address(id, name, addr, phone, email)
    VALUES(5, 'ㅂㅂ', '경기도광주', '95365', 'http2030');
    
    
-- 문제 5번)Address 테이블에서 id, name 만 가진 Address2 테이블을 만들고
-- 자료를 전부 가지고 오기
CREATE TABLE address2
as
SELECT
    *
FROM address;


--문제 6번) 주소록 테이블에 날짜 타입을 가지는 birth 칼럼을 추가

ALTER table address
add
birth date;


--문제 7번) 주소록 테이블에 문자 타입을 가지는 comments 칼럼을 추가
--기본값은 'No Comment'로 지정하여라.

ALTER table address
add
comments varchar2(30) DEFAULT 'No Comment';


--문제 8번)주소록 테이블에서 comments 칼럼을 삭제
alter table address
drop COLUMN comments;

SELECT
    *
FROM address;

--문제 9번) 주소록 테이블에서
--phone 칼럼의 데이터 타입의 크기를 50으로 증가

alter table address
MODIFY
phone varchar2(50);

                           
반응형

'Oracle > Oracle 기초' 카테고리의 다른 글

Oracle - index  (0) 2019.12.19
Oracle - Sequence  (0) 2019.12.19
Oracle - View  (0) 2019.12.19
Oracle 테이블 생성및 관리하기  (0) 2019.12.18
기본키, Unique , Check, Foregin Key, Not Null, Update, DELETE  (0) 2019.12.18