mysqlマルチテーブルクエリ、内部と外部の完全な接続(1)

1.部門テーブルを作成します。

CREATE TABLE dept (
id INT ( 11 ) NOT NULL PRIMARY KEY,
name VARCHAR ( 50 )

);

データを追加:5つの部門

INSERT INTO dept ( id, name )
VALUES
	( 1, '销售部' ),
	( 2, '研发部' ),
	( 3, '运营部' ),
	( 4, '人力资源部' ),
	( 5, '产品部' )

2.従業員テーブルを作成します

CREATE TABLE emp (
id INT ( 11 ) NOT NULL PRIMARY KEY,
name VARCHAR ( 50 ),
entryTime TIMESTAMP,
dept_id INT,
salary DOUBLE
);

従業員データを追加します。

INSERT INTO emp ( id, name, entryTime, dept_id, salary )
VALUES
	( 1, '张飞', '2016-08-16 14:32:08', 1, '8000' ),
	( 2, '关羽', '2016-08-16 14:32:08', 3, '9000' ),
	( 3, '赵云', '2016-08-16 14:32:08', 4, '1000' ),
	( 4, '吕布', '2016-08-16 14:32:08', 2, '2000' ),
	( 5, '曹操', '2016-08-16 14:32:08', 3, '3000' )

クエリ操作を開始します。

シングルクエリ:

1。

select * from dept
select * from emp

ショーケース:

2. 2つのテーブルをクエリする

select * from dept,emp

マルチテーブルクエリの分類:

(1)内部クエリ

         (1)暗黙的なインライン化:where条件を使用して不要なデータを排除する

select * from dept,emp WHERE emp.dept_id=dept.id

    指定されたフィールドをクエリします。 

select emp.id,emp.name,emp.salary,dept.name
from dept,emp WHERE emp.dept_id=dept.id

           (2)表示された内部接続

文法:

select [字段] from [表1] inner join [表2] on [条件]
select * from emp INNER JOIN dept ON emp.dept_id=dept.id

結果:

 

(1)外部リンククエリ

従業員テーブルにデータを追加する

(1)左アウター接続

左側のテーブルはメインテーブル、左側のテーブルはすべてを示し、右側はサブテーブル、右側はシンボルデータがない場合はnullを示し、非準拠のものは表示しません。

左のテーブルのすべてのデータと右のテーブルの共通部分

select e1.*,d2.name from emp e1 LEFT OUTER JOIN dept d2 ON e1.dept_id=d2.id

 

(2)右外部接続

右側はメインテーブル、右側のテーブルはすべてを示し、左側はサブテーブルを示し、左側はシンボルデータがない場合はnullを示し、非準拠のものは表示されません。

select e1.*,d2.name from emp e1 RIGHT OUTER JOIN dept d2 ON e1.dept_id=d2.id

select e1.*,d2.name from dept d2 RIGHT JOIN emp e1 ON e1.dept_id=d2.id

(2)完全な外部接続

完全な外部接続:左側のメインテーブル、右側の補助テーブル、メインテーブルと補助テーブルがすべて表示され、シンボルデータがない場合は右側にnullが表示され、シンボルデータがない場合は左側にnullが表示され、条件を満たすデータが1行に表示されます。

MYSQLは完全外部結合をサポートしていないため、OracleおよびDB2に適しています。

MySQLでは、左外部結合と右外部結合のコレクションを検索することにより、完全外部結合を実現できます。

SELECT
	emp.`name`,
	emp.dept_id 
FROM
	emp
	LEFT JOIN dept ON dept.id = emp.dept_id UNION
SELECT
	emp.`name`,
	dept.id 
FROM
	emp
	RIGHT JOIN dept ON dept.id = emp.dept_id 

結果:

サブクエリ:

最高給与を照会します。

SELECT max( salary ) FROM emp

9000に等しい従業員をクエリします。

SELECT salary FROM emp WHERE emp.salary = 9000

従業員テーブルで給与が最も高い人にクエリを実行します。

SELECT * FROM emp WHERE emp.salary = ( SELECT max( salary ) FROM emp ) 

 

 

 

 

おすすめ

転載: blog.csdn.net/jack_bob/article/details/106822404