[SQL] Oracle

๊ฐ•์ง€์˜ยท2023๋…„ 2์›” 24์ผ
0

SQL

๋ชฉ๋ก ๋ณด๊ธฐ
16/20

์˜ค๋ผํด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐœ๋…๊ณผ ๊ตฌ์กฐ

๐Ÿ“š ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋…

์œ ์šฉํ•œ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ
๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ์ •๋ณด๋Š” ๊ฒ€์ƒ‰, ์ˆ˜์ •, ์‚ญ์ œ์— ์šฉ์ด

๐Ÿ“š ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •์˜

  • ํ†ตํ•ฉ๋œ ๋ฐ์ดํ„ฐ (Integraged Data)
    ๋˜‘๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์›์น™์ ์œผ๋กœ ์ค‘๋ณต๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ
  • ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ (Stored Data)
    ์ปดํ“จ๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์–ต์žฅ์น˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ (์ฃผ๋กœ ํ•˜๋“œ๋””์Šคํฌ ์ €์žฅ)
  • ์šด์˜ ๋ฐ์ดํ„ฐ (Operational Data)
    ์กด์žฌ ๋ชฉ์ ์ด ๋ช…ํ™•ํ•˜๊ณ  ์œ ์šฉ์„ฑ์„ ์ง€๋‹Œ ๋ฐ์ดํ„ฐ
    ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„๋‘” ๊ฐœ๋…์ด ์•„๋‹Œ ๊ฐ™์€ ๋ชฉ์ ์ด ๋ถ„๋ช…ํ•œ ๋ฐ์ดํ„ฐ์—ฌ์•ผ ํ•จ
  • ๊ณต์šฉ ๋ฐ์ดํ„ฐ (Shared Data)
    ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๋“ค์ด ์„œ๋กœ ๋‹ค๋ฅธ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ณต์œ  ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ

๐Ÿ“š ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠน์ง•

  • ์‹ค์‹œ๊ฐ„ ์ ‘๊ทผ์„ฑ (Real-time Accessability)
    ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๋ช‡ ์ดˆ๋ฅผ ๋„˜๊ธฐ์ง€ ๋ง์•„์•ผ ํ•จ
  • ์ง€์†์ ์ธ ๋ณ€ํ™” (Continous Evolution)
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ตœ์‹  ์ •๋ณด๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ์ €์žฅ๋˜์–ด ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•จ
  • ๋™์‹œ ๊ณต์œ  (Concurrent Sharing)
    ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์„œ๋กœ ๋‹ค๋ฅธ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ
  • ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ฐธ์กฐ
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ๋“ค์€ ์ฃผ์†Œ๋‚˜ ์œ„์น˜์— ์˜ํ•ด ์ฐธ์กฐ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ
    ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ’์— ๋”ฐ๋ผ ์ฐธ์กฐํ•ด์•ผ ํ•จ

๐Ÿ“š ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS)

  • ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ •์žฅํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ, ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ์ œ๊ณต ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด
  • ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•ด ์ •๋ณด์˜ ์ฒด๊ณ„์ ์ธ ํ™œ์šฉ ๊ฐ€๋Šฅ
  • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ค‘์žฌ์ž๋กœ, ๋ชจ๋“  ์‘์šฉํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ณต์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ด€๋ฆฌ

๐Ÿ“š ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS)

  • ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ์˜ DBMS
  • ๋ฐ์ดํ„ฐ์ •๋ณด๋ฅผ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์ €์žฅ
  • ํ…Œ์ด๋ธ”์€ 2์ฐจ์› ํ˜•ํƒœ์˜ ํ‘œ์ฒ˜๋Ÿผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ–‰(ROW)์™€ ์—ด(COLRUMN)์œผ๋กœ ๊ตฌ์„ฑ
    ex ) Oracle, Sybase, Infomix, MySQL, Acess, SQL Server
  • ์žฅ์ 
    ์ž‘์„ฑ๊ณผ ์ด์šฉ์ด ๋น„๊ต์  ์‰ฝ๊ณ  ํ™•์žฅ ์šฉ์ด
    ์ฒ˜์Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“  ํ›„ ๊ด€๋ จ๋˜๋Š” ์‘์šฉํ”„๋กœ๊ทธ๋žจ๋“ค์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„, ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์„ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

๐Ÿ“š ๋ฐ์ดํ„ฐ ๋”•์…”๋„ˆ๋ฆฌ(Data Dictionary : DD)

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๊ฒŒ ๋˜๋ฉด ๊ทธ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ
  • ์‚ฌ์šฉ์ž์— ์˜ํ•ด์„œ ์ถ”๊ฐ€, ์‚ญ์ œ, ์ˆ˜์ •๋˜์ง€ ๋ชปํ•˜์—ฌ ์˜ค๋กœ์ง€ ์˜ค๋ผํด ์‹œ์Šคํ…œ์— ์˜ํ•ด์„œ๋งŒ ๊ฐ€๋Šฅ

