ホームページ  >  記事  >  データベース  >  SQL データ操作の基礎 (中級) 8

SQL データ操作の基礎 (中級) 8

黄舟
黄舟オリジナル
2016-12-17 14:36:53972ブラウズ

レコードを更新する

テーブルに既に存在する 1 つ以上のレコードを変更するには、SQL を使用する必要があります。 UPDATE ステートメント。 DELETE ステートメントと同様、UPDATE ステートメントでは WHERE 句を使用して、更新する特定のレコードを選択できます。この例を参照してください:

UPDATE mytable SET first_column='更新されました!' WHERE Second_column='更新してください!'

この更新 このステートメントは、すべての Second_column フィールドの値を「Update」に更新します。 私!』のレコードです。選択したすべてのレコードについて、first_column フィールドの値が「Updated!」に設定されます。

UPDATE ステートメントの完全な構文は次のとおりです:

UPDATE {テーブル名|ビュー名} セット [{table_name|view_name}]

{column_list|variable_list|variable_and_column_list}

[,{column_list2|variable_list2|variable_and_column_list2}…

[,{column_listN|variable_listN|variable_and_column_listN}]]

[どこで 句]

注:

テキスト フィールドには UPDATE ステートメントを使用できます。ただし、非常に長い文字列を更新する必要がある場合は、UPDATETEXT ステートメントを使用する必要があります。この内容は本書では高度すぎるため、説明しません。詳細については、Microsoft を参照してください。 SQLサーバー ドキュメンテーション。

WHERE 句を指定しない場合、テーブル内のすべてのレコードが更新されます。場合によってはこれが役立つこともあります。たとえば、タイトル テーブル内のすべての本の価格を 2 倍にしたい場合は、次のように UPDATE を使用できます。 ステートメント:

複数のフィールドを同時に更新することもできます。たとえば、次の UPDATE ステートメントは、first_column、next_column、および third_column の 3 つのフィールドを同時に更新します。 mytable SET first_column='更新されました!'

Second_column='更新されました!'

Third_column='更新されました!'

WHERE first_column='更新 Me1'

ヒント:

SQL はステートメント内の余分なスペースを無視します。 SQL ステートメントは、最も読みやすい形式で記述できます。



SELECTを使用する レコードとテーブルを作成します

お気づきかもしれませんが、INSERT このステートメントは、一度に 1 つのレコードのみを操作するという点で、DELETE ステートメントや UPDATE ステートメントとは少し異なります。ただし、INSERTを行う方法があります 複数のレコードを一度に追加するステートメント。これを行うには、次のように INSERT ステートメントと SELECT ステートメントを組み合わせる必要があります:

INSERT mytable (1列目,2列目)

SELECT another_first、another_second

FROM anothertable

WHERE another_first=’コピー 私!’

このステートメントは、anothertable から mytable にレコードをコピーします。テーブル anothertable のフィールド another_first の値のみが「Copy」です。 自分! ' レコードがコピーされます。

テーブル内のレコードのバックアップを作成する場合、この形式の INSERT ステートメントは非常に便利です。このメソッドを使用すると、レコードを削除する前に、あるテーブルから別のテーブルにレコードをコピーできます。

テーブル全体をコピーする必要がある場合は、SELECT INTO を使用できます。 声明。たとえば、次のステートメントは、テーブル mytable のすべてのデータを含む newtable という名前の新しいテーブルを作成します。

SELECT * INTO newtable から mytable

この新しいテーブルの作成に特定のフィールドのみを使用するように指定することもできます。これを行うには、フィールド リストでコピーするフィールドを指定するだけです。あるいは、WHERE を使用することもできます 新しいテーブルにコピーされるレコードを制限する句。次の例では、「Copy」に等しいフィールド Second_columnd の値のみをコピーします。 「Me!」レコードの first_column フィールド。

SELECT first_column INTO newtable

FROM mytable

WHERE Second_column=’コピー 「私!」

SQL を使用して、すでに作成されたテーブルを変更するのは困難です。たとえば、テーブルにフィールドを追加した場合、それを簡単に削除する方法はありません。さらに、誤ってフィールドに間違ったデータ型を指定した場合、そのデータ型を変更することはできません。ただし、このセクションで説明する SQL ステートメントを使用すると、両方の問題を回避できます。

たとえば、テーブルからフィールドを削除するとします。 SELECTを使用する の中へ ステートメントを使用すると、削除するフィールドを含まないテーブルのコピーを作成できます。これにより、削除したくないデータを保持したままフィールドを削除できます。

