「MySQLはなります知っている必要があり、」何を読むか、私が学びましたか?

序文

最近のプロジェクトを書いている時点で、いくつかの高い評価の答えを期待して指して、彼自身の弱いくつかの基本的なSQL、[サウンドほとんどMYSQLキーワードクエリを見つけたので、見つけることが

https://www.zhihu.com/question/34840297/answer/272185020は、非常に基本的な全体の話を、最初にこの本を「MYSQLはきっと知っている必要があります」読みました彼の提案によると、男性のリストを読み込む推奨します253ページの合計は、学生の弱い基盤のための多くではありません食べていました。そして、ステップ、より深い読書の自己改善によってステップ。以下は、共有への皆のため、読みの過程で彼自身のレコードのキー要素のいくつかを説明しています。PDFブックは上記のリンクではほとんど知ってもらう、あるいは自分の兄の深ノートのダウンロードに行くhttp://www.notedeep.com/note/38/page/282をクリックすることができます。

読み込み経験

SQL文およびケース

私たちは名前のように、4.1.1バージョン(現在は一般的に使用される+ 5.6 / 5.7 / 8.0です)、MySQLのテーブル名、フィールド名は、大文字と小文字は区別されません後にSQL文は、大文字と小文字が区別されず、Windows環境での場合、単一の単語_などの名称、の形で単一ワードの提案された使用:mysql_crash_course USER_ROLE

ここにアリは必須要件のコードの仕様を添付します:

[必須]テーブル名、フィールド名が唯一の真ん中の2つの数字が表示される下線付きの禁止禁止番号で始まり、小文字または数字でなければなりません。彼らはプレリリースを行うことができないため、大規模なデータベースのフィールド名のコストを変更し、そのフィールド名は慎重に検討する必要があります。
説明:MySQLはWindowsで大文字と小文字の区別はありませんが、Linuxでは、デフォルトでは大文字と小文字が区別されます。そのため、データベース名、テーブル名、フィールド名は、任意の更なる合併症を避けるために、任意の大文字を許可していません。

あなたは部分的にDISTINCTを使用することはできません

  • DISTINCTキーワードは、すべての列だけでなく、その前の行に適用されます。SELECT DISTINCT vend_id、prod_price、指定された2つの列が異なっている場合を除き、それ以外の場合は、すべての行が取得され与えられた場合。
  • すべてのフィールドが同じ列にあるとDISTINCTは、その背中には戻りません。すなわち、同一の2つのラインのSELECTクエリ内の任意のフィールドには、デエンファシスであろう。DISTINCT缶は単一のフィールドに再状に()を括弧ではありません。

例えば、プロジェクトのために、このようなAの需要があります:

次のようにハウジングがクエリのリストであるため、私たちは同じ家のIDをデフォルトと、特定の費用の家に縛らページングされたクエリは、一度のみSQLエラーが発生します。

プロパティリスト

1573986248201

料金表

1573986284763

SELECT DISTINCT h.id, h.num, s.name 
FROM house h 
LEFT JOIN standard s 
ON h.id = s.room_id 
WHERE s.name = '物业费' OR s.name = '暖气费';

この文は、異なる電荷の同じ名前ではありませんので、DISTINCT缶は、クエリの一部に重いが行かない、それは一度だけ、各家で、目的の結果を返しません。私たちは、部屋番号は1から001レコードが2回表示され見ることができます。

1573986349142

ここで説明するようにしかし、実際には、私は、クエリ情報の家を必要とする、クエリ結果のための家は、同じレコードの情報は確かにまったく同じであるので、私のビジネスでDISTINCTの要件を満たしています。そして、他の事業は、このキーワードのための時間を必要とし、キーワードのセクションを使用しないように覚えて、注意して使用してくださいがあります

ケースとソート順

場合は、ソートのテキストデータ、Aと同じ右?Bは、後にZの前に配置位置していますか?

フィールドは、この場合、適切な照合を選択することができ、文字セットを作成する際に指定した、一般的に使用utf8mb4することができます。

  1. utf8mb4_general_ci CIすなわちAと同じとみなし、ソート時に、大文字と小文字を区別しないが、ケースを無視
  2. A〜Zの後utf8mb4_bin / CS即ち大文字と小文字を区別テープ、まず、次に、昇順A〜Zに対応する、小さな
    CSは=「」見つけることができる対応する、大文字と小文字の区別を設定した後、クエリこのフィールドは、「列のテーブルです。敏感ではない、すなわちCI、A、クエリがアウトかもしれません。

キーワード注意事項BETWEEN

ときにクエリ間隔それは確かだので、私たちの主な関心事は、範囲内に合わせることができないようにする必要があり。ゾーンの境界は、間、キーワードマッチング間隔がするとき、私たちは知識に注意を払うべき一致させることができる境界条件については含まれてい次のように次のSQL実行結果は以下のとおりです。

SELECT prod_name, prod_price 
FROM products p
WHERE p.`prod_price` BETWEEN 5.99 AND 10

1573990863960

NULLは一致していません。

特定の値を持たない行でろ過を選択すると、NULL値を持つ行を返すようにしたいかもしれません。しかし、ありません。一般的なエラーがis_xxxフィールドで発生し、私はいつも、この問題を抱えています

1573991122233

is_deleteフィールドのために、私はそれは私が使用してそうする場合、NULLまたは0削除されていない家だと思います

SELECT * FROM house WHERE is_delete = '0';

推奨された後、クエリが家を削除の取り消し、私の家は私の期待が矛盾している、明らかであるID 3、で見つけることができますプラスまたはis_deleteがis_deleteにヌル、または0の列のデフォルト値であり、解決策が帰ってきました人。

ここでは、マニュアル・アリ・コードに必須のアイテムを添付:

[]の強制発現は、フィールド名が様子をis_xxxなければならないか否かの概念であり、データ型は(いいえ1を表し、0)の符号なしTINYINTです。注:フィールドの任意の非負場合は、符号なしにする必要があります。

説明:十分な長さが人の年齢を表すために使用することができるかどうかを発現するために使用される127の範囲-128、のJavaバイトにTINYINT相当します。非負のフィールドを決定するために、符号なしと符号なし示し、符号なしの範囲を2倍にすることができます。

ANDとORの計算順序

たとえば:あなたはすべての製品が必要な場合は$ 10の(またはそれ以上)の価格を記載されているし、1002または1003から作られています。句が確立で、次のSELECTの組み合わせを使用して文ANDとOR演算子:

SELECT *
FROM products
WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10;

次のようにクエリ結果は以下のとおりです。

1573991836719

私は非常に明確に我々が行に必要ないものを赤い枠線でマークされている、なぜこれがそうですか?その理由は、順序がコンピューティングということです。SQL(ほとんどの言語のような)OR演算子治療前、優先AND演算子に。句が上記参照SQLは、それが任意の価格サプライヤー1003を製造することと理解されるとき、それは関係なく、その価格の$ 10の(またはそれ以上)の生成物、またはベンダ1002で製造され、任意の製品でした。換言すれば、計算の順序で優先順位の高いため、オペレータが誤って結合されます。解決策は、()を追加することで、正しいSQLを次のように:

SELECT *
FROM products
WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;

推奨しているWHERE句ANDとOR演算子は、使用する括弧を明示的にいつでもオペレータをグループ化する必要があります。それは本当にあなたが同様に何をしたい場合でも、デフォルトの評価順に過剰依存しないでください。害に括弧を使用して、それが曖昧さを排除することができます。

UNIONクエリの組み合わせ

  • UNIONを使用して、SELECT文複数の、その単一の結果セットへの組み合わせの結果を与えることができます。
  • UNION各クエリは、同じ列、式、または集計関数を含める必要があります。
  • UNIONを使用している場合、重複行は自動的にキャンセルされます。これはデフォルトの動作UNIONですが、あなたがする必要がある場合は、それを変更することができます。実際には、あなたがすべて一致する行を返したい場合は、UNION ALLの代わりに、UNIONを使用しています。
  • UNIONを使用したクエリは、唯一のORDER BY句を使用すると、それが最後のSELECT文の後に現れなければなりません

常にINSERT文のリストの列を使用

一般的には、明示的にINSERT文の列のリスト与えられていない使用していません。テーブル構造が変更された場合でも、機能し続けることができ、列リストのSQLコードを使用してください。列を追加/削除、テーブル構造を変更するために、ビジネスの実際の開発ニーズによるものがあるかもしれません。そして、コードで使用されるSQLステートメントは、エラーがスローされますINSERT文の明確なリストがない場合。それが私たちのために列のリストを生成します。生成されたSQLに対応しているので、もちろん、我々は一般的に、この問題を持っていないinsertSelective(POJO)生成されたリバースエンジニアリングを使用します。

更新および削除ステートメントを使用するように注意してください

MySQLはとてもUPDATE / DELETEを使用している場合は必要があり、何の[元に戻す]ボタンではありませんWHERE条件の追加、および更新/削除操作を実行する前にSELECT操作と、オープン情勢。行と行の数と同じ数の終わりに実施の影響を確認するクエリーを選択する前にCOMMIT;

また、ALTER TABLEの使用は非常に注意する、あなたは、変更前にフルバックアップ(バックアップスキーマとデータ)の間に行う必要があります。データベース・テーブルを変更して、不要な列の増加は、それらを削除することができないかもしれない場合は、取り消すことはできません。同様に、あなたが列を削除する場合は、その列内のすべてのデータが失われる可能性があり、削除すべきではありません。

ルールと制限景色

  • テーブルと同じように、ビューはユニークな名前を付ける必要があります(またはリストビューに同じ名前の別の見方をすることはできません)。
  • 作成可能なビューの数に制限はありません。
  • ビューを作成するには、十分なアクセス権を持っている必要があります。これらの制限は、通常、データベース管理者によって付与されています。
  • ビュー、すなわち、クエリビューを構築するために他のビューからデータを取得するために利用することができる、入れ子にすることができます。
  • ORDER BYは、ビューで使用することができるだけでなく、ORDER BY SELECTが含まれている場合、ビューからデータを取得し、その後、図ORDER BYは上書きされます。
  • ビューのインデックスを作成することができない、あなたはそれに関連したトリガーまたはデフォルト値を持つことができません。
  • これは、テーブルビューで使用することができます。たとえば、SELECT文のリンクテーブルとビューを作成します。

クエリの結果が結合されているテーブルはこちらものの条件がフィルタリングWHERE、使用して、UNIONのテーブルクエリを使用していくつかの良いリンク:ビューは、インデックス、私の開発過程で、このようなビューに遭遇し、十分注意する必要ができない場合インデックスフィールドの確立が、一時テーブルを使用するための条件は、リンクされたWHERE後UNIONは、ビューを生成し、インデックスを持つことはできません。そのため、クエリの効率が非常に遅くなります!これは、条件の各SELECTステートメントのUNIONクエリで提案されています。

パフォーマンスを向上させるためにいくつかの提案

  • (すべてのDBMSのように)まず、MySQLは、特定のハードウェアの推奨事項があります。サーバがすることができ、任意の古いコンピュータを使用して、MySQLを学習し、研究では。しかし、
    本番で使用されるサーバーは、ハードウェアがこれらの推奨事項に従うことを遵守すべきです。

  • 一般的には、キーの生産DBMSは、独自の専用サーバー上で実行する必要があります。

  • MySQLは事前に設定されているデフォルト設定のシリーズです、これらの設定で始まる通常は良いです。しかし、いくつかの時間後には、メモリ割り当てを調整するサイズをバッファリングする必要があるかもしれません。(;およびshowstatus、現在設定されている、使用SHOWの変数を参照してください)

  • MySQLのマルチユーザDBMSは、他の言葉で、それは多くの場合、複数のタスクを同時に実行されるマルチスレッド。これらのタスクの遅い実装の一場合は、すべての要求が実行され
    、ゆっくりとラインを。あなたは大幅なパフォーマンスが悪いが発生した場合、あなたはすべてのアクティブなプロセス(およびそのスレッドIDと実行時間)はSHOW PROCESSLISTショーを使用することができます。また、特定のプロセス(管理者としてログインするには、このコマンドを使用する必要性を)終了するKILLコマンドを使用することができます。

  • そこには常に同じSELECT文で書かれている複数の方法です。我々は最善の方法を見つけるために、リンク、およびサブクエリをテストする必要があります。

  • 使用して、それがSELECT文を実行する方法を説明するために、ステートメントのMySQLを説明します。

  • 一般的に、ストアドプロシージャは、より高速での作品のMySQLの文よりも行いました。しかしながら、このように強制的にアリコードを禁止し、デバッグすることは一般に困難貯蔵および拡張プロセス、無移植は、ストアドプロシージャの法令

  • あなたは常に正しいデータ型を使用する必要があります。

  • さらに需要よりデータを取得することはありません。(あなたが本当に各列を必要としない限り)他の言葉では、SELECT *を使用しないでください。

  • (INSERTを含む)一部の操作は、あなたがそれを使用する場合、すぐに呼び出し側に制御を返し、実際に操作を行うことが可能になるとされます、オプションのDELAYEDキーワードをサポートしています。

    遅延が挿入され、クエリが同時に挿入されたときに、挿入が待ちキューに置かれています。すべてが挿入完了後まで実行を照会します。MYSQLは、割り込み要求を受信した後も、クライアントの状態情報に直接キューでINSERT文の両方を返さ

  • データをインポートすると、自動的にコミット閉じる必要があります。また、(FULLTEXTインデックスを含む)のインデックスを削除し、インポートが完了した後にそれらを再構築することができます。

  • データ検索のパフォーマンスを向上させるためにしなければならないインデックスデータベーステーブル。どのような指標を決定することはWHEREおよびORDER BY句複製見つけるために使用されるSELECT文の分析を必要とする、簡単な作業ではありません。句は、結果を返す単純な時間がかかりすぎる場合は、列(または複数の列)がその中に使用されるインデックスの対象であると結論付けることができます。

  • 複雑な条件やあなたのシリーズであなたのSELECT文?複数のSELECT文とそれらUNION文を結ぶを使用することで、大幅なパフォーマンス向上を確認することができます。

  • データ検索のパフォーマンスが、被害のデータの挿入、削除および更新のパフォーマンスを改善するための指標。あなたには、いくつかのテーブルを持っている場合、彼らはしばしば、それが必要である前に、データを収集し、インデックスをないために検索されていません。(インデックスの追加や削除を行うことができます。)

  • 非常に遅いLIKE。一般的に、それはFULLTEXTではなく、LIKEを使用するのが最適です。しかし、MYSQL FULLTEXT中国の文字、私は別のブログを参照することができ、あなたは、フルテキストインデックスを使用する必要がある場合、検索エンジンのESを使用することが推奨され、友好的ではありません。https://www.cnblogs.com/keatsCoder/p/11341835.html

  • データベースには、常にエンティティを変更しています。おそらく認識できないしばらくして最適化されたテーブルの良いセット。変化とは、内容のテーブルを使用するので、理想的な最適化と設定が変更されます。

  • 最も重要なルールは、一定の条件の下で、各ルールが破られるということです。

実際の開発プロセスは、我々は常に最低レベルの範囲で到達し、REFレベルを達成するために、SQLおよびインデックスを説明し、修正し、その後、ゆっくりとSQLのために、スロークエリログを開くには、ビジネスニーズに基づいてする必要があります。これは、常にあなたがこの記事を読みたいと私は練習を続ける、百度では解決できない強力な内部強さとサポートが必要です。さあ!

一般的に使用される機能

テキスト処理関数

1573992432663

日付と時刻の操作関数

1573992462010

数値ハンドラ

1573992518509

集計関数

1573992537792

  • MAX()は、一般的に最大値または日付値を見つけるために使用されるが、MySQLにそれを可能にしているが、テキスト列が最大値を返すなど、任意の列内の最大値を返します。データは、対応する列に従ってソートされている場合と、テキストデータは、MAX()は最後の行を返します。MIN()関数に似ています
  • MAX()関数は、行の列の値がNULLである無視します。同様のMIN()関数は、SUM()があります

付録

付属の添付ファイルのコンテンツ内の番号(文にデータを挿入するためにtable文のすなわち建設)のためには、使用を容易にするためには、外部ネットワークにアクセスするために必要。ここで私は内側に取り付けられ、このブログをダウンロードしています。あなたはこれらのステートメントを必要としない場合は、次の章へのページの右側に直接ディレクトリジャンプを閲覧することができます

table文の構築

########################################
# MySQL Crash Course MYSQL必知必会建表语句
# http://www.forta.com/books/0672327120/
# 提供者博客园:后青春期的Keats 复制请注明出处
########################################


########################
# Create customers table
########################
CREATE TABLE customers
(
  cust_id      int       NOT NULL AUTO_INCREMENT,
  cust_name    char(50)  NOT NULL ,
  cust_address char(50)  NULL ,
  cust_city    char(50)  NULL ,
  cust_state   char(5)   NULL ,
  cust_zip     char(10)  NULL ,
  cust_country char(50)  NULL ,
  cust_contact char(50)  NULL ,
  cust_email   char(255) NULL ,
  PRIMARY KEY (cust_id)
) ENGINE=InnoDB;

#########################
# Create orderitems table
#########################
CREATE TABLE orderitems
(
  order_num  int          NOT NULL ,
  order_item int          NOT NULL ,
  prod_id    char(10)     NOT NULL ,
  quantity   int          NOT NULL ,
  item_price decimal(8,2) NOT NULL ,
  PRIMARY KEY (order_num, order_item)
) ENGINE=InnoDB;


#####################
# Create orders table
#####################
CREATE TABLE orders
(
  order_num  int      NOT NULL AUTO_INCREMENT,
  order_date datetime NOT NULL ,
  cust_id    int      NOT NULL ,
  PRIMARY KEY (order_num)
) ENGINE=InnoDB;

#######################
# Create products table
#######################
CREATE TABLE products
(
  prod_id    char(10)      NOT NULL,
  vend_id    int           NOT NULL ,
  prod_name  char(255)     NOT NULL ,
  prod_price decimal(8,2)  NOT NULL ,
  prod_desc  text          NULL ,
  PRIMARY KEY(prod_id)
) ENGINE=InnoDB;

######################
# Create vendors table
######################
CREATE TABLE vendors
(
  vend_id      int      NOT NULL AUTO_INCREMENT,
  vend_name    char(50) NOT NULL ,
  vend_address char(50) NULL ,
  vend_city    char(50) NULL ,
  vend_state   char(5)  NULL ,
  vend_zip     char(10) NULL ,
  vend_country char(50) NULL ,
  PRIMARY KEY (vend_id)
) ENGINE=InnoDB;

###########################
# Create productnotes table
###########################
CREATE TABLE productnotes
(
  note_id    int           NOT NULL AUTO_INCREMENT,
  prod_id    char(10)      NOT NULL,
  note_date datetime       NOT NULL,
  note_text  text          NULL ,
  PRIMARY KEY(note_id),
  FULLTEXT(note_text)
) ENGINE=MyISAM;


#####################
# Define foreign keys
#####################
ALTER TABLE orderitems ADD CONSTRAINT fk_orderitems_orders FOREIGN KEY (order_num) REFERENCES orders (order_num);
ALTER TABLE orderitems ADD CONSTRAINT fk_orderitems_products FOREIGN KEY (prod_id) REFERENCES products (prod_id);
ALTER TABLE orders ADD CONSTRAINT fk_orders_customers FOREIGN KEY (cust_id) REFERENCES customers (cust_id);
ALTER TABLE products ADD CONSTRAINT fk_products_vendors FOREIGN KEY (vend_id) REFERENCES vendors (vend_id);

DATA文

########################################
# MySQL Crash Course MYSQL必知必会数据语句
# http://www.forta.com/books/0672327120/
# 提供者博客园:后青春期的Keats 复制请注明出处
########################################


##########################
# Populate customers table
##########################
INSERT INTO customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)
VALUES(10001, 'Coyote Inc.', '200 Maple Lane', 'Detroit', 'MI', '44444', 'USA', 'Y Lee', '[email protected]');
INSERT INTO customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact)
VALUES(10002, 'Mouse House', '333 Fromage Lane', 'Columbus', 'OH', '43333', 'USA', 'Jerry Mouse');
INSERT INTO customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)
VALUES(10003, 'Wascals', '1 Sunny Place', 'Muncie', 'IN', '42222', 'USA', 'Jim Jones', '[email protected]');
INSERT INTO customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)
VALUES(10004, 'Yosemite Place', '829 Riverside Drive', 'Phoenix', 'AZ', '88888', 'USA', 'Y Sam', '[email protected]');
INSERT INTO customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact)
VALUES(10005, 'E Fudd', '4545 53rd Street', 'Chicago', 'IL', '54545', 'USA', 'E Fudd');


