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 )