MySQLのクエリごと04-

関連のお問い合わせ

1、接続:A∩B

選択フィールドリスト
 からテーブル 参加Bテーブル
 関連した状態
の他の句。

2、左外側

クエリ結果は、#A達成される
 SELECTのフィールドリスト
 から A表 参加Bテーブル
 関連した条件
 場所のような他の条項; 

#はAを得る- A∩B
 SELECTのフィールドリスト
 から A表 参加Bテーブル
 リンク条件
 場所テーブル関連フィールドIS  ヌル およびその他の句は、

3、右外側コネクタ

#クエリ結果がB達成される
 SELECTのフィールドリスト
 から A表 参加Bテーブル
 関連した条件
 場合、他の句は次のよう

#B実現-   A∩B
 SELECTのフィールドリスト
 から A表 参加Bテーブル
 リンク状態
テーブルは、フィールドに関連しますIS ヌルおよびその他の句は、  

4、代わりに全体の外部接続ユニオンを使用して

クエリの結果が達成されるA∪B#1 
#は、外側Aを左、ユニオン外側右B
 SELECTのフィールドリスト
 から A表は 参加Bテーブル
 関連した状態
 の他の句は、ユニオンSELECTのフィールドリスト
 から A表参加Bテーブル
 関連する症状
 ここで他の句; 
#はA∪B達成-   A∩B又は(-   A∩B)∪(B - A∩B) 左外#使用-   A∩B)   ユニオン(外側の権利をB - A∩B)
 SELECT フィールドリスト
 から Aテーブルには、左の参加します

 

 
 表B
 上のリンク状態
テーブルに関連するフィールドがIS ヌル他の句連合SELECTのフィールドリスト
 から、 A表の右に参加表B
 上のリンク状態  



 

UNIONルール

UNIONは、各クエリが同じ列、式、または集計関数を含んでいなければならない(ただし、同じ順序で列挙された個々の列を必要としません)。

タイプは、必ずしも同じ、それがなければならないDBMSの入力でき、暗黙的に(例えば、異なる種類または日付タイプの異なる値)変換:列データ・タイプは互換性がなければなりません。

テーブルのデータUNIONの複数を組み合わせる必要も有用である場合、実際には、この場合には、一致テーブルの列名が存在しない場合でも、組み合わせUNION別名、検索結果セット。

図5に示すように、接続以降:同じテーブル、別名、仮想の方法によって2つのテーブルに

選択フィールドリスト
 からテーブルエイリアスを1 インナー/左/右に 参加表2名エイリアス
 オンエイリアス関連フィールド1 = 対応するフィールドエイリアス2
の他の条件を

6大規模な順序句

(1)から:テーブルからフィルタ

(2):テーブルからフィルタ条件

(3)グループ:グループ化

(4)を有する:統計結果に再びスクリーニング

分類:(5)順序

DESC:DESC  昇順:デフォルトまたはASCを追加するのいずれか

ORDER BY句は、SELECT文のちょうど最後の部分のようですが、実際にDBMSは、すべてのSELECT文のリターンのすべての結果をソートするためにそれを使用しますが。

(6)限界:ページング

限界M、N

M =(数P - 1)*ページの数

ページのN =数

グループ機能によるグループ

GROUP BY句はグループに分割されているテーブル内のデータを使用することができ

SELECTリストでは、すべての列がGROUP BY句に含まれるべきでグループ化機能に含まれていません

GROUP BY句に含まれた列は、SELECTリストに含める必要はありません

そして、どこの違いはあります

テーブル条件からスクリーニングされた(1)、統計結果は、再度スクリーニング有します

(2)「は、パケット/集約関数」ここで再度追加することができず、それ以降のパケットと機能を持つことができ

サブクエリ

クエリは、別のクエリにネストされたサブクエリSELECTステートメントのクエリのみの単一列として。複数の列を取得しようとすると、エラーが返されます。

場所によっては、分け:

(1)タイプ

サブクエリの結果は単一の値である①、その(=、>比較演算子など)で使用することができ

