KDT/DB

240216 DB - 치환 변수

001cloudid 2024. 2. 16. 17:56
728x90

치환 변수

-- 쿼리 구문은 같지만 데이터 값만 다른 경우

select * from employees where employee_id = 101;
select * from employees where employee_id = 107;
select * from employees where employee_id = 200;

-- 치환 변수 : select * from employees where employee_id = &emp_id;(변수명)

 

그림 1. 치환 변수 예시(숫자)

 

문자나 날짜가 들어와야하는 치환 변수 시 작은 따옴표 안에 작성

select employee_id, last_name, salary, job_id
from employees
where job_id = '&job';

 

그림 2. 치환 변수 예시(숫자, 문자)

그림 2를 보면 대, 소문자를 구분함

select employee_id, last_name, salary, job_id
from employees
where lower(job_id) = lower('&job');

 

 

치환변수는 쿼리구문 어디에든 사용 가능하며, 여러 개 사용할 수 있다.

select employee_id, last_name, &col1
from employees
where employee_id < &emp_number
order by &col2;

 

그림 3.

※order by 절에 꼭 select에 있는 컬럼이 아니라도 가능함

select문 뿐만 아니라 DML에 가능

insert into departments
values(&dept_id, '&dept_name', &mgr_id, &loc_id);

 

그림 4.

아직까지 commit을 하지 않았기 때문에 임시 데이터 상태임

 

자주 사용하는 쿼리 구문을 저장해놓아야 다음에 사용 가능

스크립트 파일 생성 및 실행

sqlplus

스크립트 파일 생성
save /경로
ex) save /home/oracle/new_dept.sql

 

그림 5.

저장된 스크립트 파일 불러와서 스크립트 실행

@/경로/이름
ex) @/home/oracle/new_dept.sql

 

그림 6.

 

sql developer

select department_id, max(salary) as max_sal, min(salary) as min_sal, sum(salary) as sum_sal, trunc(avg(salary)) as avg_sal
from employees
group by department_id
order by department_id;

그림 7.

명령어가 없고 저장하기(ctrl+s)

그림 8.

불러오기

그림 9.

 

sqlpule로 돌아가서 SQL Developer로 저장한 스크립트파일 불러오기

그림 10.


실습에 필요한 테이블 확인 및 가져오기(그림 11)

그림 11.

 

-- 연습문제
insert into my_employee values(1,'Patel','Ralph','rpatel',895);
insert into my_employee values(2,'Dancs','Betty','bdancs',860);
select * from my_employee;
insert into my_employee values(&id,'&last_name','&first_name','&userid',salry);
3
Biri
Ben
bbiri
1100
save /home/oracle/load_emp.sql;
@/home/oracle/load_emp.sql;
4
Newman
Chad
cnewman
750
commit;
update my_employee set last_name = 'Drexler' where id = 3;
update my_employee set salary = 1000 where salary<900;
select * from my_employee;
delete from my_employee where id = 3;
select * from my_employee;
commit;
@/home/oracle/load_emp.sql;
5
Ropeburn
Audrey
aropebur
1550
savepoint sp;
delete from my_employee;
select * from my_employee;
rollback to sp;
select * from my_employee;
commit;

 

728x90