본문 바로가기

학원 일기/학원-ORACLE

db7일차

1.오전은 과제복습 select마무리

 

--insert 문
--테이블 구조 확인
desc departments;


--1st 안되는데?..
insert into departments(department_id,department_name,manager_id,location_id)
values(290, '개발자',200,1700); --1행에 삽입됨

insert into departments(department_id, department_name, location_id) values(300,'디자이너',1700); --이건 2행에삽입
insert into departments(department_id, department_name,location_id) values(400,'안녕',1222); -- 이건 3행에삽입 <,따라서 기존테이블에 있는정보제외하고 삽입한순서대로 레코드가 추가됨nsert 문

--테이블 구조 확인

desc departments;

 

 

--1st 안되는데?..

insert into departments(department_id,department_name,manager_id,location_id)

values(290, '개발자',200,1700); --1행에 삽입됨

 

insert into departments(department_id, department_name, location_id) values(300,'디자이너',1700); --이건 2행에삽입

insert into departments(department_id, department_name,location_id) values(400,'안녕',1222); -- 이건 3행에삽입 <,따라서 기존테이블에 있는정보제외하고 삽입한순서대로 레코드가 추가됨

--2st

 

insert into departments values(330, '퍼블리셔', 200,1700);

 

select * from departments; 

 

--DML문장은 트랜잭션을 통해서 DML이전으로 되돌릴수 있습니다.

ROLLBACK;

SELECT * FROM DEPARTMENTS;

 

--테이블 구조 복사

CREATE TABLE MANAGERS AS (SELECT * FROM EMPLOYEES WHERE 1 = 2); -- where 1=1은 다복사 1=2는 데이터뺴고 속성만복사  <<<<여기서 as는 별칭아님 진짜 create as 구조임lect마무리

 

 

 

--insert 문

--테이블 구조 확인

desc departments;

 

 

--1st 안되는데?..

insert into departments(department_id,department_name,manager_id,location_id)

values(290, '개발자',200,1700); --1행에 삽입됨

 

insert into departments(department_id, department_name, location_id) values(300,'디자이너',1700); --이건 2행에삽입

insert into departments(department_id, department_name,location_id) values(400,'안녕',1222); -- 이건 3행에삽입 <,따라서 기존테이블에 있는정보제외하고 삽입한순서대로 레코드가 추가됨nsert 문

 

--테이블 구조 확인

 

desc departments;

 

 

 

 

 

--1st 안되는데?..

 

insert into departments(department_id,department_name,manager_id,location_id)

 

values(290, '개발자',200,1700); --1행에 삽입됨

 

 

 

insert into departments(department_id, department_name, location_id) values(300,'디자이너',1700); --이건 2행에삽입

 

insert into departments(department_id, department_name,location_id) values(400,'안녕',1222); -- 이건 3행에삽입 <,따라서 기존테이블에 있는정보제외하고 삽입한순서대로 레코드가 추가됨

 

--2st

 

 

 

insert into departments values(330, '퍼블리셔', 200,1700);

 

 

 

select * from departments; 

 

 

 

--DML문장은 트랜잭션을 통해서 DML이전으로 되돌릴수 있습니다.

 

ROLLBACK;

 

SELECT * FROM DEPARTMENTS;

 

 

 

--테이블 구조 복사

 

CREATE TABLE MANAGERS AS (SELECT * FROM EMPLOYEES WHERE 1 = 2); -- where 1=1은 다복사 1=2는 데이터뺴고 속성만복사 <<<<여기서 as는 별칭아님 진짜 create as 구조임

 

SELECT * FROM MANAGERS; -- 현재 필드만 복사완료 (구조복사완료라 봐도되는갓?)

 

--3ND(다른테이블의 특정 행ㅡ 서브쿼리절 INSERT) --위의 insert는 테이블(속성) valaue(값)이지만 insert 테이블 (서브쿼리) << 서브쿼리 사용할때는 value도없고 과정도다름

INSERT INTO MANAGERS  (SELECT *

                        FROM EMPLOYEES

                        WHERE JOB_ID = 'IT_PROG');

                        

INSERT INTO MANAGERS (EMPLOYEE_ID,LAST_NAME,EMAIL,HIRE_DATE,JOB_ID)

            ( SELECT

                     EMPLOYEE_ID,LAST_NAME,EMAIL,HIRE_DATE,JOB_ID

              FROM EMPLOYEES

              WHERE JOB_ID = 'FI_ACCOUNT');

SELECT *

  FROM MANAGERS;

                        

 

SELECT * 

FROM EMPLOYEES

WHERE JOB_ID = 'IT_PROG';

 

 

 

2. insert 

 

롤백있음

 

 

 

3.UPDAET 

 

 

 

