この記事では、主に Mysql 結合操作の関連情報を紹介します。必要な友達は、
結合の種類
1 を参照してください。内部結合: 2 つのテーブルのフィールドに結合関係があり、その結合関係に一致するレコードを結合してレコード セットを形成する結合。
2.外部結合: 外部左結合と外部右結合に分かれます。
ケースの背景
create table java (name varchar(255)); insert into java values ('java1'),('java2'),('blue'); create table mysql (name varchar(255)); insert into mysql values ('mysql1'),('mysql2'),('blue');
内部結合
select * from java,mysql where java.name=mysql.name; SELECT * FROM java JOIN mysql ON java.name=mysql.name; SELECT * FROM java INNER JOIN mysql ON java.name=mysql.name; SELECT * FROM java CROSS JOIN mysql ON java.name=mysql.name; SELECT * FROM java STRAIGHT_JOIN mysql ON java.name=mysql.name;
これらの 4 つのステートメントはすべて内部結合であり、返される結果はすべて
+------+------+ | name | name | +------+------+ | blue | blue | +------+------+
-
table_reference エントリ内のすべてのカンマは内部結合と同等とみなされます
デフォルトのJOINはINNER JOINです
CROSS JOINは構文的にINNER JOINと同等です
STRAIGHT_JOINはJOINと同じです。 1 つの違いを除いて、左側のテーブルは右側のテーブルよりも前に読み取られます。 STRAIGH_JOIN は、結合オプティマイザがテーブルを間違った順序で並べ替える状況で使用できます。
内部結合の構文は次のとおりです:
join_table: table_reference [INNER | CROSS] JOIN table_factor [join_condition] | table_reference STRAIGHT_JOIN table_factor | table_reference STRAIGHT_JOIN table_factor ON condition
outer join
left join
SELECT * FROM java LEFT JOIN mysql ON java.name=mysql.name;
結果は
+-------+------+ | name | name | +-------+------+ | java1 | NULL | | java2 | NULL | | blue | blue | +-------+------+
です。つまり、上記の結果から、名前が記録されているためであることがわかります。 Java テーブルの java1 と java2 は一致しません。MySQL テーブルには対応する名前があるため、空になっていますが、java のすべての列には java1 および java2 レコードがあり、mysql テーブルのすべての列は NULL です。残りの青色のレコードは、Java テーブルと mysql テーブルの間の内部結合の結果です。 LEFT JOIN の ON または USING 部分に右のテーブルに一致するレコードがない場合、すべての列が NULL に設定された行が右のテーブルに使用されます。テーブルに対応する部分が
otherテーブルにない場合、このメソッドを使用してこのテーブル内のレコードを検索できます: SELECT * FROM java LEFT JOIN mysql ON java.name=mysql.name WHERE mysql.name IS NULL;
この SQL は Java で人を見つけますが、mysql では見つけません。これは明らかに人 'java1' です。および「java2」は要件を満たしています。
右結合SELECT * FROM java RIGHT JOIN mysql ON java.name=mysql.name;
返される結果は次のとおりです
+------+--------+ | name | name | +------+--------+ | NULL | mysql1 | | NULL | mysql2 | | blue | blue | +------+--------+
右結合の結果は左結合と似ていますが、今回は mysql テーブルがすべての結果セットを保存する点が異なります。
外部結合の構文join_table:| table_reference LEFT [OUTER] JOIN table_reference join_condition
| table_reference NATURAL [LEFT [OUTER]] JOIN table_factor
| table_reference RIGHT [OUTER] JOIN table_reference join_condition
| table_reference NATURAL [RIGHT [OUTER]] JOIN table_factor
USING(column_list)句は、両方のテーブルに存在する必要がある一連の列に名前を付けるために使用されます
SELECT java.*,mysql.* FROM java LEFT JOIN mysql USING (name);
結果が返されます
+-------+------+ | name | name | +-------+------+ | java1 | NULL | | java2 | NULL | | blue | blue | +-------+------+
結合の操作の順序SELECT * FROM t1 LEFT JOIN (t2, t3, t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c);
--相当于
SELECT * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)
結合の順序に対する括弧の影響
SELECT t1.id,t2.id,t3.id FROM t1,t2 LEFT JOIN t3 ON (t3.id=t1.id) WHERE t1.id=t2.id; --实际上这么执行 SELECT t1.id,t2.id,t3.id FROM t1,( t2 LEFT JOIN t3 ON (t3.id=t1.id) ) WHERE t1.id=t2.id; --应该这么写 SELECT t1.id,t2.id,t3.id FROM (t1,t2) LEFT JOIN t3 ON (t3.id=t1.id) WHERE t1.id=t2.id;
ここで括弧は非常に重要なので、将来そのような
クエリを書くときは、もっと書くことを忘れてはなりません括弧、これで少なくとも多くの間違いを避けることができます
以上がMysql での結合操作の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