๐Ÿ“š SQL(Structed Query Language)

  • ์‚ฌ์šฉ์ž์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅด ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ํ‘œ์ค€ ๊ฒ€์ƒ‰ ์–ธ์–ด

์˜ค๋ผํด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ €์žฅ ๊ตฌ์กฐ

๐Ÿ“š ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

๐Ÿ“š ์˜ค๋ผํด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ

๐Ÿ“š ์˜ค๋ผํด ์„œ๋ฒ„(Oracle Server)

ํ†ตํ•ฉ์ ์ธ ์ •๋ณด๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ฐ์ฒด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ
ORACLE Intance(๋ฉ”๋ชจ๋ฆฌ+ํ”„๋กœ์„ธ์Šค)์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(๋ฌผ๋ฆฌ์ ๊ณต๊ฐ„๋ฐ์ดํ„ฐ)๋กœ ๊ตฌ์„ฑ

  • ORACLE Intance(๋ฉ”๋ชจ๋ฆฌ+ํ”„๋กœ์„ธ์Šค)

๐Ÿ“š ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์— ์กด์žฌํ•˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ์ €์žฅ ๊ตฌ์กฐ
์˜ค๋ผํด๊ณผ ๊ฐ™์€ DBMS๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋”˜๊ฐ€์— ์ €์žฅํ•ด ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š”๋ฐ,
์ด๋Ÿฐ ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  ๋…ผ๋ฆฌ์ ์ธ ์ €์žฅ ๊ตฌ์กฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด์ด๋‹ค.

๐Ÿ“š ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด ์ข…๋ฅ˜

๐Ÿ“– ํ…Œ์ด๋ธ”(Table)

  • ํ…Œ์ด๋ธ”(Table)์ด๋ž€?
    Schema Objects์˜ ํ•˜๋‚˜๋กœ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ
    ํ–‰๊ณผ ์—ด์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ, ์ถ”์ถœ ๋“ฑ์„ ํ•œ๋‹ค.

๐Ÿ’ก Schema Object๋ž€?
Schema๋Š” Schema Objects์˜ ๋ชจ์ž„์ด๋ฉฐ ์˜ค๋ผํด์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ์Šคํ‚ค๋งˆ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
์Šคํ‚ค๋งˆ ์˜ค๋ธŒ์ ํŠธ์—๋Š” TABLES, INDEXES, VIEWS, SEQUENCES, SYNONYM, CLUSTERS, DATABASE LINK, PROCEDURES, FUNCTIONS, PACKAGE๋“ฑ์ด ํ•ด๋‹น๋œ๋‹ค.

  • ํ…Œ์ด๋ธ”(Table)์ƒ์„ฑ
    ํ…Œ์ด๋ธ” ์ƒ์„ฑ์€ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๊ตฌ์กฐ(์นผ๋Ÿผ ๋ฐ ๋ฐ์ดํ„ฐํƒ€์ž…, ์ œ์•ฝ์กฐ๊ฑด)๋ฅผ ์ •์˜ํ•˜๊ณ  ์ €์žฅ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๋Š” ๊ณผ์ •
    DDL(Data Definition Language)๋ช…๋ น์ค‘ ํ•˜๋‚˜์ธ Create Table ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉ
CREATE TABLE ํ…Œ์ด๋ธ”๋ช…(
	์ปฌ๋Ÿผ๋ช…1 ํ…Œ์ดํ„ฐ_ํƒ€์ž… [ ์นผ๋Ÿผ์— ๊ฐ’์ด ์•ˆ๋“ค์–ด ์˜ค๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ๋˜๋Š” ์นผ๋Ÿผ์˜ ๊ธฐ๋ณธ๊ฐ’ ][์นผ๋Ÿผ์˜ ์ œ์•ฝ์กฐ๊ฑด(NOT NULL๋“ฑ)],
	์ปฌ๋Ÿผ๋ช…2 ํ…Œ์ดํ„ฐ_ํƒ€์ž… [ ์นผ๋Ÿผ์— ๊ฐ’์ด ์•ˆ๋“ค์–ด ์˜ค๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ๋˜๋Š” ์นผ๋Ÿผ์˜ ๊ธฐ๋ณธ๊ฐ’ ][constrinats],
...
);

ex )