########################
# Populate vendors table
########################
INSERT INTO vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)
VALUES(1001,'Anvils R Us','123 Main Street','Southfield','MI','48075', 'USA');
INSERT INTO vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)
VALUES(1002,'LT Supplies','500 Park Street','Anytown','OH','44333', 'USA');
INSERT INTO vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)
VALUES(1003,'ACME','555 High Street','Los Angeles','CA','90046', 'USA');
INSERT INTO vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)
VALUES(1004,'Furball Inc.','1000 5th Avenue','New York','NY','11111', 'USA');
INSERT INTO vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)
VALUES(1005,'Jet Set','42 Galaxy Road','London', NULL,'N16 6PS', 'England');
INSERT INTO vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)
VALUES(1006,'Jouets Et Ours','1 Rue Amusement','Paris', NULL,'45678', 'France');


#########################
# Populate products table
#########################
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('ANV01', 1001, '.5 ton anvil', 5.99, '.5 ton anvil, black, complete with handy hook');
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('ANV02', 1001, '1 ton anvil', 9.99, '1 ton anvil, black, complete with handy hook and carrying case');
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('ANV03', 1001, '2 ton anvil', 14.99, '2 ton anvil, black, complete with handy hook and carrying case');
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('OL1', 1002, 'Oil can', 8.99, 'Oil can, red');
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('FU1', 1002, 'Fuses', 3.42, '1 dozen, extra long');
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('SLING', 1003, 'Sling', 4.49, 'Sling, one size fits all');
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('TNT1', 1003, 'TNT (1 stick)', 2.50, 'TNT, red, single stick');
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('TNT2', 1003, 'TNT (5 sticks)', 10, 'TNT, red, pack of 10 sticks');
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('FB', 1003, 'Bird seed', 10, 'Large bag (suitable for road runners)');
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('FC', 1003, 'Carrots', 2.50, 'Carrots (rabbit hunting season only)');
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('SAFE', 1003, 'Safe', 50, 'Safe with combination lock');
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('DTNTR', 1003, 'Detonator', 13, 'Detonator (plunger powered), fuses not included');
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('JP1000', 1005, 'JetPack 1000', 35, 'JetPack 1000, intended for single use');
INSERT INTO products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('JP2000', 1005, 'JetPack 2000', 55, 'JetPack 2000, multi-use');



