SQL によるインデックス作成
テーブルにインデックスを付けるには、タスクバー SQL を起動します
サーバー プログラム グループの ISQL/w プログラム。クエリウィンドウに入ったら、次のステートメントを入力します:
CREATE INDEX mycolumn_index ON
マイテーブル
(myclumn)
このステートメントは、mycolumn_index という名前のインデックスを作成します。インデックスには任意の名前を付けることができますが、インデックス名にはインデックスを作成するフィールドの名前を含める必要があります。これにより、将来インデックスを作成する目的が分かりやすくなります。
注:
本書の SQL ステートメントを実行すると、次のメッセージが表示されます:
This
コマンドはデータを返さず、何も返しませんでした
rows
これは、ステートメントが正常に実行されたことを示します。
インデックス mycolumn_index は、テーブル mytable の mycolumn フィールドに対して実行されます。これは非クラスター化インデックスであり、一意ではないインデックスです。 (これはインデックスのデフォルトのプロパティです)
インデックスのタイプを変更する必要がある場合は、元のインデックスを削除して再構築する必要があります
1つ。インデックスを作成した後、次の SQL ステートメントを使用してインデックスを削除できます:
DROP INDEX
mytable.mycolumn_index
DROP INDEX に関する注意
ステートメントにはテーブルの名前を含める必要があります。この例では、削除したインデックスは mycolumn_index で、これはテーブル mytable のインデックスです。
クラスター化インデックスを作成するには、キーワード CLUSTERED を使用できます。 ) テーブルにはクラスター化インデックスが 1 つだけ存在できることに注意してください。 (テーブルにクラスター化インデックスを作成する方法の例は次のとおりです:
CREATE
クラスター化インデックス mycolumn_clust_index ON
mytable(mycolumn)
テーブル内に重複レコードがある場合、このステートメントを使用してインデックスを作成しようとするとエラーが発生します。ただし、キーワード ALLOW_DUP_ROW を使用して SQL に指示するだけで、重複レコードを持つテーブルにインデックスを付けることもできます。
サーバーのみ:
CREATE CLUSTERED INDEX mycolumn_cindex ON
mytable(mycolumn)
WITH
ALLOW_DUP_ROW
このステートメントは、重複レコードを許可するクラスター化インデックスを作成します。テーブル内の重複レコードを避けるように努める必要がありますが、重複レコードが発生した場合は、この方法を使用できます。
テーブルに一意のインデックスを作成するには、キーワード UNIQUE を使用できます。このキーワードは、クラスター化インデックスと非クラスター化インデックスの両方に使用できます。以下に例を示します:
CREATE
一意のカスタードインデックス myclumn_cindex ON
mytable(mycolumn)
これはよく使用するインデックス作成ステートメントです。可能な限り、クエリ操作を強化するために 1 つのテーブルに一意のクラスター化インデックスを構築するようにしてください。
最後に、複数のフィールドにインデックス (複合インデックス) を作成し、インデックス作成ステートメントに複数のフィールド名を含める必要があります。次の例では、名フィールドと姓フィールドにインデックスを作成します:
CREATE
INDEX 名前_インデックス ON
username(firstname,lastname)
この例では、2 つのフィールドに 1 つのインデックスを作成します。複合インデックスでは、最大 16 個のフィールドにインデックスを付けることができます。
トランザクション マネージャーを使用してインデックスを作成する
トランザクション マネージャーを使用してインデックスを作成するのは、SQL ステートメントを使用するよりもはるかに簡単です。トランザクション マネージャーを使用すると、作成されたインデックスのリストを表示し、グラフィカル インターフェイスを通じてインデックス作成オプションを選択できます。
トランザクション マネージャーを使用すると、次の 2 つの方法でインデックスを作成できます: 管理を使用する
「テーブル」ウィンドウを使用するか、「インデックスの管理」ウィンドウを使用します。
「テーブルの管理」ウィンドウを使用して新しいインデックスを作成するには、「詳細」ボタンをクリックします
オプション (前にプラス記号が付いた表のように見えます)。これにより、[詳細オプション] ダイアログ ボックスが開きます。このダイアログ ボックスには PRimary という名前のセクションがあります。
キー (図 11.1 を参照)。
図 11. 1
新しいインデックスを作成するには、ドロップダウン リストからインデックスを作成するフィールド名を選択します。複数のフィールドにインデックスを作成する場合は、複数のフィールド名を選択できます。インデックスがクラスター化されているか非クラスター化されているかを選択することもできます。テーブル情報を保存すると、インデックスが自動的に作成されます。インマネージ
「テーブル」ウィンドウのフィールド名の横にキーが表示されます。
テーブルの「マスターインデックス」が作成されました。プライマリ インデックスは、NULL 値を含まないフィールドに確立する必要があります。さらに、プライマリ インデックスにより、フィールドは強制的に一意の値フィールドになります。
これらの制限なしでインデックスを構築するには、管理を使用する必要があります
インデックスウィンドウ。メニューから「管理|インデックス」を選択して、「インデックスの管理」ウィンドウを開きます。インデックスの管理
ウィンドウでは、ドロップダウン ボックスからテーブルと特定のインデックスを選択できます。 (図 11.2 を参照)。新しいインデックスを作成するには、[インデックス] ドロップダウン ボックスから [新規] を選択します。
インデックスを付けると、インデックスを付けるフィールドを選択できます。 「追加」ボタンをクリックしてフィールドをインデックスに追加します。
図 11.2
インデックスにはさまざまなオプションを選択できます。たとえば、インデックスをクラスター化するか非クラスター化するかを選択できます。インデックスが一意のインデックスであることを指定することもできます。インデックスを設計したら、[構築] ボタンをクリックしてインデックスを作成します。
注:
一意のインデックスとは、フィールドに重複した値を含めることができないことを意味し、作成できるインデックスが 1 つだけであることを意味するわけではありません。
SQLコアステートメント
第 10 章では、SQL の使用方法を学習しました。
選択する
テーブルからデータを取得するステートメント。ただし、これまで、テーブル内のデータを追加、変更、削除する方法については説明していませんでした。このセクションでは、これらについて学習します。
データの挿入
テーブルに新しいレコードを追加するには、SQL を使用します
INSERT ステートメント。このようなステートメントの使用例を次に示します。
INSERT mytable (mycolumn) VALUES ('some
data')
このステートメントは文字列 'some を変換します
data」がテーブル mytable の mycolumn フィールドに挿入されます。データが挿入されるフィールドの名前は最初の括弧で指定され、実際のデータは 2 番目の括弧で指定されます。
挿入
ステートメントの完全な構文は次のとおりです:
INSERT [INTO] {table_name|view_name} [(column_list)] {DEFAULT
値 |
値リスト |
select_statement}
テーブルに複数のフィールドがある場合、フィールド名とフィールド値をカンマで区切ることで、すべてのフィールドにデータを挿入できます。テーブル mytable に、first_column、next_column、および third_column という 3 つのフィールドがあるとします。次の INSERT ステートメントは、3 つのフィールドすべての値を含む完全なレコードを追加します:
INSERT
mytable (first_column, Second_column, third_column)
VALUES ('some
データ」、「さらにデータ」、「さらに」
data')
注:
INSERT ステートメントを使用して、テキスト フィールドにデータを挿入できます。ただし、非常に長い文字列を入力する必要がある場合は、WRITETEXT ステートメントを使用する必要があります。この内容は本書では高度すぎるため、説明しません。詳細については、Microsoft を参照してください。
SQL Server のドキュメント。
あなたが挿入している場合
ステートメントでフィールドとデータが 2 つだけ指定されている場合はどうなりますか?つまり、新しいレコードをテーブルに挿入しましたが、フィールドの 1 つがデータを提供しませんでした。この場合、4 つの可能性があります:
フィールドにデフォルト値がある場合、その値が使用されます。たとえば、 third_column フィールドにデータを提供せずに新しいレコードを挿入し、このフィールドのデフォルト値が「some」であるとします。
価値'。この場合、新しいレコードの作成時に値「some value」が挿入されます。
フィールドが null 値を受け入れることができ、デフォルト値がない場合は、null 値が挿入されます。
フィールドが null 値を受け入れることができず、デフォルト値がない場合、エラーが発生します。次のエラー メッセージが表示されます:
テーブル mytable の列は、
なれ
null.
最後に、フィールドが ID フィールドの場合は、新しい値が自動的に生成されます。識別フィールドを持つテーブルに新しいレコードを挿入する場合、そのフィールドを無視するだけで、識別フィールド自体に新しい値が割り当てられます。
注:
ID フィールドを持つテーブルに新しいレコードを挿入した後、SQL 変数 @@identity を使用して、新しいレコードの ID フィールドの値にアクセスできます
。次の SQL ステートメントを考えてみましょう:
INSERT
mytable (first_column) VALUES(‘何らかの値’)
INSERT
anothertable(another_first,another_second)
VALUES(@@identity,’some
value’)
テーブル mytable に識別フィールドがある場合、このフィールドの値はテーブル anothertable の another_first フィールドに挿入されます。これは、変数 @@identity が常に ID フィールドに挿入された最後の値を保持しているためです。
フィールド another_first は、フィールド first_column と同じデータ型である必要があります。ただし、another_first フィールドを識別するフィールドにすることはできません。 Another_first フィールドは、first_column フィールドの値を保存するために使用されます。
レコードの削除
テーブルから 1 つ以上のレコードを削除するには、SQL を使用する必要があります
DELETE ステートメント。 DELETE ステートメントに WHERE を指定できます。
句。 WHERE 句は、削除するレコードを選択するために使用されます。たとえば、次の DELETE ステートメントは、「Delete」に等しいフィールド first_column の値のみを削除します。
私のレコード:
DELETE mytable WHERE first_column='Deltet Me'
DELETE
ステートメントの完全な構文は次のとおりです:
DELETE [FROM] {table_name|view_name} [WHERE]
SQL SELECT ステートメントで使用できる条件はすべて、DELECT ステートメントの WHERE 句で使用できます。
で使われる。たとえば、次の DELETE ステートメントは、first_column フィールドの値が「goodbye」または Second_column フィールドの値が「so」であるもののみを削除します。
長い' レコード:
DELETE mytable WHERE first_column='goodby' OR Second_column='so
long'
DELETE ステートメントに WHERE を指定しない場合
句を指定すると、テーブル内のすべてのレコードが削除されます。このように考えるべきではありません。テーブル内のすべてのレコードを削除したい場合は、第 10 章で説明したように TRUNCATE を使用する必要があります。
TABLE ステートメント。
注:
DELETE ステートメントの代わりに TRUNCATE TABLE ステートメントを使用する必要があるのはなぜですか? TRUNCATEを使用する場合
TABLE ステートメントでは、レコードの削除は記録されません。つまり、これは、TRUNCATE TABLE が DELETE よりもはるかに高速であることを意味します
上記は、SQL データ操作の基礎 (中級) 7 の内容です。その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) に注目してください。 )!

MySQLはGPLライセンスを使用します。 1)GPLライセンスにより、MySQLの無料使用、変更、分布が可能になりますが、変更された分布はGPLに準拠する必要があります。 2)商業ライセンスは、公的な変更を回避でき、機密性を必要とする商用アプリケーションに適しています。

