가입하다
기존 문법 | ANSI 문법 |
a.column, b.column 선택 표 a, 표 b에서 여기서 a.column = b.column |
a.column, b.column 선택 테이블 a 내부 조인 테이블 b에서 (a.column = b.column) 어디… |
a.A1, b.B1 선택 ~에서 여기서 a.A1 = b.B1(+) |
a.A1, b.B1 선택 의 왼쪽 외부 연결 비 ~에 a.A1=b.B1 의 오른쪽 외부 조인 비 ~에 a.A1=b.B1 의 가득한 외부 연결 비 ~에 a.A1=b.B1 |
예 | ||
직원 이름, 부서. 부서 이름 선택 직원, 부서에서 여기서 Employee.DeptCode = Dept.DeptCode(+) |
직원 이름, 부서. 부서 이름 선택 직원의 외부 부서 퇴사 직원.부서 코드 = 부서.부서 코드 |
|
직원 이름, 부서. 부서 이름 선택 직원, 부서에서 여기서 직원.부서 코드(+) = 부서.부서 코드 |
직원 이름, 부서. 부서 이름 선택 맨 오른쪽 직원 부서에서 연결 직원.부서 코드 = 부서.부서 코드 |
|
직원 이름, 부서. 부서 이름 선택 직원, 부서에서 여기서 Employee.DepartmentCode(+) = Department.DepartmentCode(+) |
직원 이름, 부서. 부서 이름 선택 직원의 전체 외부 조인 부서에서 직원.부서 코드 = 부서.부서 코드 |
|
========================================
PL/SQL | ||
코드 블록 – 이름 없는 블록 – 기능/절차 |
설명하다 변수 문 시작하다 구현 선언 끝; |
dbms_output.put_line(); = system.out.println(); = 문서.쓰기(); 콘솔.로그() |
언어 | C/C++/자바/JS | 파스칼/코볼 |
작업 관리자 | = | := |
비교 연산자 | == | = |
변수 유형 선언 변수 이름 테이블명.열명%type:=’제퍼슨’; |
- SQL 결과가 하나만 있는 경우 into 문을 사용합니다.
- SQL 결과가 여러 개인 경우 커서 사용
Explain = Explain / 설명할 변수가 없으면 Explain을 사용하지 마십시오.
declare
i number;
begin
i:=100;
dbms_output.put_line(i);
end;
/
보기 => dbms 출력 => + 부호를 눌러 db에 연결
declare
a integer := 2**2*3**2;
begin
dbms_output.put_line('a="||to_char(a));
end;
/
declare
vs_emp_name varchar2(80); --employees.emp_name%type;
vs_dep_name varchar2(80); -- departments.department_name%type;
begin
select a.emp_name, b.department_name
into vs_emp_name, vs_dep_name --값 1개만 저장가능
from employees a, departments b
where a.department_id = b.department_id and a.employee_id =100;
dbms_output.put_line(vs_emp_name||' - '||vs_dep_name);
end;
/
====================================
if 문 |
만약에 조건식 1 그 다음에 구현 진술(들); 그렇지 않으면 조건식 2 그 다음에 구현 진술(들); 다른 구현 진술(들); 종료 경우; |
declare
vn_mid employees.manager_id%type;
vs_self employees.emp_name%type;
vs_name employees.emp_name%type;
begin
select emp_name,manager_id into vs_self,vn_mid from employees where employee_id = 100;
if vn_mid is null then
dbms_output.put_line('직원명='||vs_self||',매니저가 없습니다.
');
else
select emp_name into vs_name from employees where employee_id = vn_mid;
if vs_name is null then
dbms_output.put_line('직원명='||vs_self||',매니저이름을 찾을 수 없습니다.
');
else
dbms_output.put_line('직원명='||vs_self||',매니저='||vs_name);
end if;
end if;
end;
급여가 가장 낮은 사람의 직원 번호, 이름 및 관리자 이름을 찾기 위해 pl/sql을 작성하십시오.
declare
vn_eid employees.employee_id%type; --사번
vs_name employees.emp_name%type; --이름
vs_mname employees.emp_name%type; --매니저이름
vn_mid employees.manager_id%type; --매니저아이디
begin
select employee_id, emp_name, manager_id into vn_eid,vs_name,vn_mid from employees
where salary = (select min(salary) from employees);
if vs_name is null then
dbms_output.put_line('찾을 수 없습니다.
');
else
select emp_name into vs_mname from employees where employee_id = vn_mid;
if vs_mname is null then
dbms_output.put_line('사번 : '||vn_eid||', 이름 : '||vs_name||', 매니저를 찾을 수 없습니다.
');
else
dbms_output.put_line('사번 : '||vn_eid||', 이름 : '||vs_name||', 매니저 : '||vs_mname);
end if;
end if;
end;
/
declare
eid employees.employee_id%type;
ename employees.emp_name%type;
mname employees.emp_name%type;
payment employees.salary%type;
begin
select a.employee_id,a.emp_name,a.salary,b.emp_name
into eid,ename,payment,mname
from employees a, employees b
where a.salary = (select min(salary) from employees)
and a.manager_id=b.employee_id;
dbms_output.put_line('사번='||eid||',이름='||ename||', 월급='||payment||',매니저='||mname);
end;
/
========================================
사례 진술 |
|
사례 변수/표현식/열 이름 만약에 가치1 그 다음에 실행 선언 1 만약에 가치 2 그 다음에 실행 선언 2 다른 실행 선언 3 끝 |
사례 만약에 조건식 1 그 다음에 실행 선언 1 만약에 조건식 2 그 다음에 실행 선언 2 다른 실행 선언 3 끝 |
=======================================
리본 | |
리본 구현 선언 언제 내리다 조건식 최종 루프; |
~하는 동안 조건문 리본 구현 진술(들); 최종 루프; |
declare
i number := 0;
begin
loop
dbms_output.put_line('i='||i);
i:=i+1;
exit when i>10;
end loop;
dbms_output.put_line('Program terminated');
end;
/
곱셈 구구표
declare
i number := 1;
j number := 1;
begin
loop
i:=i+1;
j:=1;
loop
dbms_output.put_line(i||'x'||j||'='||i*j);
j:=j+1;
if j>9 then
dbms_output.new_line;
exit;
end if;
end loop;
exit when i>=9;
end loop;
end;
/
=================================
진술에 |
~을 위한 변하기 쉬운 ~ 안에 시작 값..종료 값 리본 실행문; 최종 루프; |
declare
i number :=2;
j number :=1;
begin
for i in 2..9
loop
for j in 1..9
loop
dbms_output.put_line(i||'x'||j||'='||i*j);
end loop;
dbms_output.new_line;
end loop;
end;
/
======================
계속해
소수 찾기
declare
i number :=2;
j number :=2;
begin
for i in 2..1000
loop
for j in 2..i
loop
if mod(i,j)=0 then exit;
end if;
end loop;
if i=j then dbms_output.put_line(i);
end if;
end loop;
end;
/
정답은 아니니 내일 해보겠습니다…