create table addrbook1 (
      name varchar2(10) not null,
      address varchar2(50),
      age number default 0
    );
  • ํ…Œ์ด๋ธ”(Table) ๊ตฌ์กฐ ๋ณ€๊ฒฝ
    DDL(Data Definition Language)๋ช…๋ น์ธ ALTER TABLE ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์ฃผ๋กœ ์ปฌ๋Ÿผํƒ€์ž…์˜ ๋ณ€๊ฒฝ, ๊ธธ์ด์˜ ๋ณ€๊ฒฝ, ์นผ๋Ÿผ ์ถ”๊ฐ€, ์นผ๋Ÿผ ์‚ญ์ œ ๋“ฑ๊ณผ ๊ฐ™์€ ์ผ์„ ํ•œ๋‹ค.
  • ์ปฌ๋Ÿผ ์ถ”๊ฐ€
    sql ALTER TABLE table_name ADD (column_name data_type [DEFAULT expr]โ€ฆ
  • ์ปฌ๋Ÿผ ๋ณ€๊ฒฝ
    sql ALTER TABLE table_name MODIFY (column_name data_type [DEFAULT expr]โ€ฆ)
  • ์ปฌ๋Ÿผ ์‚ญ์ œ
    sql ALTER TABLE table_name DROP COLUMN column_name
  • ํ…Œ์ด๋ธ” ์ด๋ฆ„๋ณ€๊ฒฝ ๋ฐ ์‚ญ์ œ, ์ฃผ์„์ถ”๊ฐ€
RENAME old_table_name TO new_table_name
DROP TABLE [schema.]table_name [CASCADE CONSTRAINTS]

๐Ÿ“– ๋ทฐ (View)

  • ๋ทฐ (View)๋ž€?
    ํ•˜๋‚˜ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•ด ๋งˆ์น˜ ํ…Œ์ด๋ธ”์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด
    ํ•˜๋‚˜ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์ด๋‚˜ ๋‹ค๋ฅธ ๋ทฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
    ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ๋ทฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ…Œ์ด๋ธ”์— ๋‹ด๊ฒจ ์žˆ์ง€๋งŒ ๋งˆ์น˜ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋˜ํ•œ ํ…Œ์ด๋ธ” ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ์ฐธ์กฐํ•ด ์ƒˆ๋กœ์šด ๋ทฐ๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ทฐ (View) ์‚ฌ์šฉ ๋ชฉ์ 
    ์—ฌ๋Ÿฌํ…Œ์ด๋ธ”์˜ JOIN๊ณผ GROUP BY ๊ฐ™์€ ๊ฐ™์€ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ view๋กœ ์ €์žฅ์‹œ์ผœ๋†“์œผ๋ฉด ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ์ €์žฅํ•œ view์˜ ์ •๋ณด๋งŒ ๊ฐ€์ ธ์˜ค๋ฉด ๋˜๋ฏ€๋กœ ์‰ฝ๊ฒŒ ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋ทฐ๋Š” ๋ฐ์ดํ„ฐ ๋ณด์•ˆ์—์„œ๋„ ์œ ๋ฆฌํ•˜๋‹ค.
    ๋ทฐ๋ฅผ ๋ณด๋ฉด ์ปฌ๋Ÿผ๊ณผ ๋ฐ์ดํ„ฐ๋งŒ ๊ณต๊ฐœ๋˜๋ฏ€๋กœ ์›์ฒœ ํ…Œ์ด๋ธ”์€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ๋ทฐ (View) ์ƒ์„ฑ ๋ฐ ์ˆ˜์ •

--๋ฌธ๋ฒ•
CREATE OR REPLACE VIEW [์Šคํ‚ค๋งˆ.][๋ทฐ NAME] AS
SELECT๋ฌธ;

ex )

--์˜ˆ์ œ
CREATE OR REPLACE VIEW v1
AS
    SELECT empno
         , ename
         , job
         , hiredate
      FROM emp
;

๋ทฐ ์ƒ์„ฑ ๋ฐ ์ˆ˜์ •์€ CREATE OR REPLACE VIEW
CREATE๋Š” ์ƒ์„ฑ, REPLACE๋Š” ์ˆ˜์ •์ธ๋ฐ CREATE OR REPLACE๋ผ๊ณ  ๋ช…์‹œํ•ด์คฌ์„๊ฒฝ์šฐ,
ํƒ€๊ฒŸ ๋ทฐ์ด๋ฆ„์ด ์—†์„๊ฒฝ์šฐ CREATE๋ฅผ ํ•˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ REPLACE๋ฅผ ํ•จ

  • ๋ทฐ (View) ์‚ญ์ œ
--๋ฌธ๋ฒ•
DROP VIEW [์Šคํ‚ค๋งˆ.][๋ทฐ NAME]