#######################
# Populate orders table
#######################
INSERT INTO orders(order_num, order_date, cust_id)
VALUES(20005, '2005-09-01', 10001);
INSERT INTO orders(order_num, order_date, cust_id)
VALUES(20006, '2005-09-12', 10003);
INSERT INTO orders(order_num, order_date, cust_id)
VALUES(20007, '2005-09-30', 10004);
INSERT INTO orders(order_num, order_date, cust_id)
VALUES(20008, '2005-10-03', 10005);
INSERT INTO orders(order_num, order_date, cust_id)
VALUES(20009, '2005-10-08', 10001);


###########################
# Populate orderitems table
###########################
INSERT INTO orderitems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20005, 1, 'ANV01', 10, 5.99);
INSERT INTO orderitems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20005, 2, 'ANV02', 3, 9.99);
INSERT INTO orderitems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20005, 3, 'TNT2', 5, 10);
INSERT INTO orderitems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20005, 4, 'FB', 1, 10);
INSERT INTO orderitems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20006, 1, 'JP2000', 1, 55);
INSERT INTO orderitems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20007, 1, 'TNT2', 100, 10);
INSERT INTO orderitems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20008, 1, 'FC', 50, 2.50);
INSERT INTO orderitems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20009, 1, 'FB', 1, 10);
INSERT INTO orderitems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20009, 2, 'OL1', 1, 8.99);
INSERT INTO orderitems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20009, 3, 'SLING', 1, 4.49);
INSERT INTO orderitems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20009, 4, 'ANV03', 1, 14.99);