Myisamの代わりにInnoDBを選択する場合の状況には、次のものが含まれます。1)トランザクションサポート、2)高い並行性環境、3)高いデータの一貫性。逆に、Myisamを選択する際の状況には、1)主に操作を読む、2)トランザクションサポートは必要ありません。 INNODBは、eコマースプラットフォームなどの高いデータの一貫性とトランザクション処理を必要とするアプリケーションに適していますが、Myisamはブログシステムなどの読み取り集約型およびトランザクションのないアプリケーションに適しています。

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。

MySQLには、B-Treeインデックス、ハッシュインデックス、フルテキストインデックス、空間インデックスの4つのメインインデックスタイプがあります。 1.B-Treeインデックスは、範囲クエリ、ソート、グループ化に適しており、従業員テーブルの名前列の作成に適しています。 2。HASHインデックスは、同等のクエリに適しており、メモリストレージエンジンのHASH_TABLEテーブルのID列の作成に適しています。 3。フルテキストインデックスは、記事テーブルのコンテンツ列の作成に適したテキスト検索に使用されます。 4.空間インデックスは、地理空間クエリに使用され、場所テーブルのGEOM列での作成に適しています。

tocreateanindexinmysql、usethecreateindexstatement.1)forasinglecolumn、 "createdexidx_lastnameonemployees(lastname);" 2)foracompositeindexを使用して、 "createindexidx_nameonemployees(lastname、firstname);" 3); "3)、" 3)を使用します