酸性属性には、原子性、一貫性、分離、耐久性が含まれ、データベース設計の基礎です。 1.原子性は、トランザクションが完全に成功するか、完全に失敗することを保証します。 2.一貫性により、データベースがトランザクションの前後に一貫性を保証します。 3.分離により、トランザクションが互いに干渉しないようにします。 4.永続性により、トランザクションの提出後にデータが永久に保存されることが保証されます。

MySQLは、データベース管理システム(DBMS)であるだけでなく、プログラミング言語にも密接に関連しています。 1)DBMSとして、MySQLはデータを保存、整理、取得するために使用され、インデックスを最適化するとクエリのパフォーマンスが向上する可能性があります。 2)SQLとPythonに埋め込まれたプログラミング言語とSQLalchemyなどのORMツールを使用すると、操作を簡素化できます。 3)パフォーマンスの最適化には、インデックス、クエリ、キャッシュ、ライブラリ、テーブル分割、およびトランザクション管理が含まれます。

MySQLはSQLコマンドを使用してデータを管理します。 1.基本コマンドには、select、挿入、更新、削除が含まれます。 2。高度な使用には、参加、サブクエリ、および集計関数が含まれます。 3.一般的なエラーには、構文、ロジック、パフォーマンスの問題が含まれます。 4。最適化のヒントには、インデックスの使用、Select*の回避、制限の使用が含まれます。

MySQLは、データの保存と管理に適した効率的なリレーショナルデータベース管理システムです。その利点には、高性能クエリ、柔軟なトランザクション処理、豊富なデータ型が含まれます。実際のアプリケーションでは、MySQLはeコマースプラットフォーム、ソーシャルネットワーク、コンテンツ管理システムでよく使用されますが、パフォーマンスの最適化、データセキュリティ、スケーラビリティに注意を払う必要があります。

SQLとMySQLの関係は、標準言語と特定の実装との関係です。 1.SQLは、リレーショナルデータベースの管理と操作に使用される標準言語であり、データの追加、削除、変更、クエリを可能にします。 2.MYSQLは、SQLを運用言語として使用し、効率的なデータストレージと管理を提供する特定のデータベース管理システムです。

INNODBは、レドログと非論的なものを使用して、データの一貫性と信頼性を確保しています。 1.レドログは、クラッシュの回復とトランザクションの持続性を確保するために、データページの変更を記録します。 2.Undologsは、元のデータ値を記録し、トランザクションロールバックとMVCCをサポートします。

説明コマンドのキーメトリックには、タイプ、キー、行、および追加が含まれます。 1)タイプは、クエリのアクセスタイプを反映しています。値が高いほど、constなどの効率が高くなります。 2)キーは使用されているインデックスを表示し、nullはインデックスがないことを示します。 3)行はスキャンされた行の数を推定し、クエリのパフォーマンスに影響します。 4)追加の情報を最適化する必要があるというFilesortプロンプトを使用するなど、追加情報を提供します。

Temporaryを使用すると、MySQLクエリに一時テーブルを作成する必要があることが示されています。これは、異なる列、またはインデックスされていない列を使用して順番に一般的に見られます。インデックスの発生を回避し、クエリを書き直し、クエリのパフォーマンスを改善できます。具体的には、expliect出力に使用を使用する場合、MySQLがクエリを処理するために一時テーブルを作成する必要があることを意味します。これは通常、次の場合に発生します。1)個別またはグループビーを使用する場合の重複排除またはグループ化。 2)Orderbyに非インデックス列が含まれているときに並べ替えます。 3)複雑なサブクエリを使用するか、操作に参加します。最適化方法には以下が含まれます。1)OrderbyとGroupB


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

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

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版
便利なJavaScript開発ツール
