検索
ホームページデータベースmysql チュートリアルmysqlの複数テーブル操作を完全にマスターする

この記事では、mysql に関する関連知識を提供します。主に、複数テーブルのリレーションシップ、外部キー制約、複数テーブルの結合クエリ、内部接続クエリ、外部クエリなどの複数テーブル操作に関連する問題を紹介します。接続クエリなど、皆様のお役に立てれば幸いです。

mysqlの複数テーブル操作を完全にマスターする

推奨される学習: mysql チュートリアル

複数テーブルのリレーションシップ

1 対 1 (通常はマージされる)テーブル)、
1 対多/多対 1 (部門と従業員)、
多対多 (学生とコース) - 中間テーブルの使用

外部キー制約の概念

複数テーブルのリレーションシップに特化した制約
マスター テーブルの主キーを介してスレーブ テーブルの外部キーを制御

外部キー制約:

1. マスター テーブルが既に存在するか、作成している必要があります## 2. 主キー列がメイン テーブルに設定されている必要があります## 3. 主キーには null 値を含めることはできませんが、外部キーには null 値を含めることができます
4. メインテーブルのテーブル名の後に列を指定するか、列名の組み合わせを指定します。この列または列の組み合わせは、メイン テーブルの主キーまたは候補キーである必要があります
5. 外部キーの列の数は、主キーの列の数と同じである必要があります
6.外部キーの列のデータ型は主キーの列の数と同じである必要があります 対応する列のデータ型は同じです

• 外部キー制約の作成

foreign key

テーブルを作成する前に外部キー制約を追加します

mysqlの複数テーブル操作を完全にマスターするテーブルを作成した後に外部キー制約を追加します

##外部キー制約の役割を確認しますmysqlの複数テーブル操作を完全にマスターする

1. データ挿入:

まずメイン テーブルに追加する必要があります制約

スレーブ テーブルからの制約の追加はマスター テーブルに依存します。




#2. データ削除mysqlの複数テーブル操作を完全にマスターする マスターテーブルのデータがスレーブテーブルに依存している場合は削除できませんが、そうでない場合は削除可能です。削除されました

テーブルのデータは任意に削除できます


例:

delete from dept where deptno = '1001';-----不可以删除(被依赖了)delete from dept where deptno = '1004';
------可以删除delete from emp where eid = '7';  -----可以删除
外部キー制約を削除します

削除後、テーブル間に隙間ができますもう関係ありません

構文:

alter table 表名字 drop foreign key 外键约束名alter table emp2 drop foreign key emp2_fk;


• 多対多の関係 - 外部キー制約の構築mysqlの複数テーブル操作を完全にマスターする テーブル A の 1 つの行は、次のものに対応します。テーブル B の複数の行、テーブル B の 1 行がテーブル A の複数の行に対応します。このとき、テーブルの関係を記録するために

中間テーブル

を再作成する必要があります。
注:
変更と削除の場合、中央のスレーブ テーブルは自由に削除および変更できますが、両側のスレーブ テーブルとマスター テーブルが依存するデータは削除できませんまたは変更されました。 mysqlの複数テーブル操作を完全にマスターする

複数テーブルの結合クエリ (非常に重要)
• コンセプト は、同時に 2 つ以上のテーブルをクエリすることです

。 、表示する必要があるデータは複数のテーブルからのものです

• データの準備

注:
外部キー制約はデータの追加、削除、変更にのみ影響し、データ クエリには影響しません• クロス結合クエリ

select * from A,B

;---冗長データが生成されます

1. クロス結合クエリは、接続された

2 つのテーブルを返しますすべてのデータ行のデカルト積

2. デカルト集合は、あるテーブルの各行が別のテーブルの任意の行と一致すると理解できます 3. テーブル A に m 行のデータがあり、テーブル B には m 行のデータがあるとします。 n 行のデータの場合、

m * n 行のデータ

が返されます。 4. デカルト積により、大量の 冗長
データが生成され、その後の他のクエリを実行できます。この条件付きフィルタリングでは、セット
内部結合クエリ
に基づいて 2 つのテーブル間の 交差部分を検索します

