| データ操作文(DML) |
|
■データ操作文(DML)
・データ操作文は、データの修正、追加、削除、検索などを行うSQLが分類される
1. SELECT
2. INSERT
3. UPDATE
4. DELETE
■SELECT
・テーブルからレコードを取得します。 SQL命令文の中で最も使用頻度が高いといえます。
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT]
[SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]
[DISTINCT| DISTINCTROW | ALL]
フィールド名 / 式 [ AS 別名 ], ...
[INTO {OUTFILE | DUMPFILE} 'ファイル名' オプション]
[FROM テーブル名
[WHERE 条件式]
[GROUP BY {整数 | フィールド名| 式} [ASC | DESC], ... [WITH ROLLUP]]
[HAVING 条件式]
[ORDER BY {整数 | フィールド名| 式} [ASC | DESC] ,...]
[LIMIT [オフセット,] 行指定]
[PROCEDURE 手続き名(属性一覧)]
[FOR UPDATE | LOCK IN SHARE MODE]
]
|
【参考テーブル】
| 番号(no) |
名前(name) |
レベル(level) |
性別(sex) |
| 1 |
山田太郎 |
50 |
1 |
| 2 |
山田太郎2 |
30 |
1 |
| 3 |
佐々木花子 |
80 |
2 |
| 4 |
佐々木花子2 |
30 |
2 |
| 5 |
佐藤次郎 |
50 |
1 |
| 6 |
佐藤花子 |
20 |
2 |
【例】
// SELECT構文 ※上記表をもとにコマンド実行
SELECT * FROM t_table;
// 結果
|-------------------------
| no | name | level | sex |
|---------------------------
| 1 | 山田太郎 | 50 | 1 |
| 2 | 山田太郎2 | 30 | 1 |
| 3 | 佐々木花子 | 80 | 2 |
| 4 | 佐々木花子2 | 30 | 2 |
| 5 | 佐藤次郎 | 50 | 1 |
| 6 | 佐藤花子 | 20 | 2 |
|--------------------------
// SELECT構文 ※上記表をもとにコマンド実行
SELECT no, name FROM t_table;
// 結果
|-------------------------
| no | name |
|---------------------------
| 1 | 山田太郎 |
| 2 | 山田太郎2 |
| 3 | 佐々木花子 |
| 4 | 佐々木花子2 |
| 5 | 佐藤次郎 |
| 6 | 佐藤花子 |
|--------------------------
// SELECT構文 ※上記表をもとにコマンド実行
SELECT DISTINCT sex FROM t_table;
// 結果
|-------------------------
| sex |
|---------------------------
| 1 |
| 2 |
|--------------------------
// SELECT構文 ※上記表をもとにコマンド実行
SELECT sex AS seibetu FROM t_table;
// 結果
|-------------------------
| seibetu |
|---------------------------
| 1 |
| 2 |
|--------------------------
// SELECT構文 ※上記表をもとにコマンド実行
SELECT name, level FROM t_table ORDER BY level DESC;
// 結果
|-------------------------
| name| level |
|---------------------------
| 佐々木花子 | 80 |
| 山田太郎 | 50 |
| 佐藤次郎 | 50 |
| 山田太郎2 | 30 |
| 佐々木花子2 | 30 |
| 佐藤花子 | 20 |
|--------------------------
|
【パラメータ一覧】
| パラメータ |
説明 |
| ALL / DISTINCT |
ALL: 選択された全ての行を返します
DISTINCT:重複した行があれば1行にまとめて返します |
| AS |
SELECTを実行すると最初の行に見出しが表示されます
この見出しのフィールド名を変更する場合に使用します |
| ORDER BY ASC/DESC |
ORDER BY は昇順又は降順に並び替えを行います。
デフォルトで昇順になります
ASC:昇順の指定 デフォルトで昇順のため指定する必要はありません
DESC:降順に指定
並び替えで注意!!
SQL Server, MYSQLでは、NULLが一番小さい値として扱い、
Oracle, PostgreSQLでは、NULLが一番大きい値として扱います |
| GROUP BY |
特定の列やフィールドの値や式の値でグループ化します。
使用用途は主に、レコードの合計値や平均値を算出するのに使用します
MAX関数、MIN関数、SUM関数、COUNT関数、AVG関数などは、よく使用します |
| FOR UPDATE |
選択された行をロックします |
| HAVING |
選択したレコードに対して条件を設定する
WHERE文と同じように、条件にマッチしたレコードを選択します
違いは、HAVING文は集計前に条件式を適用し、
WHERE文は集計前に条件式を適用することです
|
| INTO OUTFILE |
選択された行をファイルに書き込みます。
既に存在するファイルへの書き込みはできません。
INTO OUTFILEで書き出したファイルは、LOAD DATA INFILEで読み込むことも
できます。
|
| LIKE |
WHERE文の条件式内で、ワイルドカードを使った文字列検索が可能 |
一覧へ
■INSERT
・レコードを挿入します
// INSERT VALUES構文
INSERT [ LOW_PRIORITY ] [ IGNORE ] INTO テーブル名 ( フィールド名、フィールド名・・ )
VALUES( 値、値・・ )
// INSERT SET構文
INSERT INTO テーブル名 SET フィールド名='値'、フィールド名='値'・・
|
【例】
// INSERT VALUES構文
INSERT INTO t_table ( no、name、level ) VALUES( '3', '山田花子', '20' );
// INSERT SET構文
INSERT INTO t_table SET no='3', name='山田花子' level='20';
|
●更新前"t_table"テーブル
| 番号(no) |
名前(name) |
レベル(level) |
| 1 |
山田太郎 |
50 |
| 2 |
山田次郎 |
30 |
↓更新↓
●更新後"t_table"テーブル
| 番号(no) |
名前(name) |
レベル(level) |
| 1 |
山田太郎 |
50 |
| 2 |
山田次郎 |
30 |
| 3 |
山田花子 |
20 |
【パラメータ一覧】
| パラメータ |
説明 |
| INTO |
省略可能なキーワードです |
| LOW_PRIORITY |
テーブルを利用するクライアントがなくなるまで待ってから
INSERTを実行します |
| IGNORE |
通常では、レコード挿入の際にPRIMARYやUNIQUEと定義されたフィールドで値の重複がある場合、エラーが発生します。IGNOREを宣言しておくと、レコードの挿入が行われないのは同じですが、エラーが発生しません。 |
一覧へ
■UPDATE
・レコードを更新します
// UPDATE構文
UPDATE [ LOW_PRIORITY ] [ IGNORE ] テーブル名
SET フィールド名=値、フィールド名=値・・
[ WHERE 条件式 ]
[ ORDER BY・・・]
[ LIMIT 値 ]
|
【例】
// レコード更新
UPDATE t_table SET level = '25' WHERE no = 3;
|
●更新前"t_table"テーブル
| 番号(no) |
名前(name) |
レベル(level) |
| 1 |
山田太郎 |
50 |
| 2 |
山田次郎 |
30 |
| 3 |
山田花子 |
20 |
↓更新↓
●更新後"t_table"テーブル
| 番号(no) |
名前(name) |
レベル(level) |
| 1 |
山田太郎 |
50 |
| 2 |
山田次郎 |
30 |
| 3 |
山田花子 |
25 |
【パラメータ一覧】
| パラメータ |
説明 |
| LOW_PRIORITY |
テーブルを利用するクライアントがなくなるまで待ってからUPDATEを実行します。 |
| WHERE |
UPDATEの対象にするレコードを選択するための条件文を指定することができます。 |
| LIMIT |
通常では、レコード更新の際にPRIMARYやUNIQUEと定義されたフィールドで値の重複がある場合、エラーが発生します。IGNOREを宣言しておくと、レコードの更新が行われないのは同じですが、エラーが発生しません。
|
| ORDER BY |
指定された順序でレコードが更新されます。 |
一覧へ
■DELETE
・レコードを削除します
// DELETE構文
DELETE [ LOW_PRIORITY | QUICK ] FROM テーブル名
[ WHERE 条件式 ]
[ ORDER BY・・・]
[ LIMIT rows ]
DELETE [ LOW_PRIORITY | QUICK ] テーブル名[.*] FROM
テーブル参照 [ WHERE 条件式 ]
|
【例】
//@ レコード削除 番号が'3'のレコードのみ
DELETE FROM t_table WHERE no = 3;
//A 全てのレコード削除
DELETE FROM t_table ;
//B 日付の古いものから2件だけデータを削除します
DELETE FROM t_table WHERE no > 0 ORDER BY add_time LIMIT 2 ;
|
●更新前"t_table"テーブル ※例題Bを実行した場合
| 番号(no) |
名前(name) |
レベル(level) |
| 1 |
山田太郎 |
50 |
| 2 |
山田次郎 |
30 |
| 3 |
山田花子 |
20 |
↓更新↓
●更新後"t_table"テーブル
| 番号(no) |
名前(name) |
レベル(level) |
| 3 |
山田花子 |
25 |
【パラメータ一覧】
| パラメータ |
説明 |
| LOW_PRIORITY |
テーブルを利用するクライアントがなくなるまで待ってからUPDATEを実行します。 |
| WHERE |
DELETEの対象にするレコードを選択するための条件文を指定することができます。 |
| LIMIT |
削除するレコード数を指定します。 |
| ORDER BY |
ORDER BYは、指定したフィールドの値で行をソートします。 |
| QUICK |
DELETE処理の間、インデックスのマージを行わないので、
処理速度が向上します。 |
一覧へ
|
|
| |

A8ネット
・人気度:★★★★★
・言わずと知れた人気ASP
 |
| |
楽天市場

・人気度:★★★★★
・誰でも安心、楽天市場で
タワーレコード
・人気度:★★★★☆
・CD/DVDならタワレコで
|
|