์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- OS
- Rust
- ์๊ณ ๋ฆฌ์ฆ
- ์ค๋ผํดDB
- ๋ฌ์คํธ ์์
- ubuntu
- ์๋ฐ
- ๋ฌ์คํธ ํ๋ก๊ทธ๋๋ฐ ๊ณต์ ๊ฐ์ด๋
- ์ด์์ฒด์
- Operating System
- ์ค๋ผํด
- ์๋ฐ ๊ฐ๋
- Python
- Python challenge
- data communication
- C
- ํ์ด์ฌ ์ฒผ๋ฆฐ์ง
- ์๋ฐ ๊ธฐ์ด
- ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ
- ๋ฐฑ์ค ๋ฌ์คํธ
- ๋ฐฑ์ค
- ๋ฌ์คํธ
- ํ์ด์ฌ
- ๋ฐ์ดํฐ ํต์
- java
- Reversing
- ์ฐ๋ถํฌ
- ํ์ด์ฌ ์ฑ๋ฆฐ์ง
- Database
Archives
- Today
- Total
IT’s Portfolio
[Lecture] DataBase - Day 10~11 ๋ณธ๋ฌธ
728x90
๋ฐ์ํ
๐ฅ DataBase - Day 10
๐๐ป [Chapter 13] ๋ทฐ(View)
[01] ๋ทฐ์ ๊ฐ๋
- ๋ทฐ
- ๊ฐ์ ํ ์ด๋ธ(virtual table)
- select ๋ฌธ์ ์ ์ฅํ ๊ฐ์ฒด
- ๋ทฐ์ ์ฌ์ฉ ๋ชฉ์
- ํธ์์ฑ : select ๋ฌธ์ ๋ณต์ก๋ ์ํ
- ๋ณด์์ฑ : ํ ์ด๋ธ์ ์ผ๋ถ ๋ฐ์ดํฐ๋ง ๋ ธ์ถ
[02] ๋ทฐ ์์ฑ
create [or replace][force | noforce] view ๋ทฐ์ด๋ฆ as sub-query
[with check option [constraint ์ ์ฝ์กฐ๊ฑด]]
[with read only]
- ๋ทฐ์ ์์ฑ
- or replace : ๊ฐ์ ์ด๋ฆ์ ๋ทฐ๊ฐ ์์ ๊ฒฝ์ฐ ์ญ์ ํ ๋ค์ ์์ฑ
- force : ๊ธฐ๋ณธ ํ ์ด๋ธ์ ์กด์ฌ ์ฌ๋ถ์ ์๊ด์์ด ๋ทฐ ์์ฑ
- noforce : ๊ธฐ๋ณธ ํ ์ด๋ธ์ด ์กด์ฌํ ๊ฒฝ์ฐ์๋ง ๋ทฐ ์์ฑ, ๊ธฐ๋ณธ ๊ฐ
- with check option : ์ฃผ์ด์ง ์ ์ฝ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ง ์ ๋ ฅ ๋ฐ ์์ ํ์ฉ
- with read only : select ๋ง ๊ฐ๋ฅํ ์ฝ๊ธฐ ์ ์ฉ ๋ทฐ ์์ฑ
grant create view to [account_name];
- ๊ณ์ ์ ๋ทฐ ์์ฑ ๊ถํ ๋ถ์ฌ
[03] ๋ทฐ ์ญ์
drop view ๋ทฐ;
- ๋ทฐ ์ญ์ ์ฟผ๋ฆฌ
๐๐ป [Chapter 16] PL/SQL ๊ธฐ์ด
[01] PL/SQL ๊ตฌ์กฐ
- ๋ธ๋ก(block)
- PL/SQL ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ ๋จ์
- PL/SQL ์ฌ์ฉ ์ ์ฃผ์์ฌํญ
- declare, begin, exception ํค์๋์๋ ; ์ฌ์ฉํ์ง ์์
- PL/SQL ๋ธ๋ก์ ๊ฐ ๋ถ๋ถ์์ ์คํํด์ผ ํ๋ ๋ฌธ์ฅ ๋์๋ ; ์ฌ์ฉ
- PL/SQL ๋ฌธ ๋ด๋ถ์์ ํ ์ค ์ฃผ์๊ณผ ์ฌ๋ฌ ์ค ์ฃผ์ ์ฌ์ฉ ๊ฐ๋ฅ
- PL/SQL ๋ฌธ ์์ฑ์ ๋ง์น๊ณ ์คํํ๊ธฐ ์ํด ๋ง์ง๋ง์ / ์ฌ์ฉ
- PL/SQL ์ฃผ์
-
: ํ ์ค ์ฃผ์/* ... */
: ์ฌ๋ฌ ์ค ์ฃผ์
declare
[์คํ์ ํ์ํ ์ฌ๋ฌ ์์ ์ ์ธ];
begin
[์์
์ ์ํด ์ค์ ์คํํ๋ ๋ช
๋ น์ด];
exception
[PL/SQL ์ํ ๋์ค ๋ฐ์ํ๋ ์ค๋ฅ ์ฒ๋ฆฌ];
end;
- declare : ์ ํ
- ์คํ์ ์ฌ์ฉ๋ ๋ณ์, ์์, ์ปค์ ๋ฑ ์ ์ธ
- begin : ํ์
- ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, select, DML, ํจ์ ๋ฑ ์ ์
- exception : ์ ํ
- PL/SQL ์คํ ๋์ค ๋ฐ์ํ๋ ์ค๋ฅ(์์ธ ์ํฉ) ์ฒ๋ฆฌ
set serveroutput on;
- PL/SQL ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ๊ธฐ ์ํ ์ฌ์ ์์
ํ์
- ๊ธฐ๋ณธ์ ์ผ๋ก PL/SQL ์คํ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ์ง ์์
- ์์ ์ฟผ๋ฆฌ๋ฅผ ์ ์ฉํ๋ฉด ํ๋ฉด ์ถ๋ ฅ ๊ธฐ๋ฅ์ด ํ์ฑํ๋จ
[02] ๋ณ์์ ์์
๋ณ์๋ช
์๋ฃํ := ๊ฐ ๋๋ ํํ์
v_empno number(4) := 7788;
- ๋ณ์ ์ ์ธ
- ๋ณ์๋ช
์ ํ๊ธฐ
- ๊ฐ์ ๋ธ๋ก ์์์ ์๋ณ์๋ ๊ณ ์ ํด์ผ ํจ
- ๋์๋ฌธ์ ๊ตฌ๋ณํ์ง ์์
- ํ ์ด๋ธ๋ช ๊ท์น์ ๋ฐ๋ฆ
- ๋ณ์์ ์๋ฃํ
- ์ค์นผ๋ผํ(scalar type)
- ์ซ์, ๋ฌธ์, ๋ ์ง ๋ฑ๊ณผ ๊ฐ์ด ์ค๋ผํด ๊ธฐ๋ณธ ์๋ฃํ
- ์ฐธ์กฐํ(reference type)
- ํ ์ด๋ธ ์ด์ ์๋ฃํ์ด๋ ํ๋์ ํ ๊ตฌ์กฐ๋ฅผ ์ฐธ์กฐํ๋ ์๋ฃํ
- ์ด ์ฐธ์กฐ : %type
๋ณ์๋ช ํ ์ด๋ธ๋ช .์ด์ด๋ฆ%type
- ํ ์ฐธ์กฐ : %rowtype
๋ณ์๋ช ํ ์ด๋ธ๋ช %rowtype
- ๋ณตํฉํ(composite type)
- ์ปฌ๋ ์ , ๋ ์ฝ๋
- LOBํ(Large Object type)
- ๋์ฉ๋์ ํ ์คํธ, ์ด๋ฏธ์ง, ๋์์ ๋ฑ
- ์ค์นผ๋ผํ(scalar type)
๋ณ์๋ช
constant ์๋ฃํ := ๊ฐ ๋๋ ํํ์
v_tax constant number(1) := 3;
- ์์ ์ ์ธ
๋ณ์๋ช
์๋ฃํ default ๊ฐ ๋๋ ํํ์
v_deptno number(2) default 10;
- ๋ณ์์ ๊ธฐ๋ณธ๊ฐ ์ง์
๋ณ์๋ช
์๋ฃํ not null := ๋๋ default ๊ฐ ๋๋ ํํ์
v_deptno number(2) not null := 10;
v_deptno number(2) not null default 10;
- ๋ณ์์ null ๊ฐ ์ ์ฅ ์ ํ
[03] ์กฐ๊ฑด ์ ์ด๋ฌธ
1.
if <condition> then
{command}
end if;
2.
if <condition> then
{command}
else
{command}
end if;
3.
if <condition> then
{command}
elsif <condition>
{command}
...
else
{command}
end if;
- if ์กฐ๊ฑด๋ฌธ
case ๋น๊ต๊ธฐ์ค
when ๊ฐ1 then
{command};
...
when ๊ฐn then
{command};
end case;
- ๋จ์ case ๋ฌธ
case
when ๊ฐ1 then
{command};
...
when ๊ฐn then
{command};
end case;
- ๊ฒ์ case ๋ฌธ
[04] ๋ฐ๋ณต ์ ์ด๋ฌธ
loop
๋ฐ๋ณต์ํ์์
;
end loop;
- ๊ธฐ๋ณธ loop
- exit ์ฌ์ฉํ์ฌ ๋ฐ๋ณต ์ข ๋ฃ
while ์กฐ๊ฑด์ loop
๋ฐ๋ณต์ํ์์
;
end loop;
- while loop
for i in ์์๊ฐ..์ข
๋ฃ๊ฐ loop
๋ฐ๋ณต์ํ์์
;
end loop;
- for loop
for i in ์์๊ฐ..์ข
๋ฃ๊ฐ loop
continue ...;
๋ฐ๋ณต์ํ์์
;
end loop;
- continue ๋ฌธ, continue-when ๋ฌธ ํฌํจ ๋ฐ๋ณต๋ฌธ
- ์ค๋ผํด 11g๋ถํฐ ์ฌ์ฉ ๊ฐ๋ฅ
๐ฅ DataBase - Day 11
๐๐ป [Chapter 19] ์ ์ฅ ์๋ธํ๋ก๊ทธ๋จ
[01] Stored Procedure : insert ๋ฌธ
create [or replace] procedure ํ๋ก์์ ์ด๋ฆ
is|as
(
๋ณ์์ด๋ฆ ๋ฐ์ดํฐํ์
, -- ํ๋ก์์ ๋ด์์ ์ฌ์ฉํ ๋ณ์ ์ ์ธ
๋ณ์์ด๋ฆ ๋ฐ์ดํฐํ์
,
...
)
begin
๊ธฐ๋ฅ ๊ตฌํ;
end;
- ํ๋ก์์ ์์ฑ ์ฟผ๋ฆฌ
exec ์ ์ฅํ๋ก์์ [(๊ฐ1, ๊ฐ2, ..., ๊ฐn)];
- ํ๋ก์์ ์ ์ ๋ณด ์ถ๊ฐ ์ฟผ๋ฆฌ
create table dept_b
as select * from scott.dept;
select * from dept_b;
create or replace procedure insertdept(
myDeptno in number,
myDname in varchar2,
myLoc in varchar2
)
as
begin
insert into dept_b(deptno, dname, loc)
values(myDeptno, myDname, myLoc);
end;
exec insertdept(50, '๊ฐ๋ฐ๋ถ', 'Seoul');
select * from dept_b;
- insert ๋ฌธ
[02] Stored Procedure : update ๋ฌธ
create or replace procedure updatedept(
myDeptno in number,
myDname in varchar2
)
as
begin
update dept_b
set dname = myDname
where deptno = myDeptno;
end;
exec updatedept(50, '๊ฐ๋ฐ๋ถ-2');
- update ๋ฌธ
create or replace procedure insertorupdatedept(
myDeptno in number,
myDname in varchar2,
myLoc in varchar2
)
as
myCount number;
begin
select count(*) into myCount
from dept_b
where deptno = myDeptno;
if myCount!=0 then
update dept_b set dname = myDname
where deptno = myDeptno;
else
insert into dept_b(deptno, dname, loc)
values(myDeptno, myDname, myLoc);
end if;
end;
exec insertorupdatedept(50, 'ํ๋ณด๋ถ', 'Jeju');
exec insertorupdatedept(50, '๊ฐ๋ฐ๋ถ', 'Jeju');
- ์กฐ๊ฑด์ ์ํด insert ํน์ update
[03] Stored Procedure : delete ๋ฌธ
create or replace procedure deletedept(
myDeptno in number
)
as
begin
delete from dept_b
where deptno = myDeptno;
end;
exec deletedept(50);
- delete ๋ฌธ
set serveroutput on;
create or replace procedure deletedept2(
myDeptno in number
)
as
myCount number;
begin
select count(*) into myCount
from dept_b where deptno = myDeptno;
if myCount!=0 then
dbms_output.put_line('๋ถ์๋ฒํธ๊ฐ '||myDeptno||'์ธ ๋ถ์ ์ ๋ณด๊ฐ ์ญ์ ๋จ.');
delete from dept_b
where deptno = myDeptno;
else
dbms_output.put_line('์ญ์ ํ๋ ค๋ ๋ถ์ ์ ๋ณด๊ฐ ์์');
end if;
end;
exec deletedept2(70);
exec deletedept2(50);
- delete ๋ฌธ
[04] Stored Procedure
create table emp_t
as select * from scott.emp;
set serveroutput on;
create or replace procedure showcomm(
myEmpno in number
)
as
vComm number;
begin
select comm into vComm
from emp_t
where empno = myEmpno;
if vComm!=0 then
dbms_output.put_line('์ง์๋ฒํธ๊ฐ '||myEmpno||'์ธ ์ง์์ comm์ '||vComm);
else
dbms_output.put_line('์ง์๋ฒํธ๊ฐ '||myEmpno||'์ธ ์ง์์ comm์ ์์');
end if;
end;
exec showcomm(7369);
exec showcomm(7499);
- ํน์ ์ง์์ comm ์ถ๋ ฅ
create or replace procedure avgsal(
myAvgsal out number
)
as
begin
select avg(sal) into myAvgsal from emp_t;
end;
set serveroutput on;
declare
vAvgsal number;
begin
avgsal(vAvgsal);
dbms_output.put_line('ํ๊ท ๊ธ์ฌ '||vAvgsal);
end;
- ํ๊ท ๊ธ์ฌ ๋ฐํ
create or replace procedure calcAvgsal
as
vAvgsal number;
begin
select avg(sal) into vAvgsal
from emp_t;
dbms_output.put_line('ํ๊ท ๊ธ์ฌ : '||vAvgsal);
end;
exec calcAvgsal;
- ์ง์๋ค์ ํ๊ท ๊ธ์ฌ ์ถ๋ ฅ
728x90
๋ฐ์ํ
'Development Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Lecture] DataBase - Day 9 (1) | 2023.12.29 |
---|---|
[Lecture] DataBase - Day 6~8 (1) | 2023.12.29 |
[Lecture] DataBase - Day 5 (0) | 2023.12.29 |
[Lecture] DataBase - Day 4 (0) | 2023.12.29 |
[Lecture] DataBase - Day 3 (1) | 2023.12.29 |
Comments