ex )

--์˜ˆ์ œ
DROP VIEW V1;

๋ทฐ๋Š” ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐ๋งŒ ํ•˜๊ณ  ์žˆ์„ ๋ฟ์ด๋ฏ€๋กœ
๋ทฐ๋ฅผ ์‚ญ์ œํ•˜๋”๋ผ๋„ ์‹ค์ œ ๋ทฐ๊ฐ€ ์ฐธ์กฐํ•˜๊ณ ์žˆ๋Š” ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š์Œ.

  • ๋ทฐ (View) ๊ตฌ์กฐ ํ™•์ธ
--๋ฌธ๋ฒ•
desc [์Šคํ‚ค๋งˆ.][๋ทฐ NAME];

ex )

--์˜ˆ์ œ
desc V1;

๐Ÿ“– ์ธ๋ฑ์Šค

ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด
๋ฐ์ดํ„ฐ๊ฐ€ ์œ„์น˜ํ•œ ์žฅ์†Œ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง„ ์ผ์ข…์˜ ์ฃผ์†Œ๋ก
๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ(ROWID)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
์ธ๋ฑ์Šค๋Š” ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
์ธ๋ฑ์Šค๊ฐ€ ๋งŽ์ด ์ƒ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉด, SELECT๋Š” ๋น ๋ฅผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ(INSERT, UPDATE, DELETE)์€ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜

  • ์ธ๋ฑ์Šค ์ƒ์„ฑ
CREATE [UNIQUE] INDEX [์Šคํ‚ค๋งˆ๋ช….]์ธ๋ฑ์Šค๋ช…
      ON [์Šคํ‚ค๋งˆ๋ช….]ํ…Œ์ด๋ธ”๋ช… (์ปฌ๋Ÿผ1 [, ์ปฌ๋Ÿผ2, ์ปฌ๋Ÿผ3, ...])
-- ๋Œ€๊ด„ํ˜ธ ์ƒ๋žต ๊ฐ€๋Šฅ
--ex )
-- ๋‹จ์ผ ์ธ๋ฑ์Šค
CREATE INDEX emp_ix01 ON emp(hiredate)

-- ๋ณตํ•ฉ ์ธ๋ฑ์Šค (2๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์œผ๋กœ ๊ตฌ์„ฑ, ์ตœ๋Œ€ 32๊ฐœ ์ปฌ๋Ÿผ๊นŒ์ง€ ์ง€์ •ํ•˜์—ฌ ์ƒ์„ฑ ๊ฐ€๋Šฅ)
CREATE INDEX emp_ix02 ON emp(job, deptno)

-- ์œ ๋‹ˆํฌ ์ธ๋ฑ์Šค ์ƒ์„ฑ
CREATE UNIQUE INDEX emp_uk ON emp(empno, mgr)
--UNIQUE ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ธ๋ฑ์Šค๋กœ ์ง€์ •๋œ ์ปฌ๋Ÿผ์€ ํ•ด๋‹น ํ…Œ์ด๋ธ”์—์„œ ์œ ์ผํ•œ ๊ฐ’
  • ์ธ๋ฑ์Šค ์‚ญ์ œ
DROP INDEX ์ธ๋ฑ์Šค๋ช…

๐Ÿ“– ์‹œ๋…ธ๋‹˜

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ณ„์นญ์„ ๋ถ€์—ฌํ•œ ๊ฐ์ฒด
์Šคํ‚ค๋งˆ๋ช…(์†Œ์œ ์ž๋ช…)์„ ๋ถ™์ด์ง€ ์•Š๊ณ  ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ํ…Œ์ด๋ธ”์˜ ์‹œ๋…ธ๋‹˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ

  • ์‹œ๋…ธ๋‹˜ ์ƒ์„ฑ
CREATE [OR REPLACE] 
SYNONYM '[์Šคํ‚ค๋งˆ๋ช…].์‹œ๋…ธ๋‹˜๋ช…'
	FOR '์Šคํ‚ค๋งˆ๋ช….๋Œ€์ƒ์˜ค๋ธŒ์ ํŠธ๋ช…'
  
--โ‘  OR REPLACE : ์‹œ๋…ธ๋‹˜์„ ์ˆ˜์ •ํ•  ๋•Œ DROP ํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด ์ƒ์„ฑ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 
--โ‘ก PUBLIC : PUBLIC๋ฅผ ์ƒ๋žตํ•˜๋ฉด PRIVATE๋กœ ์‹œ๋…ธ๋‹˜์ด ์ƒ์„ฑ๋œ๋‹ค.
--โ‘ข [์Šคํ‚ค๋งˆ๋ช…].์‹œ๋…ธ๋‹˜๋ช… : ์ž์‹ ์˜ ๊ณ„์ •์—์„œ ์‹œ๋…ธ๋‹˜์„ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ [์Šคํ‚ค๋งˆ๋ช…]์€ ์ƒ๋žต์ด ๊ฐ€๋Šฅ
-- ํƒ€ ๊ณ„์ •์—์„œ ์‹œ๋…ธ๋‹˜์„ ์ƒ์„ฑํ•ด ์ค„ ๊ฒฝ์šฐ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค.