inner
mysqlの複数テーブル操作を完全にマスターする 暗黙的な内部結合 (SQL92 標準):

select * from A,B where 条件;

明示的な内部結合 (SQL99 標準); <pre class="brush:php;toolbar:false">select * from A inner join B on 条件</pre> <pre class="brush:php;toolbar:false">---查询每个部门的所属员工  //隐式内连接</pre> <pre class="brush:php;toolbar:false">select* from dept3,emp3 where dept3.deptno = emp3.dept_id;  //这样写标准</pre> を指定することもできます。テーブルの別名 (例:

select* from dept3  a ,emp3 b  where a.deptno = b.dept_id;
	---查询每个部门的所属员工  
	//显式内连接select *from dept3 inner join emp3  on dept3.deptno = emp3.dept_id;  
	//这样写标准

) テーブルに別名 (例:

select *from dept3 a join emp3 b on a.deptno = b.dept_id;

#) を付けることもできます。

mysqlの複数テーブル操作を完全にマスターする#外部結合クエリ

# は次のように分割されます: (outer は省略可能)mysqlの複数テーブル操作を完全にマスターする 左外部結合
左外部結合mysqlの複数テーブル操作を完全にマスターする

select* from A left outer join B on 条件;

right外部結合

右外部結合


select* from A right outer join B on 条件;
完全外部結合完全外部結合

select* from A full outer join B on 条件;

注意:
Oracle 里面有 full join ,可是在mysql 对 full join 支持的不好,我们可以使用 union来达到目的
mysqlの複数テーブル操作を完全にマスターする

----外连接查询
----查询哪些部门有员工,哪些部门没有员工

use mydb3;select* from dept3 left outer join emp3 on dept3.deptno =emp3.dept_id;

----查询哪些员工有对应的部门,哪些没有

select* from dept3 right outer join emp3 on dept3.deptno =emp3.dept_id;

----使用 union 关键字实现左外连接和右外连接的并集

select* from dept3 left outer join emp3 on dept3.deptno=emp3.dept_idunionselect* from dept3 right outer join emp3 on dept3.deptno =emp3.dept_id;

mysqlの複数テーブル操作を完全にマスターする

----外连接查询
----查询哪些部门有员工,哪些部门没有员工

usemydb3;select* from dept3 a left outer join emp3 b on a.deptno = b.dept.idselect* from dept3 a left join emp3 b on a.deptno = b.dept_id;

----外连接多个表

select* from Aleft join B on 条件1left join C on 条件2left join D on 条件3;

mysqlの複数テーブル操作を完全にマスターする

----查询哪些员工有对应的部门,哪些没有

select * from dept3 a right outer join emp3 b on a.deptno = b.dept_id;select* from dept3 a right join emp3 b on a.deptno = b,dept_id;select*from Aright joinB on条件1,right joinC on条件2,right joinD on条件3;

mysqlの複数テーブル操作を完全にマスターする

----实现满外连接: full join
----使用 union 关键字实现左外连接和右外连接的并集
----select * from dept3 a full join emp3 b on a.deptno = b.dept_id; --不能执行

----union是将两个查询结果上下拼接,并去重

select* from dept3 a left join emp3 b on a.deptno = b.dept_idunionselect* from dept3 a right join emp3 b on a.deptno = b.dept_id

----union all 是将两个查询结果上下拼接,不去重

select* from dept3 a left join emp3 b on a.deptno = b.dept_idunion allselect* from dept3 a right join emp3 b on a.deptno= b.dept_id

mysqlの複数テーブル操作を完全にマスターする

• 基本子查询
• 子查询关键字-ALL
• 子查询关键字-ANY ,SOME
• 子查询关键字-IN
• 子查询关键字-EXISTS
• 自关联查询

推荐学习:mysql视频教程

以上がmysqlの複数テーブル操作を完全にマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
MySQLはデータレプリケーションをどのように処理しますか?MySQLはデータレプリケーションをどのように処理しますか?Apr 28, 2025 am 12:25 AM

MySQLは、非同期、半同期、およびグループ複製の3つのモードを介してデータの複製を処理します。 1)非同期の複製パフォーマンスは高くなりますが、データが失われる可能性があります。 2)半同期複製により、データセキュリティが向上しますが、遅延が増加します。 3)グループレプリケーションは、高可用性要件に適したマルチマスターレプリケーションとフェールオーバーをサポートします。