* 하기전에 업데이트할 내용이 맞는지 한번더확인하는 습관을 가지라고하심

 

 

 

--아몰라 그냥 다 붙여넣음 복습하삼

 

--insert 문

--테이블 구조 확인

desc departments;

 

 

--1st 안되는데?..

insert into departments(department_id,department_name,manager_id,location_id)

values(290, '개발자',200,1700);

 

insert into departments(department_id, department_name, location_id) values(300,'디자이너',1700);

insert into departments(department_id, department_name,location_id) values(400,'안녕',1222);

--2st

 

insert into departments values(330, '퍼블리셔', 200,1700);

 

select * from departments; 

 

--DML문장은 트랜잭션을 통해서 DML이전으로 되돌릴수 있습니다.

ROLLBACK;

SELECT * FROM DEPARTMENTS;

 

--테이블 구조 복사

CREATE TABLE MANAGERS AS (SELECT * FROM EMPLOYEES WHERE 1 = 2);

 

SELECT * FROM MANAGERS; -- 현재 필드만 복사완료 (구조복사완료라 봐도되는갓?)

 

--3ND(다른테이블의 특정 행ㅡ 서브쿼리절 INSERT)

INSERT INTO MANAGERS  (SELECT *

                        FROM EMPLOYEES

                        WHERE JOB_ID = 'IT_PROG');

                        

INSERT INTO MANAGERS (EMPLOYEE_ID,LAST_NAME,EMAIL,HIRE_DATE,JOB_ID)

            ( SELECT

                     EMPLOYEE_ID,LAST_NAME,EMAIL,HIRE_DATE,JOB_ID

              FROM EMPLOYEES

              WHERE JOB_ID = 'FI_ACCOUNT');

SELECT *

  FROM MANAGERS;

                        

 

SELECT * 

FROM EMPLOYEES

WHERE JOB_ID = 'IT_PROG';

 

--update문

desc employees;

--사본테이블 생성(데이터까지 복사)

create table emps as (select * from employees where 1 = 1); --1 = 1은 다복사한다는뜻임

 

select * from emps;

 

update emps set salary = 30000;

rollback;

 

--update문은 조건절을 반드시 명시 합니다.

select * from emps where employee_id = 100;

update emps set salary = salary * 1.1 where employee_id = 100;

UPDATE emps set phone_number = '511.123.1111',

                hire_date = sysdate,

                commission_pct = 0.1

            where employee_id = 100;  << 한번에 여러개 업데이트도 가능 

-- JOB_ID 가 IT_PROG인 사람의 커미션 0.1로 업데이트

UPDATE emps set commission_pct = 0.1

            where job_id = 'IT_PROG';

 

--where 절에 서브쿼리

update emps set commission_pct = 0.2

where department_id = (select department_id from emps where first_name = 'Donald');

 

select * from emps where department_id = (select department_id from emps where first_name = 'Donald');

 

select * from emps where employee_id = 100;

 

--set 절에 서브쿼리

--update emps set (컬럼대상) = (서브쿼리) where 조건

select job_id, salary, commission_pct, manager_id,department_id from employees where employee_id = 103;

update emps set(job_id, salary, commission_pct, manager_id, department_id) = 

                (select job_id, salary, commission_pct, manager_id,department_id from employees where employee_id = 103)

where employee_id = 102;

 

select * from employees where employee_id = 103 union all

select * from emps where employee_id = 102;

 

rollback;

 

--delete

select * from departments;

 

delete from departments where department_id = 50; -- (employees 테이블에서 50번 부서를 참조하여 사용중이기 때문에 삭제이상) 참조 무결성 제약조건 위배

select * from employees where department_id = 50;

 

select * from emps where employee_id = 105;

delete from emps where employee_id = 105;

select * from emps;

 

--where절의 서브쿼리

select department_id from departments where department_name = 'Shipping';

delete from emps where department_id = (select department_id from departments where department_name = 'Shipping'); << 걍별거없음 진짜 조건대신 서브쿼리 넣은거임

select * from emps;

ROLLBACK;
--2st

insert into departments values(330, '퍼블리셔', 200,1700);

select * from departments; 

--DML문장은 트랜잭션을 통해서 DML이전으로 되돌릴수 있습니다.
ROLLBACK;
SELECT * FROM DEPARTMENTS;

--테이블 구조 복사
CREATE TABLE MANAGERS AS (SELECT * FROM EMPLOYEES WHERE 1 = 2);

SELECT * FROM MANAGERS; -- 현재 필드만 복사완료 (구조복사완료라 봐도되는갓?)

--3ND(다른테이블의 특정 행ㅡ 서브쿼리절 INSERT)
INSERT INTO MANAGERS  (SELECT *
                        FROM EMPLOYEES
                        WHERE JOB_ID = 'IT_PROG');
                        
INSERT INTO MANAGERS (EMPLOYEE_ID,LAST_NAME,EMAIL,HIRE_DATE,JOB_ID)
            ( SELECT
                     EMPLOYEE_ID,LAST_NAME,EMAIL,HIRE_DATE,JOB_ID
              FROM EMPLOYEES
              WHERE JOB_ID = 'FI_ACCOUNT');
SELECT *
  FROM MANAGERS;
                        

SELECT * 
FROM EMPLOYEES
WHERE JOB_ID = 'IT_PROG';

 

2. insert 

롤백있음

 

3.UPDAET 

 

* 하기전에 업데이트할 내용이 맞는지 한번더확인하는 습관을 가지라고하심

 

--아몰라 그냥 다 붙여넣음 복습하삼

--insert 문
--테이블 구조 확인
desc departments;


--1st 안되는데?..
insert into departments(department_id,department_name,manager_id,location_id)
values(290, '개발자',200,1700);

insert into departments(department_id, department_name, location_id) values(300,'디자이너',1700);
insert into departments(department_id, department_name,location_id) values(400,'안녕',1222);
--2st

insert into departments values(330, '퍼블리셔', 200,1700);

select * from departments; 

--DML문장은 트랜잭션을 통해서 DML이전으로 되돌릴수 있습니다.
ROLLBACK;
SELECT * FROM DEPARTMENTS;

--테이블 구조 복사
CREATE TABLE MANAGERS AS (SELECT * FROM EMPLOYEES WHERE 1 = 2);

SELECT * FROM MANAGERS; -- 현재 필드만 복사완료 (구조복사완료라 봐도되는갓?)

--3ND(다른테이블의 특정 행ㅡ 서브쿼리절 INSERT)
INSERT INTO MANAGERS  (SELECT *
                        FROM EMPLOYEES
                        WHERE JOB_ID = 'IT_PROG');
                        
INSERT INTO MANAGERS (EMPLOYEE_ID,LAST_NAME,EMAIL,HIRE_DATE,JOB_ID)
            ( SELECT
                     EMPLOYEE_ID,LAST_NAME,EMAIL,HIRE_DATE,JOB_ID
              FROM EMPLOYEES
              WHERE JOB_ID = 'FI_ACCOUNT');
SELECT *
  FROM MANAGERS;
                        

SELECT * 
FROM EMPLOYEES
WHERE JOB_ID = 'IT_PROG';

--update문
desc employees;
--사본테이블 생성(데이터까지 복사)
create table emps as (select * from employees where 1 = 1); --1 = 1은 다복사한다는뜻임

select * from emps;

update emps set salary = 30000;
rollback;

--update문은 조건절을 반드시 명시 합니다.
select * from emps where employee_id = 100;
update emps set salary = salary * 1.1 where employee_id = 100;
UPDATE emps set phone_number = '511.123.1111',
                hire_date = sysdate,
                commission_pct = 0.1
            where employee_id = 100;
-- JOB_ID 가 IT_PROG인 사람의 커미션 0.1로 업데이트
UPDATE emps set commission_pct = 0.1
            where job_id = 'IT_PROG';

--where 절에 서브쿼리
update emps set commission_pct = 0.2
where department_id = (select department_id from emps where first_name = 'Donald');

select * from emps where department_id = (select department_id from emps where first_name = 'Donald');

select * from emps where employee_id = 100;

--set 절에 서브쿼리
--update emps set (컬럼대상) = (서브쿼리) where 조건
select job_id, salary, commission_pct, manager_id,department_id from employees where employee_id = 103;
update emps set(job_id, salary, commission_pct, manager_id, department_id) = 
                (select job_id, salary, commission_pct, manager_id,department_id from employees where employee_id = 103)
where employee_id = 102;

select * from employees where employee_id = 103 union all
select * from emps where employee_id = 102;

rollback;

--delete
select * from departments;

delete from departments where department_id = 50; -- (employees 테이블에서 50번 부서를 참조하여 사용중이기 때문에 삭제이상) 참조 무결성 제약조건 위배
select * from employees where department_id = 50;

select * from emps where employee_id = 105;
delete from emps where employee_id = 105;
select * from emps;

--where절의 서브쿼리
select department_id from departments where department_name = 'Shipping';
delete from emps where department_id = (select department_id from departments where department_name = 'Shipping');
select * from emps;
ROLLBACK;

'학원 일기 > 학원-ORACLE' 카테고리의 다른 글

db 9일차  (0) 2021.04.08
db8일차  (0) 2021.04.08
db6일차  (0) 2021.04.05
db5일차  (0) 2021.04.02
db4일차  (0) 2021.04.01