フィールドのデータ型を変更する場合は、正しいデータ型のフィールドを含む新しいテーブルを作成できます。テーブルが作成されたら、SELECT とともに UPDATE ステートメントを使用できます。 ステートメントを使用して、元のテーブルのすべてのデータを新しいテーブルにコピーします。この方法により、テーブルの構造を変更し、元のデータを保存できます。

集計関数

ここまでは、特定の条件に基づいてテーブルから 1 つ以上のレコードを取得する方法のみを学習しました。ただし、テーブル内のレコードの統計を実行するとします。たとえば、テーブルに保存された投票の結果を数えたい場合です。または、訪問者がサイトに平均してどれくらいの時間を費やすかを知りたいとします。テーブル内のあらゆる種類のデータの統計を実行するには、集計関数を使用する必要があります。

マイクロソフト SQL 5 種類の集計関数がサポートされています。レコード数、平均、最小、最大、または合計をカウントできます。集計関数を使用すると、単にこれらの統計値の 1 つを表す数値が返されます。

注:

ASP Web ページで set 関数の戻り値を使用するには、値に名前を付ける必要があります。これを行うには、次の例のように、SELECT ステートメントでフィールド名を指定した集計関数を続けます。 AVG(vote) ‘the_average’ FROM Opinion

この例では、投票の平均には次の名前が付けられます 平均。これで、ASP Web ページのデータベース メソッドでこの名前を使用できるようになります。

フィールド値の数をカウントします

関数 COUNT() は、おそらく最も便利な集計関数です。この関数を使用すると、テーブル内に存在するレコードの数をカウントできます。以下に例を示します:

SELECT COUNT(au_lname) FROM authors

この例では、テーブル authors (last) 内の名前を計算します。 名前)番号。同じ名前が複数ある場合は複数回カウントされます。特定の値を持つ著者の数を知りたい場合は、次の例に示すように WHERE 句を使用できます。 COUNT(au_lname) FROM 著者 WHERE au_lname=’Ringer’

この例では、「Ringer」という名前の著者の数を返します。名前が authors テーブルに 2 回出現する場合、この関数の戻り値は 2 になります。

異なる名前の著者の数を知りたいとします。この数値は、キーワード DISTINCT を使用して取得できます。次の例に示すように:

SELECT COUNT(DISTINCT au_lname) FROM authors

「Ringer」という名前が複数回出現する場合は、1 回のみカウントされます。キーワード DISTINCT 互いに異なる値のみが計算されることに決められています。

通常、COUNT()を使用すると、フィールド内のnull値は無視されます。一般的に言えば、これがあなたが望むものです。ただし、テーブル内のレコード数を知りたいだけの場合は、NULL 値が含まれているかどうかに関係なく、テーブル内のすべてのレコードをカウントする必要があります。これを行う方法の例を次に示します:

SELECT カウント(*)から authors

関数 COUNT() はフィールドを指定していないことに注意してください。このステートメントは、NULL 値を持つレコードを含む、テーブル内のすべてのレコードをカウントします。したがって、計算する特定のフィールドを指定する必要はありません。

関数 COUNT() はさまざまな状況で役立ちます。たとえば、サイトの品質に関するアンケートの結果を保持するテーブルがあるとします。このテーブルには、vote と呼ばれるフィールドがあり、このフィールドの値は 0 または 1 のいずれかです。0 は否定票を意味し、1 は肯定票を意味します。賛成票の数を決定するには、次のすべてを選択できます。 ステートメント:

SELECT COUNT(投票) FROM 意見表 WHERE vote=1

フィールドの平均を計算します

関数COUNT()を使用すると、フィールドにある値の数をカウントできます。ただし、場合によっては、これらの値の平均を計算する必要があります。関数 AVG() を使用すると、フィールド内のすべての値の平均を返すことができます。

サイトでより複雑なアンケートを実施するとします。訪問者は、あなたのサイトがどれだけ気に入っているかを 1 から 10 までの投票で示すことができます。投票結果は、vote という INT タイプのフィールドに保存されます。ユーザー投票の平均を計算するには、関数 AVG() を使用する必要があります:

SELECT AVG(投票)から 意見

この SELECT ステートメントの戻り値は、サイトに対する平均的なユーザーの好みを表します。関数 AVG() は数値フィールドにのみ使用できます。この関数は、平均を計算するときに null 値も無視します。