--ex)
CREATE SYNONYM employees FOR hr.employees

๐Ÿ’ก PUBLIC๊ณผ PRIVATE์ฐจ์ด

  • PUBLIC : PUBLIC ์‹œ๋…ธ๋‹˜์œผ๋กœ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ ๋Œ€์ƒ ์˜ค๋ธŒ์ ํŠธ์˜ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์Šคํ‚ค๋งˆ์— ํ•ด๋‹น ์‹œ๋…ธ๋‹˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์Šคํ‚ค๋งˆ๋งˆ๋‹ค ์‹œ๋…ธ๋‹˜์„ ์ƒ์„ฑํ•ด ์ค„ ํ•„์š” ์—†์Œ.
  • PRIVATE : ์‹œ๋…ธ๋‹˜์„ ์ƒ์„ฑํ•œ ์Šคํ‚ค๋งˆ์—์„œ๋งŒ ํ•ด๋‹น ์‹œ๋…ธ๋‹˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์‹œ๋…ธ๋‹˜ ์‚ญ์ œ
DROP [PUBLIC] SYNONYM ์‹œ๋…ธ๋‹˜๋ช…;

๐Ÿ“– ์‹œํ€€์Šค

์ผ๋ จ๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๊ฐ์ฒด
์˜ค๋ผํด์—์„œ๋Š” ์ปฌ๋Ÿผ์˜ ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” MAX(์ปฌ๋Ÿผ) + 1 ๋˜๋Š” ์‹œํ€€์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ จ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค.

  • INCREMENT BY : ์‹œํ€€์Šค ์‹คํ–‰ ์‹œ ์ฆ๊ฐ€์‹œํ‚ฌ ๊ฐ’
  • START WITH : ์‹œํ€€์Šค์˜ ์‹œ์ž‘๊ฐ’์ด๋‹ค. (MINVALUE๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ์ปค์•ผ ํ•œ๋‹ค)
  • MINVALUE : ์‹œํ€€์Šค๊ฐ€ ์‹œ์ž‘๋˜๋Š” ์ตœ์†Ÿ๊ฐ’์ด๋‹ค.
  • MAXVALUE : ์‹œํ€€์Šค๊ฐ€ ๋๋‚˜๋Š” ์ตœ๋Œ“๊ฐ’์ด๋‹ค.
  • NOCYCLE | CYCLE : NOCYCLE (๋ฐ˜๋ณต์•ˆํ•จ), CYCLE(์‹œํ€€์Šค์˜ ์ตœ๋Œ“๊ฐ’์— ๋„๋‹ฌ ์‹œ ์ตœ์†Ÿ๊ฐ’ 1๋ถ€ํ„ฐ ๋‹ค์‹œ์‹œ์ž‘)
  • NOCACHE | CACHE : NOCACHE(์‚ฌ์šฉ์•ˆํ•จ), CACHE(์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ ๊ฐ’์„ ํ• ๋‹นํ•ด ๋†“์•„์„œ ์†๋„๊ฐ€ ๋น ๋ฅด๋ฉฐ, ๋™์‹œ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ ์œ ๋ฆฌ)
  • NOORDER | ORDER : NOORDER(์‚ฌ์šฉ์•ˆํ•จ), ORDER(์š”์ฒญ ์ˆœ์„œ๋กœ ๊ฐ’์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐœ์ƒ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€๋งŒ ์กฐ๊ธˆ์˜ ์‹œ์Šคํ…œ ๋ถ€ํ•˜๊ฐ€ ์žˆ์Œ)

CACHE๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ CACHE ๋˜๋Š” CACHE "๊ฐ’"์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.
๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์€ 20์ด๋‹ค. ์ง€์ •ํ•œ ๊ฐ’๋งŒํผ ์‹œํ€€์Šค๋ฅผ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด ๋†“๋Š”๋‹ค.

  • ์‹œํ€€์Šค ์‚ฌ์šฉ
SELECT emp_seq.NEXTVAL
  FROM dual

