投稿

10月, 2025の投稿を表示しています

10月30日(木)3コマ目

イメージ
今日、やったこと チェック制約 参照整合制約(外部キー制約) 今日のホワイトボード チェック制約(列制約構文) チェック制約 とは、 条件を満たすデータ以外は登録させないための制約 。 キーワード checkにつづく( )内に条件 を書く。 条件はwhere句と同じ。 図 チェック制約(列制約構文) 実際のSQLは以下のとおり。 ①商品マスタテーブル作成 列制約構文で、価格列にチェック制約を設定。 図 商品マスタテーブル作成 ※図中のコメントには”表制約構文”と書いてあるが、列制約構文の誤り ②商品マスタテーブルにデータ登録(正常系) 問題なく登録できる。 図 正常なデータを登録 => 登録できる ③商品マスタテーブルにデータ登録(異常系) チェック制約に引っかかるデータを登録。 エラーになり、登録できない。 図 異常なデータを登録 => エラー発生 => 登録できない なお、更新時もチェックされる。  チェック制約(表制約構文) 表制約構文 では、 複数列で1つの条件 を作ることもできる。 図 チェック制約(表制約構文) 実際のSQLは以下のとおり。 ①商品マスタテーブル作成 表制約構文で、価格列にチェック制約を設定。 図 商品マスタテーブル作成(表制約構文) ②商品マスタテーブルにデータ登録(正常系) 問題なく登録できる。 図 正常なデータを登録 => 登録できる ③商品マスタテーブルにデータ登録(異常系) チェック制約に引っかかるデータを登録。 エラーになり、登録できない。 図 異常なデータを登録 => エラー発生 => 登録できない 参照整合制約(外部キー制約) 今までの制約は1つのテーブル内で完結したが、参照整合制約は 参照する側 のテーブル( 子テーブル ) 参照される側 のテーブル( 親テーブル ) の 両方をチェック する。 なお、参照される側(親テーブル)は主キー列が参照される。 参照する側(子テーブル)の別テーブルの主キーを参照する列 を  外部キー  と呼ぶ。 参照される側(親テーブル)として、グループマスタテーブルを作成、データを登録。 図 グループマスタテーブル(親テーブル)作成 図 グループマスタテーブルにデータ登録 参照整合制約(列制約構文) キーワード  references  のあとに  ...

10月23日(木)3コマ目

イメージ
今日、やったこと 制約 今日のホワイトボード テーブルを作ってみた 以下のSQLでグループマスタテーブルを作成した。 図 グループマスタテーブル作成 作成したグループマスタテーブルにデータを登録、確認した。 図 グループマスタテーブルにデータ登録 正常系 マズい状態のテーブル このグループマスタテーブルは ID列は主キー列 空白のグループ名はない にしたい。下図の状態になるとマズい。 図 グループマスタテーブル マズい状態 試しにNGなデータを登録してみる。 図 グループマスタテーブルにデータ登録 異常系 登録後、検索すると、マズい状態になっている。 図 NGなデータ登録後のグループマスタテーブル検索結果 マズい状態にならないために テーブルのデータがマズい状態にならないようにするために、 制約 がある 。 制約は、テーブル作成時に設定するが、以下の2種類の方法がある。 列定義時に、列を対象に指定する 列制約構文 列定義後、表全体を対象に指定する 表制約構文 この授業では、最終的には表制約構文で指定することにする。 列制約構文 テーブル作成時に、 各列の定義(列名、データ型)と一緒に、列を対象に制約を指定する 方法。 図 列制約構文 グループマスタテーブルを、列制約構文で制約を含めて作り直し。 図 列制約構文で制約指定 作成したグループマスタテーブルに問題がないデータを登録する。 => 登録できる。 図 グループマスタテーブルにデータ登録 正常系 続いて、グループマスタテーブルに問題があるデータを登録する。 => エラー発生。 図 グループマスタテーブルに問題があるデータを登録してみる 制約に違反するため、エラーになり、データは登録されない。 図 グループマスタテーブル確認 制約に名前をつける 制約名は どのテーブルの どの列に どんな内容の制約を設定したか に対してつける名前。 キーワード constraint で制約名を指定する 。 図 列制約構文で制約名をつけて制約指定   図 列制約構文で制約名をつけて制約指定 実行例 正常なデータを登録してみる。=>登録できる。 図 グループマスタテーブルにデータ登録 正常系 問題のあるデータを登録してみる。=>エラー発生。 図 グループマスタテーブルに問題のあるデータを登録 表制約構文 テ...