#############################
# Populate productnotes table
#############################
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(101, 'TNT2', '2005-08-17',
'Customer complaint:
Sticks not individually wrapped, too easy to mistakenly detonate all at once.
Recommend individual wrapping.'
);
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(102, 'OL1', '2005-08-18',
'Can shipped full, refills not available.
Need to order new can if refill needed.'
);
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(103, 'SAFE', '2005-08-18',
'Safe is combination locked, combination not provided with safe.
This is rarely a problem as safes are typically blown up or dropped by customers.'
);
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(104, 'FC', '2005-08-19',
'Quantity varies, sold by the sack load.
All guaranteed to be bright and orange, and suitable for use as rabbit bait.'
);
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(105, 'TNT2', '2005-08-20',
'Included fuses are short and have been known to detonate too quickly for some customers.
Longer fuses are available (item FU1) and should be recommended.'
);
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(106, 'TNT2', '2005-08-22',
'Matches not included, recommend purchase of matches or detonator (item DTNTR).'
);
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(107, 'SAFE', '2005-08-23',
'Please note that no returns will be accepted if safe opened using explosives.'
);
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(108, 'ANV01', '2005-08-25',
'Multiple customer returns, anvils failing to drop fast enough or falling backwards on purchaser. Recommend that customer considers using heavier anvils.'
);
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(109, 'ANV03', '2005-09-01',
'Item is extremely heavy. Designed for dropping, not recommended for use with slings, ropes, pulleys, or tightropes.'
);
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(110, 'FC', '2005-09-01',
'Customer complaint: rabbit has been able to detect trap, food apparently less effective now.'
);
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(111, 'SLING', '2005-09-02',
'Shipped unassembled, requires common tools (including oversized hammer).'
);
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(112, 'SAFE', '2005-09-02',
'Customer complaint:
Circular hole in safe floor can apparently be easily cut with handsaw.'
);
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(113, 'ANV01', '2005-09-05',
'Customer complaint:
Not heavy enough to generate flying stars around head of victim. If being purchased for dropping, recommend ANV02 or ANV03 instead.'
);
INSERT INTO productnotes(note_id, prod_id, note_date, note_text)
VALUES(114, 'SAFE', '2005-09-07',
'Call from individual trapped in safe plummeting to the ground, suggests an escape hatch be added.
Comment forwarded to vendor.'
);

おすすめ

転載: www.cnblogs.com/keatsCoder/p/11878203.html