〜〜 C++講座・JAVA講座・VB講座・ネット収入講座・アフィリエイト講座・メール受信講座・株講座・投資信託講座・お小遣い講座 〜〜

   MENU   
1. はじめに
2. RDBMSの役割
3. テーブル構造
4. データ定義文(DDL)
5. データ制御文(DCL)
6. データ操作文(DML)
7. 正規化の概要
8. 命名規約
9. コメント構文
10. 比較演算子


 得@スキルアップ塾.com > SQL基本講座 > 6. データ操作文(DML)

   データ操作文(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ならタワレコで

 
■ネット証券関連おすすめ
イー・トレード証券
 ・人気度:★★★★★
 ・初心者はこちらから

マネックス証券
 ・人気度:★★★★★
 ・中級者ならこちらから






Copyright(C)2007 得@スキルアップ塾.comAll right reserved.