説明ステートメントを使用してクエリパフォーマンスを分析するにはどうすればよいですか?説明ステートメントを使用してクエリパフォーマンスを分析するにはどうすればよいですか?Apr 28, 2025 am 12:24 AM

説明ステートメントは、SQLクエリのパフォーマンスを分析および改善するために使用できます。 1.説明ステートメントを実行して、クエリプランを表示します。 2。出力結果を分析し、アクセスの種類、インデックスの使用量に注意し、順序を結合します。 3.分析結果に基づいてインデックスを作成または調整し、結合操作を最適化し、フルテーブルスキャンを回避してクエリ効率を向上させます。

MySQLデータベースをバックアップして復元するにはどうすればよいですか?MySQLデータベースをバックアップして復元するにはどうすればよいですか?Apr 28, 2025 am 12:23 AM

論理バックアップにMySQLDUMPとホットバックアップにMySQLenterPriseBackupを使用することは、MySQLデータベースをバックアップする効果的な方法です。 1. mysqldumpを使用してデータベースをバックアップします:mysqldump-uroot-pmydatabase> mydatabase_backup.sql。 2。ホットバックアップにmysqlenterprisebackupを使用:mysqlbackup - user = root-password = password - backup-dir =/path/to/backupbackup。回復するときは、対応する寿命を使用します

MySQLのスロークエリの一般的な原因は何ですか?MySQLのスロークエリの一般的な原因は何ですか?Apr 28, 2025 am 12:18 AM

MySQLのクエリが遅い主な理由には、インデックスの欠落または不適切な使用、クエリの複雑さ、過剰なデータボリューム、および不十分なハードウェアリソースが含まれます。最適化の提案には以下が含まれます。1。適切なインデックスを作成します。 2。クエリステートメントを最適化します。 3.テーブルパーティションテクノロジーを使用します。 4.適切にハードウェアをアップグレードします。

mysqlのビューは何ですか?mysqlのビューは何ですか?Apr 28, 2025 am 12:04 AM

MySQLビューは、SQLクエリの結果に基づいた仮想テーブルであり、データを保存しません。 1)ビューは複雑なクエリを簡素化し、2)データセキュリティを強化し、3)データの一貫性を維持します。ビューは、テーブルのように使用できるデータベースにクエリを保存しますが、データは動的に生成されます。

MySQLと他のSQL方言の構文の違いは何ですか?MySQLと他のSQL方言の構文の違いは何ですか?Apr 27, 2025 am 12:26 AM

MySQLdiffersfromotherSQLdialectsinsyntaxforLIMIT,auto-increment,stringcomparison,subqueries,andperformanceanalysis.1)MySQLusesLIMIT,whileSQLServerusesTOPandOracleusesROWNUM.2)MySQL'sAUTO_INCREMENTcontrastswithPostgreSQL'sSERIALandOracle'ssequenceandt

MySQLパーティションは何ですか?MySQLパーティションは何ですか?Apr 27, 2025 am 12:23 AM

MySQLパーティション化により、パフォーマンスが向上し、メンテナンスが簡素化されます。 1)大きなテーブルを特定の基準(日付範囲など)、2)物理的に独立したファイルに物理的に分割する、3)MySQLはクエリするときに関連するパーティションに焦点を合わせることができます。

MySQLで特権をどのように許可して取り消しますか?MySQLで特権をどのように許可して取り消しますか?Apr 27, 2025 am 12:21 AM

mysqlで許可を許可および取り消す方法は? 1。grantallprivilegesondatabase_name.to'username'@'host 'などの許可を付与するために付与ステートメントを使用してください。 2。Revokeallprivilegesondatabase_name.from'username'@'host 'など、Revoke Statementを使用して、許可のタイムリーな通信を確保します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

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

mPDF

mPDF

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

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター