「SQL」の編集履歴(バックアップ)一覧はこちら

SQL」(2013/02/15 (金) 10:42:22) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*◆&this_page() #contents() ---- **命令 -INSERT INSERT INTO テーブル名(カラム名1, カラム名2) VALUES(値1, 値2) カラム名1と値1が対応。 レコード(行データ)を追加するので、必須カラムがないとエラーになる。 -UPDATE UPDATE テーブル名 SET カラム名 = 値, カラム名 = 値 WHERE ~ -DELETE DELETE FROM テーブル名 WHERE (NOT) ~ -CREATE CREATE TABLE テーブル名 ( カラム名 NUMBER(3) ※整数桁、少数桁 カラム名 VARCHAR2(50) ※2バイト文字、カッコ内はバイト数 ) -DROP DROP TABLE テーブル名 テーブル削除 -DESC DESC テーブル名 テーブル構造を取得 -UNION -INSERTSECT -MINUS **関数 -ROW_COUNT() と ROWNUM 行インデックスを取得 -BETWEEN カラム名 BETWEEN 数字1 AND 数字2 カラムが数字1から数字2の間の場合…WHERE句内で使う -CASE CASE カラム名  WHEN 比較する値 THEN 値 END -LIKE カラム名 LIKE '%値%' -MONTHS_BETWEEN 年月の差(月単位) 12で割れば年 -SYSDATE 日付取得 - IN WHERE カラム名 IN (値, 値) ** INNER JOIN 最初のテーブル(左) 【TBL_CHARACTOR】 |ID|NAME|SEX| |1|左 翔太郎|男| |2|園咲 来人|男| |3|園崎 若菜|女| |4|須藤 霧彦|男| |5|園咲 冴子|女| 結合するテーブル(右) 【TBL_BAG】 |ID|NAME|COLOR|CHARA_ID| |1|お買い物バッグ|黄色|3| |2|リュック|黒|1| |3|ティファニーのバッグ|ゴールド|5| |4|コーチのバッグ|ピンク|3| |5|スーツケース|シルバ|4| ◆行が減る条件 ※紐づくIDが結合したテーブルに存在しない SELECT T_CHR.ID AS C_ID , T_CHR.NAME AS C_NAME , T_BAG.ID AS B_ID , T_BAG.NAME AS B_NAME FROM TBL_CHARACTOR T_CHR INNER JOIN TBL_BAG T_BAG ON T_BAG.CHARA_ID = T_CHR.ID WHERE T_CHR.SEX = '男' ◆結果 |C_ID|C_NAME|B_ID|B_NAME| |1|左 祥太郎|2|リュック| |4|須藤 霧彦|5|スーツケース| ◆解説 WHERE句で今度は男だけで絞ってるので、 そのままだと祥太郎と来人と霧彦さんの3人の筈です。 でも、結果は2行しかありません。 右にくっついてるテーブル(TBL_BAG)に 来人のIDの2がありません。 来人はバッグは持ってないようです。 なので、来人の行がなくなってしまっています。 ◆行が増える条件 ※紐づくIDを複数持つテーブルを結合する SELECT T_CHR.ID AS C_ID , T_CHR.NAME AS C_NAME , T_BAG.ID AS B_ID , T_BAG.NAME AS B_NAME FROM TBL_CHARACTOR T_CHR INNER JOIN TBL_BAG T_BAG ON T_BAG.CHARA_ID = T_CHR.ID WHERE T_CHR.SEX = '女' ※さっきのSQL文を条件女のみにしただけです。 ◆結果 |C_ID|C_NAME|B_ID|B_NAME| |3|園崎 若菜|1|お買い物バッグ| |3|園崎 若菜|4|コーチのバッグ| |5|園崎 冴子|3|ティファニーのバッグ| ◆解説 WHERE句で女だけに絞ってるので、 そのままだと若菜と冴子の二人だけです。 でも、結果は3行あります。 これは右にくっついてるテーブル(TBL_BAG)の 紐づくID(INNER JOINのONで指定したID)に 同じのが複数あるからです。 若菜は「お買い物バッグ」と「コーチのバッグ」の 二つを持っています。 すると、2行必要なので左のテーブルの値は コピーされて全て同じデータが入ります。 ◆結合して増えて減ってるテーブルサンプル SELECT T_CHR.ID AS C_ID , T_CHR.NAME AS C_NAME , T_BAG.ID AS B_ID , T_BAG.NAME AS B_NAME FROM TBL_CHARACTOR T_CHR INNER JOIN TBL_BAG T_BAG ON T_BAG.CHARA_ID = T_CHR.ID ※条件を消したので、↑のふたつの結果が一緒になっただけです。 ◆結果 |C_ID|C_NAME|B_ID|B_NAME| |1|左 祥太郎|2|リュック| |3|園崎 若菜|1|お買い物バッグ| |3|園崎 若菜|4|コーチのバッグ| |4|須藤 霧彦|5|スーツケース| |5|園崎 冴子|3|ティファニーのバッグ| ◆解説 さっきと一緒ですが、 来人はTBL_BAGにIDがないので、データ(行)がありません。 若菜はTBL_BAGに2箇所にIDがあるので、 データ(行)が2件あります。 結果、データが1減って1増えてるので行数は同じでした。 **SQLを早くする [[参考>>http://www.geocities.jp/mickindex/database/db_optimize.html]]
*◆&this_page() #contents() ---- **命令 -INSERT INSERT INTO テーブル名(カラム名1, カラム名2) VALUES(値1, 値2) カラム名1と値1が対応。 レコード(行データ)を追加するので、必須カラムがないとエラーになる。 -UPDATE UPDATE テーブル名 SET カラム名 = 値, カラム名 = 値 WHERE ~ -DELETE DELETE FROM テーブル名 WHERE (NOT) ~ -CREATE CREATE TABLE テーブル名 ( カラム名 NUMBER(3) ※整数桁、少数桁 カラム名 VARCHAR2(50) ※2バイト文字、カッコ内はバイト数 ) -DROP DROP TABLE テーブル名 テーブル削除 -DESC DESC テーブル名 テーブル構造を取得 -UNION -INSERTSECT -MINUS **関数 -ROW_COUNT() と ROWNUM 行インデックスを取得 -BETWEEN カラム名 BETWEEN 数字1 AND 数字2 カラムが数字1から数字2の間の場合…WHERE句内で使う -CASE CASE カラム名  WHEN 比較する値 THEN 値 END -LIKE カラム名 LIKE '%値%' -MONTHS_BETWEEN 年月の差(月単位) 12で割れば年 -SYSDATE 日付取得 - IN WHERE カラム名 IN (値, 値) ** INNER JOIN 最初のテーブル(左) 【TBL_CHARACTOR】 |ID|NAME|SEX| |1|左 翔太郎|男| |2|園咲 来人|男| |3|園崎 若菜|女| |4|須藤 霧彦|男| |5|園咲 冴子|女| 結合するテーブル(右) 【TBL_BAG】 |ID|NAME|COLOR|CHARA_ID| |1|お買い物バッグ|黄色|3| |2|リュック|黒|1| |3|ティファニーのバッグ|ゴールド|5| |4|コーチのバッグ|ピンク|3| |5|スーツケース|シルバ|4| ◆行が減る条件 ※紐づくIDが結合したテーブルに存在しない SELECT T_CHR.ID AS C_ID , T_CHR.NAME AS C_NAME , T_BAG.ID AS B_ID , T_BAG.NAME AS B_NAME FROM TBL_CHARACTOR T_CHR INNER JOIN TBL_BAG T_BAG ON T_BAG.CHARA_ID = T_CHR.ID WHERE T_CHR.SEX = '男' ◆結果 |C_ID|C_NAME|B_ID|B_NAME| |1|左 祥太郎|2|リュック| |4|須藤 霧彦|5|スーツケース| ◆解説 WHERE句で今度は男だけで絞ってるので、 そのままだと祥太郎と来人と霧彦さんの3人の筈です。 でも、結果は2行しかありません。 右にくっついてるテーブル(TBL_BAG)に 来人のIDの2がありません。 来人はバッグは持ってないようです。 なので、来人の行がなくなってしまっています。 ◆行が増える条件 ※紐づくIDを複数持つテーブルを結合する SELECT T_CHR.ID AS C_ID , T_CHR.NAME AS C_NAME , T_BAG.ID AS B_ID , T_BAG.NAME AS B_NAME FROM TBL_CHARACTOR T_CHR INNER JOIN TBL_BAG T_BAG ON T_BAG.CHARA_ID = T_CHR.ID WHERE T_CHR.SEX = '女' ※さっきのSQL文を条件女のみにしただけです。 ◆結果 |C_ID|C_NAME|B_ID|B_NAME| |3|園崎 若菜|1|お買い物バッグ| |3|園崎 若菜|4|コーチのバッグ| |5|園崎 冴子|3|ティファニーのバッグ| ◆解説 WHERE句で女だけに絞ってるので、 そのままだと若菜と冴子の二人だけです。 でも、結果は3行あります。 これは右にくっついてるテーブル(TBL_BAG)の 紐づくID(INNER JOINのONで指定したID)に 同じのが複数あるからです。 若菜は「お買い物バッグ」と「コーチのバッグ」の 二つを持っています。 すると、2行必要なので左のテーブルの値は コピーされて全て同じデータが入ります。 ◆結合して増えて減ってるテーブルサンプル SELECT T_CHR.ID AS C_ID , T_CHR.NAME AS C_NAME , T_BAG.ID AS B_ID , T_BAG.NAME AS B_NAME FROM TBL_CHARACTOR T_CHR INNER JOIN TBL_BAG T_BAG ON T_BAG.CHARA_ID = T_CHR.ID ※条件を消したので、↑のふたつの結果が一緒になっただけです。 ◆結果 |C_ID|C_NAME|B_ID|B_NAME| |1|左 祥太郎|2|リュック| |3|園崎 若菜|1|お買い物バッグ| |3|園崎 若菜|4|コーチのバッグ| |4|須藤 霧彦|5|スーツケース| |5|園崎 冴子|3|ティファニーのバッグ| ◆解説 さっきと一緒ですが、 来人はTBL_BAGにIDがないので、データ(行)がありません。 若菜はTBL_BAGに2箇所にIDがあるので、 データ(行)が2件あります。 結果、データが1減って1増えてるので行数は同じでした。 [[分かりやすい参考ページ>>http://homepage1.nifty.com/rucio/main/VBdotNet/Database/Database10.htm]] **SQLを早くする [[参考>>http://www.geocities.jp/mickindex/database/db_optimize.html]]

表示オプション

横に並べて表示:
変化行の前後のみ表示: