節の中で使える特殊な条件演算子を紹介する。射影部分で使える関数で、出力対象となった項目に対して、COUNT(),SUM(),AVG()といった計算を行うもの。集合差などの処理を行う。この結果で2つの集合和が行われるが、集合計算の時に重複している要素が取り除かれるので、(ノート,青),(消しゴム,白),(筆箱,青),(バインダ,緑)の4つが最終的な答えとなる。}SQLの副問い合せ前節の結合処理は時として効率が悪い。このような場合は、副問い合わせを用いる場合も多い。比較演算子は、◯が{...}の中に含まれていれば真となる。中が副問い合わせである。関係する要素が含まれない。この場合、副問い合わせ(商品番号がG2で在庫量が200以上)は先に実行される。}が副問い合わせの結果となる。含まれており、単純に()内を先に実行することはできない。いった副問い合わせは、相関副問い合わせと呼ばれる。WHERE節の判定を行う。WHERE節の選択で残った結果について、射影で商品名,色,価格が抽出される。使って、自分で考えたSQLの命令を2つ実行すること。実行した命令とその意味を説明し、出力された結果と一致することを確認すること。この実行と同じ結果が出力される様なC言語のプログラムを作成し、おなじく結果を確認すること。サンプルプログラム考察として、SQLで書いたプログラムとCで書いたプログラムの違いや便利な点や、Cでのプログラムの速度を早めるにはどう書くと良いかを比較検討すること。先週の、関係データベースの導入説明を終えて、実際のSQLの説明。使われる命令は、以下のものに分類される。英語の文章の様に記述するのが特徴。変数名にハイフン(マイナス記号)が使える。Aから100を引くという意味ではない。Language)で行う。"パスワード"grantテーブルに対する権限を与える命令。データベースシステム全体に関わる権限をユーザに与える。作られたテーブルなどのオブジェクトに関する権限を与える。オブジェクトへの権限を剥奪する。後に示す実験環境では、データベースのシステムにSQLiteを用いている。ネットワーク対応型のデータベースではないため、データベースをアクセスするユーザや権限の概念が存在せず、これらの命令は実行できても無視される。table実際にテーブルを宣言する命令。構造体の宣言みたいなものと捉えると分かりやすい。作られたテーブルはRDBシステムが永続的に保存しているので、最初に一度実行するだけでよい。逆に、運用が始まったら大量のデータが実際に保存される。この段階でデータベースの設計が悪くてテーブルの内容を変更するのであれば、既存の全データを一旦掃き出し、テーブルを定義しなおし吐き出しておいたデータを再読み込みといった面倒な作業が必要となる。これによりKEYに指定した物は、重複した値を格納できない。型には、以下の様なものがある。要素に対応する値をそれぞれ代入する。指定した条件の列の値を更新する。指定した条件の列を削除する。(3)複数のテーブルの直積を処理する結合から構成される。;理解確認キー・プライマリキー・外部キーについて説明せよ。select文における、射影,結合,選択について説明せよ。動作確認をしてください。表す処理で構成されることを示した。言語で書いたらどうなるのかを示す。データを構造体宣言で書いてみる。漢字で宣言はできない。テーブルは省略可能である。これ以外の演算機能は、次週にて紹介予定。直積と結合処理ここで、SQLの最も便利な機能は、直積による結合処理。複数の表を組み合わせる処理。単純な表形式の関係データベースで、複雑なデータを表現できる基本機能となっている。節に複数のテーブルを書くと、それぞれのテーブルの直積(要素の全ての組み合わせ)を生成する処理が行われる。この機能が結合となる。ような選択を記載する。最後に、結果として欲しいデータを抽出する射影を記載する。選択)を理解するために、同じ処理をC言語で書いたらどうなるかを示す。printfの表示内容が射影に相当している。射影の処理では、データの一部分を抽出することから、1件の抽出レコードが同じになることもある。使われていると、昇順に処理が行われない場合も多い。記載する直積のための結合では、2つ以上のテーブルを指定しても良い。言語のプログラムを書き換えると、以下のように表せる。}}このような、複数の表の実体と関係を対応付けた検索を、データベースの専門の人は「データを串刺しにする」という言い方をすることも多い。このようなイメージの繰り返し処理を、数行で分かりやすく記述できている。プライマリキーなら、B木やハッシュなどを用いた効率の良い検索が自動的に行われる。このため、SQLを扱う応用プログラマは、SQLの結合の処理方法は通常はあまり考えなくて良い。データベースの用語など2024年10月7日データベースの機能データベースを考える時、利用者の視点で分類すると、以下の3つの視点の違いがある。応用プログラマ(SQLなどを使って目的のアプリケーションに合わせた処理を行う)、エンドユーザ(データベース処理の専門家でなく、DBシステムのGUIを使ってデータベースを操作する)データベース管理システム(DBMS)では、データとプログラムを分離してプログラムを書けるように、データ操作言語(SQL)で記述する。データは独立して扱えるようにすることで、データへの物理的なアクセス方法があっても、プログラムの変更が不要となるようにする。データベースは、利用者から頻繁に不定期にアクセスされる。このため、データの一貫性が重要となる。障害回復の機能が重要となる。これ以外にも、データベースからデータを高速に扱えるためには、検索キーに応じてインデックスファイルを管理してくれる機能や、データベースをネットワーク越しに使える機能などが求められる。実体のデータをそれぞれの利用者からデータベースを記述したものはスキーマと呼ばれる。そのスキーマも3つに分けられ、これを3層スキーマアーキテクチャと呼ぶ。応用プログラマからは、どのような表の組み合わせで見えるのか、表の中身はどのようなものなのか。データベース管理者からみて、表の中身は、どのようなファイル名でどのような形式でどう保存されているのかデータモデルデータを表現するモデルには、いくつかのモデルがある。データの一部が他のデータ構造と関係している。すべてを表形式で表す。関係データベースは、1970年頃に、E.F.コッド博士によりデータベースのための数学的な理論が確立された。すべての組み合わせのうち、関係があるもの。