MySQLとSQLiteの主な違いは、設計コンセプトと使用法のシナリオです。1。MySQLは、大規模なアプリケーションとエンタープライズレベルのソリューションに適しており、高性能と高い並行性をサポートしています。 2。SQLiteは、モバイルアプリケーションとデスクトップソフトウェアに適しており、軽量で埋め込みやすいです。

MySQLのインデックスは、データの取得をスピードアップするために使用されるデータベーステーブル内の1つ以上の列の順序付けられた構造です。 1)インデックスは、スキャンされたデータの量を減らすことにより、クエリ速度を改善します。 2)B-Tree Indexは、バランスの取れたツリー構造を使用します。これは、範囲クエリとソートに適しています。 3)CreateIndexステートメントを使用して、createIndexidx_customer_idonorders(customer_id)などのインデックスを作成します。 4)Composite Indexesは、createIndexIDX_CUSTOMER_ORDERONORDERS(Customer_Id、Order_date)などのマルチコラムクエリを最適化できます。 5)説明を使用してクエリ計画を分析し、回避します

MySQLでトランザクションを使用すると、データの一貫性が保証されます。 1)StartTransactionを介してトランザクションを開始し、SQL操作を実行して、コミットまたはロールバックで送信します。 2)SavePointを使用してSave Pointを設定して、部分的なロールバックを許可します。 3)パフォーマンスの最適化の提案には、トランザクション時間の短縮、大規模なクエリの回避、分離レベルの使用が合理的に含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ホットトピック