์‹œํ€€์Šค๋ช….NEXTVAL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ จ๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑ
์‹œํ€€์Šค๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๋‹ˆ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค. (์ฆ๊ฐ€๋œ ๊ฐ’์„ ๋‹ค์‹œ ๋‚ด๋ฆด ์ˆ˜ ์—†๋‹ค)

  • ํ˜„์žฌ ์‹œํ€€์Šค ์ˆœ๋ฒˆ ์กฐํšŒ
SELECT emp_seq.NEXTVAL
  FROM dual

์‹œํ€€์Šค๋ช….CURRVAL์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์‹œํ€€์Šค ์ˆœ๋ฒˆ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
CURRVAL์€ ์—ฌ๋Ÿฌ๋ฒˆ ์‹คํ–‰ํ•ด๋„ ์ˆœ๋ฒˆ์€ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๊ณ , ํ˜„์žฌ ์ˆœ๋ฒˆ๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค

  • ์‹œํ€€์Šค ์ˆ˜์ •
ALTER SEQUENCE ์‹œํ€€์Šค๋ช… INCREMENT BY 2
--์‹œํ€€์Šค ์ฆ๊ฐ€๊ฐ’์„ 1 โ†’ 2๋กœ ๋ณ€๊ฒฝ
ALTER SEQUENCE ์‹œํ€€์Šค๋ช… MAXVALUE 99999
์‹œํ€€์Šค ์ตœ๋Œ“๊ฐ’์„ 9999 โ†’ 99999 ๋ณ€๊ฒฝ
  • ์‹œํ€€์Šค ์‚ญ์ œ
DROP SEQUENCE ์‹œํ€€์Šค๋ช…

๐Ÿ“– ํ•จ์ˆ˜

ํŠน์ • ์—ฐ์‚ฐ์„ ํ•˜๊ณ  ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ์ฒด

  • ํ•จ์ˆ˜ ์ƒ์„ฑ ๋ฐ ์ˆ˜์ •
    CREATE OR REPLACE ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๋ช…์ด ์žˆ๋‹ค๋ฉด ์ˆ˜์ •, ์—†๋‹ค๋ฉด ์ƒ์„ฑ
CREATE OR REPLACE FUNCTION ํ•จ์ˆ˜์ด๋ฆ„(ํŒŒ๋ผ๋ฏธํ„ฐ1์ด๋ฆ„ ํƒ€์ž…, ํŒŒ๋ผ๋ฏธํ„ฐ2์ด๋ฆ„ ํƒ€์ž…...)
RETURN ๋ฐ˜ํ™˜ํ• ํƒ€์ž…
IS
	๋ณ€์ˆ˜ ์„ ์–ธ
BEGIN
	์‹คํ–‰๋ฌธ ์ž‘์„ฑ
	RETURN ๋ฐ˜ํ™˜ํ• ๊ฐ’
END;

-- ex )
--๋‘ ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ฐ›์•„ ํ•ฉ์˜ ๋‘๋ฐฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
CREATE OR REPLACE FUNCTION SUM_TWICE(n1 NUMBER, n2 NUMBER)
RETURN NUMBER
IS
	twice_sum  NUMBER := 0;
BEGIN
	twice_sum := (n1 + n2)*2;
	RETURN twice_sum;
END;
  • ํ•จ์ˆ˜ ์‹คํ–‰
SELECT SUM_TWICE(12,13) 
FROM DUAL;
  • ํ•จ์ˆ˜ ์กฐํšŒ
-- ๋ชจ๋“  ํ•จ์ˆ˜ ์กฐํšŒ
SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION';
  • ํ•จ์ˆ˜ ์‚ญ์ œ
DROP FUNCTION ํ•จ์ˆ˜๋ช…;

๐Ÿ“– ํ”„๋กœ์‹œ์ €

ํ•จ์ˆ˜์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด
์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” SQL์„ ํ”„๋กœ์‹œ์ €๋กœ ๋งŒ๋“  ๋’ค ํ•„์š” ํ• ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ,์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—… ํšจ์œจ์„ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋‹ค.

  • ํ”„๋กœ์‹œ์ € ์ƒ์„ฑ ๋ฐ ์ˆ˜์ •
    CREATE OR REPLACE ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ํ”„๋กœ์‹œ์ €๋ช…์ด ์žˆ๋‹ค๋ฉด ์ˆ˜์ •, ์—†๋‹ค๋ฉด ์ƒ์„ฑ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
CREATE OR REPLACE PROCEDURE ํ”„๋กœ์‹œ์ ธ์ด๋ฆ„ (ํŒŒ๋ผ๋ฏธํ„ฐ1,ํŒŒ๋ผ๋ฏธํ„ฐ2...);
	IS
	๋ณ€์ˆ˜