フィールド値の合計を計算します

あなたのサイトがカードの販売に使用され、2 か月間運営されていると仮定します。収益がいくらかを計算します。すべての訪問者の注文情報を記録するために、orders という名前のテーブルがあるとします。すべての注文数量の合計を計算するには、関数 SUM() を使用できます:

SELECT SUM(購入金額) FROM 注文

関数SUM()の戻り値は、フィールドpurchase_amountのすべての値の平均を表します。フィールド Purchase_amount のデータ型は MONEY ですが、他の数値フィールドに関数 SUM() を使用することもできます。

最大値または最小値を返す

もう一度、サイト上のアンケートの結果を保持するテーブルがあると仮定します。訪問者は1から10まで選択できます 値はサイトに対する評価を表します。あなたのサイトに対する訪問者による最高評価を知りたい場合は、次のステートメントを使用できます:

SELECT MAX(vote) FROM 意見

誰かがあなたのサイトに高い評価を与えてくれることを期待するかもしれません。 MAX() 関数を使用すると、数値フィールドのすべての値の最大値を知ることができます。誰かがあなたのサイトで 10 番に投票した場合、関数 MAX() はその値を返します。

一方、訪問者によるサイトの最低評価を知りたい場合は、次の例に示すように、関数 MIN() を使用できます。 MIN(投票)から 意見

関数 MIN() は、フィールドのすべての値の最小値を返します。フィールドが空の場合、関数 MIN() は null 値を返します。

その他の一般的に使用される SQL 式、関数、プロシージャ

このセクションでは、他の SQL テクノロジをいくつか紹介します。フィールド値が特定の範囲内にあるデータをテーブルから取得する方法を学習します。また、フィールド値をある型から別の型に変換する方法、および文字列データと日時データを操作する方法も学習します。最後に、メールを送信する簡単な方法を学びます。

値の範囲を照合してデータを取得します

サイト上のアンケートの結果を保持するテーブルがあるとします。次に、サイトを 7 ~ 10 で評価したすべての訪問者に書面による感謝状を送りたいと考えています。これらの人々の名前を取得するには、次の SELECT を使用できます。 ステートメント:

意見WHERE投票>6からユーザー名を選択し、 vote
この SELECT ステートメントは要件を満たします。次の SELECT ステートメントを使用しても同じ結果を得ることができます:

SELECT ユーザー名 意見から 7 と 10 の間で投票してください

thisSELECT ステートメントは前のステートメントと同等です。どのステートメントを使用するかはプログラミング スタイルの問題ですが、式 BETWEEN を使用するとわかります。 ステートメントが読みやすくなります。

次に、サイトに 1 または 10 に投票した訪問者の名前のみを抽出したいとします。オピニオン テーブルからこれらの名前を取得するには、次の SELECT を使用できます。 ステートメント:

意見からユーザー名を選択 WHERE vote=1 または 投票

この SELECT ステートメントは正しい結果を返すため、使用しない理由はありません。ただし、同等の方法があります。次のように SELECT を使用しても同じ結果を得ることができます:

SELECT ユーザー名 FROM 意見 WHERE 投票 IN (1,10)

IN という式の使用に注意してください。このSELECT このステートメントは、投票値が括弧内の値の 1 つに等しいレコードのみを取得します。

IN を使用して文字データを照合することもできます。たとえば、ビル ゲイツまたはクリントン大統領の投票値のみを抽出したいとします。以下のようにSELECTを使用できます 声明:

意見から投票を選択 WHERE ユーザー名 IN (「ビル・ゲイツ」、「大統領」 クリントン’)

最後に、NOT という表現を BETWEEN または IN と一緒に使用できます。たとえば、投票値が 7 から 10 の間にない人の名前を取得するには、次の SELECT を使用できます。 ステートメント:

7 と 7 の間に投票しない意見からユーザー名を選択してください 10

特定のフィールドの値が値のリストにないレコードを選択するには、次の例に示すように、NOT と IN を同時に使用できます:

SELECT vote FROM 意見

ユーザー名が含まれていない場所 (「ビル・ゲイツ」、「大統領」) Clinton’)

SQL ステートメントで BETWEEN または IN を使用する必要はありませんが、クエリを自然言語に近づけるには、これら 2 つの式が役に立ちます。


上記は SQL データ操作の基礎 (中級) 8 の内容です。その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。