②サブクエリが多値結果であり、あなたが)(サブクエリ結果に[しない(それを使用することができ、又は>全て(サブクエリ結果)、または> =全て(サブクエリの結果)、<全て(サブクエリ結果) 、<=全て(サブクエリ結果)、又は>任意(サブクエリ結果)、または> =任意の(サブクエリ結果)<いずれか(サブクエリの結果)、<=任意の(サブクエリの結果))

(2)から型

子供にエイリアス問い合せる必要があり、それは一時的なテーブル名で、エイリアステーブルは、「」を追加し、スペースはありません

表の別名句は句だけでなく、他のステートメントのセクションBY ORDER、SELECTリストでも使用することができますWHEREで使用されていないだけ。

唯一のクエリの実行中に表の別名を使用しています。別名は、表の別名がクライアントに返されていない、同じ列ではありません。

(3)が存在型

注:関係なく、サブクエリは、サブクエリを使用しなければならないところの()同封

業務

でも、故障した場合、すべてのトランザクションが作業単位として実行されるようにするには、この実装を変更することはできません。単一のトランザクションで複数の操作を実行する、またはすべての場合(コミット)トランザクションが提出されているか、すべての変更を破棄するデータベース管理システムは、全体製;、その後、それらの変更は、恒久的にダウン保存され、トランザクションがロールバック(ロールバック)に初期状態

トランザクションのACID特性:

(1) 原子)の原子トランザクションがいずれかのトランザクションに作業操作の不可分単位で発生し又は発生しないことをアトミック手段。

(2)整合性(一貫性)、トランザクション・データベースは、別の一貫性のある状態にある一貫した状態から変換されなければなりません。

(3)分離(単離)トランザクション分離の実行の間には、他のトランザクションが妨害することができないトランザクション、即ち、操作および他の同時トランザクションが単離されているトランザクション内のデータを使用すること、個々のトランザクションが同時に実行を指し私たちは、互いに干渉することはできません。

(4) 耐久性)永続トランザクションがコミットされると、それはデータベース内のデータを変更することを永続手段が永久的である場合、他の操作とデータベースの障害は、その上の任意の影響を与えるべきではありません

MySQLのデフォルトが自動的に送信され、の実装は1を提出しました。

私は手動でトランザクションをコミットします:

(1)偽セット自動コミット=

そして、すべての文を手動で提出しなければなりません、

コミット、または  ROLLBACK ;または異常;

私は真の自動コミット=設定するまで、または再接続を、

それ以外の場合は、ステートメントは、それはすべて手動で提出し、次の

(2)トランザクションを開始

自動送信モードでは、SQLの特定のグループのために別のトランザクションを開きます

SQL文のセット

コミット、またはROLLBACK;

データベースの分離レベル

    • ダーティ読み取り:2つのトランザクションT1、T2のために、T1、T2が更新されているが読み取られるが提出されていないフィールドを。その後、ロールバックT2は、T1は、一時の内容を読み取り、有効です。

    • 非反復リード2つのトランザクションT1、T2のため、T1は、次にフィールドT2を読み取る更新フィールド。T1は再び同じフィールドから読み込まれ、後に、値が異なっています。

    • マジックリーディングT1は、T2、T1は、テーブルのフィールドから読み出された二つのトランザクションのために、そして内のテーブルT2:挿入新しい行。T1は、再び同じテーブルを読み込む場合はその後、より多くの数行があるでしょう。

  • データベーストランザクションの分離:データベース・システムは、分離株の個別取引の能力を持っている必要がありますが、彼らはお互いに影響を与えないように、並行性の問題のすべての種類を避けるため、同時に実行します。

  • トランザクションの程度は、他のトランザクションから分離されている分離レベルと呼ばれます。データベーストランザクション分離レベルの多様性を提供し、異なる分離レベルは、干渉の度合いに対応し、より高い分離レベルは、データの整合性は良好であるが、より弱い並行性。

:Oracleは、トランザクション分離レベルの2種類のサポートREAD COMMITED 、SERIALIZABLEを。Oracleのデフォルトのトランザクション分離レベル:READ COMMITED。

MySQLは4つのトランザクションの分離レベルをサポートしています。MySQLのデフォルトのトランザクション分離レベル:REPEATABLE READ mysqlのREPEATABLE READ分離レベルではファントム読み取りを回避することができます。

MySQLでは分離レベルを設定します

  • 各プログラムを起動MYSQL、あなたは、単一のデータベース接続を取得します。各データベース接続は、グローバル変数@@ tx_isolationを有する現在のトランザクション分離レベルことを示しています。

  • 現在の分離レベル見る:SELECT @@ TX_ISOLATIONを。

  • グローバル分離レベルを見る:SELECT @@ global.tx_isolationを。

  • 現在のMySQL接続の分離レベルを設定します:

セットtx_isolation = 「反復可能読み取り」;
  • グローバル分離レベルのデータベース・システムの設定:

グローバルtx_isolationを設定= 「読み取りコミット」;

注:この分離レベルの真ん中がマイナスで、下線付きません。

ユーザーと権限

ユーザーログイン

(1)認証などのIP +ユーザ名

(2)パスワード

各ユーザーの権限、4つの権限レベルへ:

(1)グローバル(2)データベース(3)表(4)フィールド

検証機関に続いて、前に渡された場合、チェックのないバック:

グローバル>データベース>テーブル>フィールド

注:ルート@ localhostの、ユーザーは常に、すべてのグローバル権利を保有します。

アカウントのアクセス許可を表示します。

ホスト@ユーザーのための助成金を示し;

おすすめ

転載: www.cnblogs.com/Open-ing/p/12037140.html