LoginSignup
tqwko_05
@tqwko_05

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

DDL/DMLとPLSQLの違いがイマイチ分からない

解決したいこと

題記のとおり、DDLとPLSQLの違い(というよりPLSQLの必要性)がはっきりと分からないので質問させていただきました。
現状どんな理解で何が分からないのか以下に記載いたします。

ネットは調べてみましたが、どれもしっくりこなかったため、参考になりそうなサイトがありましたら、教えていただけると幸いです。

DDLの例(既存のHOGEテーブルにint型のABCカラムを追加する場合)

ALTER TABLE HOGE01 ADD(ABC INT);

いわゆる「DDLを流す」理解です。
ここでは既存のテーブルに対して新しくカラムを追加する方法を例にしています。
SQL操作ツール等を使ってこの一文を実行することで実際のDBにカラム追加できると理解しています。

PLSQL

create or replace function HOGE01(prIn  in HOGE01%ROWTYPE)
return number

    --中略--

    --SQL文開始
    insert
    into    HOGE01 H01
    (
        H01.AAAA
        , H01.BBBB
        , H01.CCCC
        , H01.DDDD
        )

実際のPLSQLはこのような記載になっているとします。
中略していますが、以下の理解で合っていますでしょうか・・?

①HOGE01テーブルに新しいレコードが追加される場合、初期処状態としてAAAA, BBBB, CCCC, DDDDを持ったレコードを追加してほしい。その場合このPLSQLの処理を実行するようにする!というオオモトのSQLファイル

②DDLは初期処理というより、新しくカラムを追加するなど”テーブルの状態を変更するためのSQL文”

⇒PLSQL側にDDLを同じ処理を書く必要がある?

かなり曖昧な書き方になってしまい恐縮ですが、ご教示よろしくお願いいたします。

0

1Answer

Wikipediaの引用で茶を濁す構え。
大事そうなところは太字にしといた。

DDL

データ定義言語(データていぎげんご、英: Data Definition Language, DDL)は、コンピュータ利用者あるいはアプリケーションソフトウェアが、コンピュータのデータを定義するコンピュータ言語もしくはコンピュータ言語要素である。

(snip)

SQLのデータ定義言語の文は関係データベースの構造を定義する。 SQLにより定義される関係データベースの構造は、組(行) 、属性(列) 、関係(表、テーブル) 、索引(インデクス) 、ファイル位置などデータベース固有の特性を含む。

データベースの構造についてはちょっとわかりにくい説明だが、なんてことはなくて、テーブル定義(create tableとかalter tableなど)やインデックス定義(create indexalter index等)のこと。
それ以外にはデータベーストリガーとか、とにかくデータベースの構造定義に関わるものすべてって認識しておけばOK。

DML

データ操作言語(データそうさげんご、英: Data Manipulation Language, DML)は、データベース利用者あるいはアプリケーションソフトウェアが、コンピュータのデータベースに対してデータの検索新規登録削除更新を行うための、データベース言語もしくはデータベース言語要素である。

言い換えれば、select, insert, delete, update文等のこと。
ほかに特定のデータベース方言として存在するmerge文もDML

ストアドプロシージャ

ストアドプロシージャ (stored procedure) は、データベースに対する一連の処理をまとめた手続きにして、関係データベース管理システム (RDBMS) に保存(永続化)したもの。

多くのケースでは、DMLと専用構文を駆使して一連の処理としてまとめたもの。
稀によく、ストアドプロシージャ内でのデータの退避先として、create tabl e(create temporary table)等のDDLで表定義を組み込んだりする。

ストアドプロシージャの文法(専用構文)は、データベースよってまちまち
そのなかで、Oracle用の専用構文がPL/SQL
ほかのデータベースでは違う名称を名付けてたり(PostgreSQLならPL/pgSQL等)もしくは、単にストアドプロシージャと言ったり。

0

Your answer might help someone💌