BEGIN
	์ฟผ๋ฆฌ๋ฌธ
END ํ”„๋กœ์‹œ์ ธ ์ด๋ฆ„;

-- ex )
CREATE OR REPLACE PROCEDURE GET_TIER(in_name IN VARCHAR2,out_tier OUT VARCHAR2)
IS
BEGIN
    SELECT TIER INTO out_tier FROM SUMMONER_TB WHERE NAME = in_name;
EXCEPTION
  --์†Œํ™˜์‚ฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์„ ๋•Œ
  WEHN NO_DATA_FOUND THEN
    out_tier:='NO_SUMMONER_FOUND';
END GET_TIER;

ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์€ in,out,inout์œผ๋กœ ์ด ์„ธ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
in : ์ „๋‹ฌ๋  ๋ฐ์ดํ„ฐ | out : ๊ฒฐ๊ณผ๋กœ ๋‚˜๊ฐˆ ๋ฐ์ดํ„ฐ | inout : in๊ณผ out ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ

  • ํ”„๋กœ์‹œ์ € ์กฐํšŒ
DECLARE
	์ถœ๋ ฅ๋  ๋ณ€์ˆ˜ ์„ ์–ธ
	์‹คํ–‰ํ•  ํ”„๋กœ์‹œ์ €
	์ถœ๋ ฅ๋ฌธ(Optional)
END
-- ex ) faker์˜ ํ‹ฐ์–ด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ์‹œ์ €
DECLARE
out_tier VARCHAR2(10);
BEGIN get_tier('faker',out_tier);
DBMS_OUTPUT.PUT_LINE(out_tier);
END;
  • ํ”„๋กœ์‹œ์ € ์‚ญ์ œ
DROP PROCEDURE ํ”„๋กœ์‹œ์ €๋ช…;

๐Ÿ“– ํŒจํ‚ค์ง€

์šฉ๋„์— ๋งž๊ฒŒ ํ•จ์ˆ˜๋‚˜ ํ”„๋กœ์‹œ์ €๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด๋†“์€ ๊ฐ์ฒด
์ˆ˜ํ•™์— ๊ด€ํ•œ ํ•จ์ˆ˜๋“ค์„ ๋ชจ์•„ ๋†“์€ MATH๋ผ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๊ณ  ๊ทธ ์•ˆ์— ์—ฐ์‚ฐ์„ ํ•˜๋Š” ํ•จ์ˆ˜ ๋˜๋Š” ํ”„๋กœ์‹œ์ € ๋“ฑ์ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
ํŒจํ‚ค์ง€๋Š” ์ปดํŒŒ์ผ์„ ๊ฑฐ์ณ์„œ ์‹คํ–‰๋˜๋ฉฐ, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋ฅผ ์ฐธ์กฐ, ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํŒจํ‚ค์ง€ ์„ ์–ธ๋ถ€
    CREATE OR replace PACKAGE ํŒจํ‚ค์ง€์ด๋ฆ„
CREATE OR replace PACKAGE ํŒจํ‚ค์ง€์ด๋ฆ„
AS
  FUNCTION ํ•จ์ˆ˜์ด๋ฆ„(
    ํŒŒ๋ผ๋ฏธํ„ฐ1์ด๋ฆ„ ํƒ€์ž…,
    ํŒŒ๋ผ๋ฏธํ„ฐ2์ด๋ฆ„ ํƒ€์ž…...)
  RETURN ํƒ€์ž…;
  PROCEDURE ํ”„๋กœ์‹œ์ €์ด๋ฆ„(
  	ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…1 ์ž…์ถœ๋ ฅ ํƒ€์ž…,
    ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…1 ์ž…์ถœ๋ ฅ ํƒ€์ž…...)
END ํŒจํ‚ค์ง€์ด๋ฆ„;

-- ex ) TWONUMBER_MATH๋ฅผ ์กฐํšŒ
CREATE OR replace PACKAGE twonumber_math
AS
  FUNCTION Twonumber_sum(
    n1 NUMBER,
    n2 NUMBER)
  RETURN NUMBER;
  FUNCTION Twonumber_minus(
    n1 NUMBER,
    n2 NUMBER)
  RETURN NUMBER;
END twonumber_math;
  • ํŒจํ‚ค์ง€ ๋ณธ๋ฌธ
    ์„ ์–ธ๋ฌธ์— ์“ด ํ•จ์ˆ˜๋“ค์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค ์‹คํ–‰์ด ์ผ์–ด๋‚  ๊ฒƒ์ธ์ง€๋ฅผ ์ž‘์„ฑ
CREATE OR replace PACKAGE BODY
  ํŒจํ‚ค์ง€์ด๋ฆ„