10月16日(木)3コマ目

イメージ
今日、やったこと データディクショナリ テーブル作成 今日のホワイトボード データディクショナリ オラクルは稼働中のデータ(ユーザーやテーブルの情報など)を管理するために、テーブルを利用している。このようなデータ管理用テーブルを データディクショナリ と呼ぶ。 データディクショナリには命名パターンがある。 図 データディクショナリの命名パターン 良く使うのは ユーザー一覧 テーブル一覧 の2つ。 図 ユーザー一覧のdba_users、テーブル一覧のuser_tables dba_usersでユーザー一覧を確認。 図 dba_users検索結果 [前回のおさらい]ユーザー作成、システム権限付与 ユーザーjiroを作成し、システム権限を付与。 図 ユーザーjiro作成、システム権限付与 テーブル作成 テーブルは  create table  で、各列ごとに列名とデータ型を指定して作成。 図 テーブル作成 実際は、上記にオプションをいろいろと指定する。 図 商品マスタテーブル作成 作成した商品マスタテーブルにデータ登録して、全件検索。 図 データ登録、全件検索 データ型 テーブル作成時に各列のデータ型を指定する。 プログラミング言語と異なり、標準的なデータ型があるものの、データベース(厳密にはDBMS)毎に独自のデータ型を用意している。 〇文字型 C言語では、文字と文字列は別物扱いだが、データベースでは同じ扱い。 固定長  と  可変長  の2種類がある。 図 文字型 〇数値型 C言語では、整数型(int、long等)と実数型(float、double)と分かれているが、データベースでは同じ扱い。 図 数値型 テーブル一覧確認 データディクショナリ  user_tables  でログイン中のユーザーのテーブルを確認できる。 図 データディクショナリuser_tablesでテーブル一覧確認 ユーザー削除 ユーザーの削除は  drop user  で行う。 図 ユーザー削除 ただし、 ユーザーがオブジェクト(テーブルとか)を持っている場合は、cascadeオプションが必要 。 cascadeオプションはユーザー削除時に、ユーザースキーマも一緒に削除する。 図 ユーザー削除 [おまけ]DDLの基本パターン 作成は  create xxx 、変更は  alter xxx 、削除は...

10月2日(木)4コマ目

イメージ
今日、やったこと DMLとDDL ユーザーとオブジェクトの関係 ユーザー作成 表領域 システム権限 今日のホワイトボード この授業でやること 前期のSQLはDML(Data Manipulation Language)。 後期は同じSQLでもDDL(Data Definition Language)を扱う。 DDLはデータベース管理用のSQLで、 ユーザー作成、変更、削除 テーブル作成、変更、削除 などを行う。 図 SQLのDMLとDDL ユーザーとオブジェクト オブジェクトとは、テーブルとか、ビューとか。 オブジェクトは作成ユーザーが持ち主になる。 基本的に自分のオブジェクトしかアクセスできない。 他ユーザーのオブジェクトにアクセスするには、作成ユーザーからアクセスできる権限(オブジェクト権限)を付与してもらう必要がある。 図 ユーザーとオブジェクトの関係 ユーザー作成と表領域 ユーザー作成は   CREATE USER を使って行う。 ユーザー作成時には、そのユーザーが利用する表領域を指定する必要がある。 図 ユーザー作成と表領域 表領域とは、データを保存するところ。 上図の system users temp の3つの表領域の利用目的は覚えておいてください。 DBに接続 WindowsからオラクルDBに接続するには、アプリケーションSQL*Plusを使う。 SQL*Plusはコマンドsqlplusで起動できる。 起動時に接続するDBやユーザー名、パスワードを指定することで、オラクルDBに接続できる。 図 SQL*PlusでオラクルDBに接続 SQL*PlusでオラクルDBに接続後、SQL*Plusのconnコマンドで接続ユーザーの切り替えができる。 図 SQL*Plusのconnコマンドで接続ユーザーを切替 システム権限 CREATE USERでユーザーを作成しただけでは、オラクルDBに接続すらできない。 ユーザーがオラクルDBに対して何ができるか(システム権限)を付与する必要がある。 システム権限は   GRANT システム権限 TO  ユーザー名 で行う。 図 GRANTでユーザーにシステム権限を付与 次回は テーブル作成をします。