Blank?=Falseスマートフォン用の表示で見るBlank?=False「呉下の阿蒙にあらず」をモットーにしたITエンジニアの日々Blank?=Falseこの広告は、90日以上更新していないブログに表示しています。DBMS今回は、一見しただけでは???なテーブルの足し算・引き算をやっていきます。実際にやってみると、あーそういうことか!と相槌を打つことうけあいです。UNION集合演算を使う時の注意点その他の集合演算テーブルの足し算・引き算とは?まずこの言葉、ぱっと意味が思いつきません。イメージにしてみましょう。「集合演算」という名前で呼ばれているものです。集合かよ!集合というイメージになると、1つのテーブルを1つの集合と考えれば、こうですね。ちなみにこういう図をベン図と言うらしいです。(高校で勉強しているはずだけど忘れた...)(ベン図を書く良いツールってあるんですかねぇ)つまり、先ほどのテーブルで言えば、2つのテーブルのデータを1つのテーブルにまとめる、というイメージです。ここで問題になるのは、両方のテーブルにいるBellです。和集合で言えばBellは重複するので1人だけ、でも足し算で考えるとそのまま足し算なら2人になるよねとなりますよね。正解としては、どっちもあり得るというのがSQLの処理になります。UNIONこの和集合、テーブルとテーブルの足し算を実現する機能が、UNIONという句です。文法は、以下のようになっています。TABLE2今までのSQL文と比べると簡単です。2つのSELECT文をUNIONで接続するだけです。イメージと同じデータで実際にやってみます。sec)Bellが1人しかいないので、コレは和集合という形になりますね。内部的には、重複するものは追加しないという感じの処理を行っています。重複を許可するのであれば、ALLオプションをつけることで、すべてのデータを足したテーブルの足し算の結果が得られます。sec)今度はBellが2人いますね。本書では、注意点として以下の2つが紹介されています。集合のデータ元となるすべてのSELECT文の列数は同じである必要があります。User1は全部、User2は名前だけ、ということはできません。sec)あれ?できますね。これは、MySQLが暗黙の型変換をやってくれるので、Age列がVARCHAR型になっているのです。これはMySQLがやってくれているだけで、他のDBMSでできる保証はありません。いったシチュエーションの場合、型変換を行う関数CASTを使うことが推奨されています。BY句は最後に1つだけ、と決められています。BY以上のように怒られてしまいます。差集合を行うEXCEPTという関数が標準SQL規約に定義されており、様々なDBMSで使うことができます。MySQL以外・・・。使う機会がない関数なのか、MySQLは対応していません。デモもできないので解説できません。PostgreSQLに乗り換えようかな。MySQLもろくにわかっていないので、しばらくMySQLでがんばろう!(と、逃げる。)お後がよろしいようで。テーブルの足し算・引き算Tweet広告を非表示にする関連記事2016-11-26NoSQLとは先日、MongoDBの記事を書きました。コントローラとアクション今回は、コントローラとアクションについて学習してきます。個人的にはRDBMSのキモである結合がようやく登場です。今回は引き続きSQLのお勉強、述語を勉強していきます。»Profile某製造業の社内Sler。今のお仕事のメインはAccessとVBA。元パッケージソフト開発者。VBA、そしてRDBやNoSQLを組み合わせたアプリケーション開発を得意としています。福岡県、もしくは熊本県へIターン転職に向けて、DB/NoSQLの業務に関われる会社を探しています。レベル1取得しましたリファクタリングの帽子をかぶるということ勉強は大変だが役に立つCUIなCentOS7にcinnamonを導入するLinuxのコマンドはMacOSXでそのまま動くとは限らない月別アーカイブTwitterGooglePocketはてなブログをはじめよう!stonebeach-dakarさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。