AS
FUNCTION ํ•จ์ˆ˜์ด๋ฆ„( ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…1 ํƒ€์ž…,
                      ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…2 ํƒ€์ž…...)
  RETURN ํƒ€์ž…
IS
  ๋ณ€์ˆ˜ ์„ ์–ธ
BEGIN
  ์‹คํ–‰๋ฌธ
  RETURN ๋ฐ˜ํ™˜๊ฐ’;
END;
PROCEDURE ํ”„๋กœ์‹œ์ €์ด๋ฆ„( ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…1 ์ž…์ถœ๋ ฅํƒ€์ž… ํƒ€์ž…,
                             ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…2 ์ž…์ถœ๋ ฅํƒ€์ž… ํƒ€์ž…...)
IS
  ๋ณ€์ˆ˜ ์„ ์–ธ
BEGIN
  ์‹คํ–‰๋ฌธ
  RETURN ๋ฐ˜ํ™˜๊ฐ’;
END;
END ํŒจํ‚ค์ง€์ด๋ฆ„;

-- ex )
CREATE OR replace PACKAGE BODY twonumber_math
AS
  -- ๋‘ ๊ฐœ ์ˆซ์ž๋ฅผ ํ•ฉ์ณ์ฃผ๋Š” ํ•จ์ˆ˜
  FUNCTION Twonumber_sum(n1 NUMBER,
                         n2 NUMBER)
  RETURN NUMBER
  IS
    twonum_sum NUMBER := 0;
  BEGIN
      twonum_sum := n1 + n2;

      RETURN twonum_sum;
  END;
  
  -- ๋‘ ๊ฐœ ์ˆซ์ž๋ฅผ ๋นผ๋Š” ํ•จ์ˆ˜
  FUNCTION Twonumber_minus(n1 NUMBER,
                           n2 NUMBER)
  RETURN NUMBER
  IS
    twonum_minus NUMBER := 0;
  BEGIN
      twonum_minus := n1 - n2;

      RETURN twonum_minus;
  END;
 END;

ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์€ in,out,inout์œผ๋กœ ์ด ์„ธ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
in : ์ „๋‹ฌ๋  ๋ฐ์ดํ„ฐ | out : ๊ฒฐ๊ณผ๋กœ ๋‚˜๊ฐˆ ๋ฐ์ดํ„ฐ | inout : in๊ณผ out ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ

  • ํŒจํ‚ค์ง€ ์‹คํ–‰
    ALL_PROCEDURES๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ํ•จ์ˆ˜์™€ ํ”„๋กœ์‹œ์ €๊ฐ€ ๋ชจ๋‘ ์ถœ๋ ฅ
SELECT ํŒจํ‚ค์ง€์ด๋ฆ„.ํ•จ์ˆ˜(ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ’)
FROM ํ…Œ์ด๋ธ”์ด๋ฆ„;
--OR
BEGIN
	ํŒจํ‚ค์ง€์ด๋ฆ„.ํ”„๋กœ์‹œ์ €(ํŒŒ๋ผ๋ฏธํ„ฐ);
END;

-- ex ) ๋‘ ์ˆซ์ž๋ฅผ ์—ฐ์‚ฐํ•˜๋Š” ํŒจํ‚ค์ง€์ธ TWONUMBER_MATH์˜ ํ•จ์ˆ˜๋“ค์„ ์‹คํ–‰
SELECT TWONUMBER_MATH.TWONUMBER_SUM(3,5) ๋‘์ˆซ์ž๋”ํ•˜๊ธฐ
FROM DUAL;

SELECT TWONUMBER_MATH.TWONUMBER_MINUS(3,5) ๋‘์ˆซ์ž๋นผ๊ธฐ
FROM DUAL;

  • ํŒจํ‚ค์ง€ ์กฐํšŒ
    ALL_PROCEDURES๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ํ•จ์ˆ˜์™€ ํ”„๋กœ์‹œ์ €๊ฐ€ ๋ชจ๋‘ ์ถœ๋ ฅ
SELECT *
FROM ALL_PROCEDURES
WHERE OBJECT_NAME = 'ํŒจํ‚ค์ง€์ด๋ฆ„';

-- ex ) TWONUMBER_MATH๋ฅผ ์กฐํšŒ
SELECT *
FROM ALL_PROCEDURES
WHERE OBJECT_NAME = 'TWONUMBER_MATH';
  • ํŒจํ‚ค์ง€ ์‚ญ์ œ
DROP PACKAGE ํŒจํ‚ค์ง€์ด๋ฆ„;

0๊ฐœ์˜ ๋Œ“๊ธ€