黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

MySQL數據庫概述及數據準備
MySQL數據庫常用命令
MySQL數據庫查看表結構
MySQL查詢字段
MySQL條件查詢
MySQL排序
MySQL函數
MySQL分組函數/聚合函數/多行處理函數
MySQL分組查詢
MySQL連接查詢
MySQL子查詢
MySQL UNION
MySQL中limit的用法
MySQL表
MySQL存儲引擎
MySQL事務
MySQL索引
MySQL視圖
MySQL DBA命令
MySQL數據庫設計的三大范式
MySQL數據庫練習題

MySQL連接查詢

SQL92語法

連接查詢:也可以叫跨表查詢,需要關聯多個表進行查詢。

● 顯示每個員工信息,并顯示所屬的部門名稱

select ename, dname from emp, dept;

SQL> select ename, dname from emp, dept;

 

ENAME      DNAME

---------- --------------

SMITH      ACCOUNTING

ALLEN      ACCOUNTING

WARD       ACCOUNTING

JONES      ACCOUNTING

MARTIN     ACCOUNTING

BLAKE      ACCOUNTING

CLARK      ACCOUNTING

SCOTT      ACCOUNTING

KING       ACCOUNTING

TURNER     ACCOUNTING

ADAMS      ACCOUNTING

JAMES      ACCOUNTING

FORD       ACCOUNTING

MILLER     ACCOUNTING

SMITH      RESEARCH

ALLEN      RESEARCH

WARD       RESEARCH

JONES      RESEARCH

MARTIN     RESEARCH

BLAKE      RESEARCH

CLARK      RESEARCH

SCOTT      RESEARCH

KING       RESEARCH

TURNER     RESEARCH

ADAMS      RESEARCH

JAMES      RESEARCH

FORD       RESEARCH

MILLER     RESEARCH

SMITH      SALES

ALLEN      SALES

WARD       SALES

JONES      SALES

MARTIN     SALES

BLAKE      SALES

CLARK      SALES

SCOTT      SALES

KING       SALES

TURNER     SALES

ADAMS      SALES

JAMES      SALES

FORD       SALES

MILLER     SALES

SMITH      OPERATIONS

ALLEN      OPERATIONS

WARD       OPERATIONS

JONES      OPERATIONS

MARTIN     OPERATIONS

BLAKE      OPERATIONS

CLARK      OPERATIONS

SCOTT      OPERATIONS

KING       OPERATIONS

TURNER     OPERATIONS

ADAMS      OPERATIONS

JAMES      OPERATIONS

FORD       OPERATIONS

MILLER     OPERATIONS

 

已選擇56行。

以上輸出,不正確,輸出了56條數據,其實就是兩個表記錄的成績,這種情況我們稱為:“笛卡兒乘積”,出現錯誤的原因是:沒有指定連接條件。

指定連接條件

select emp.ename, dept.dname from emp, dept where

emp.deptno=dept.deptno;


也可以使用別名


select e.ename, d.dname from emp e, dept d where e.deptno=d.deptno;

以上結果輸出正確,因為加入了正確的連接條件;

以上查詢也稱為 “內連接”,只查詢相等的數據(連接條件相等的數據)。

● 取得員工和所屬的領導的姓名

select e.ename, m.ename from emp e, emp m where e.mgr=m.empno;

SQL> select * from emp;(普通員工)

 

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

      7369 SMITH      CLERK           7902 17-12月-80            800                    20

      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30

      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30

      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20

      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30

      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30

      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10

      7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20

      7839 KING       PRESIDENT            17-11月-81           5000                    10

      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30

      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20

      7900 JAMES      CLERK           7698 03-12月-81            950                    30

      7902 FORD       ANALYST         7566 03-12月-81           3000                    20

      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10

 

已選擇14行。

 

SQL> select * from emp;(管理者)

 

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

      7369 SMITH      CLERK           7902 17-12月-80            800                    20

      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30

      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30

      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20

      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30

      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30

      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10

      7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20

      7839 KING       PRESIDENT            17-11月-81           5000                    10

      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30

      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20

      7900 JAMES      CLERK           7698 03-12月-81            950                    30

      7902 FORD       ANALYST         7566 03-12月-81           3000                    20

      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10

 

已選擇14行。

 

SQL> select e.ename, m.ename from emp e, emp m where e.mgr=m.empno;

 

ENAME      ENAME

---------- ----------

SMITH      FORD

ALLEN      BLAKE

WARD       BLAKE

JONES      KING

MARTIN     BLAKE

BLAKE      KING

CLARK      KING

SCOTT      JONES

TURNER     BLAKE

ADAMS      SCOTT

JAMES      BLAKE

FORD       JONES

MILLER     CLARK

 

已選擇13行。

以上稱為“自連接”,只有一張表連接,具體的查詢方法,把一張表看作兩張表即可,如以上示例:第一個表emp e代碼了員工表,emp m代表了領導表,相當于員工表和部門表一樣。

SQL99語法

● (內連接)顯示薪水大于2000的員工信息,并顯示所屬的部門名稱

采用SQL92語法:

采用SQL92語法:
select e.ename, e.sal, d.dname from emp e, dept d where e.deptno=d.deptno and  e.sal > 2000;
采用SQL99語法:
select e.ename, e.sal, d.dname from emp e join dept d on e.deptno=d.deptno where e.sal>2000;
或
select e.ename, e.sal, d.dname from emp e inner join dept d on e.deptno=d.deptno where e.sal>2000;
在實際中一般不加inner關鍵字

Sql92語法和sql99語法的區別:99語法可以做到表的連接和查詢條件分離,特別是多個表進行連接的時候,會比sql92更清晰。

●(外連接)顯示員工信息,并顯示所屬的部門名稱,如果某一個部門沒有員工,那么該部門也必須顯示出來

右連接:
select e.ename, e.sal, d.dname from emp e right join dept d on e.deptno=d.deptno;
左連接:
select e.ename, e.sal, d.dname from dept d left join emp e on e.deptno=d.deptno;
以上兩個查詢效果相同

連接分類:

1、內鏈接

* 表1 inner join 表2 on 關聯條件

* 做連接查詢的時候一定要寫上關聯條件

* inner 可以省略

2、外連接

● 左外連接

* 表1 left outer join 表2 on 關聯條件

* 做連接查詢的時候一定要寫上關聯條件

* outer 可以省略*

● 右外連接

* 表1 right outer join 表2 on 關聯條件

* 做連接查詢的時候一定要寫上關聯條件

* outer 可以省略

*左外連接(左連接)和右外連接(右連接)的區別:

*左連接以左面的表為準和右邊的表比較,和左表相等的不相等都會顯示出來,右表符合條件的顯示,不符合條件的不顯示

*右連接恰恰相反,以上左連接和右連接也可以加入outer關鍵字,但一般不建議這種寫法,如:

select e.ename, e.sal, d.dname from emp e right outer join dept d on e.deptno=d.deptno;

select e.ename, e.sal, d.dname from dept d left outer join emp e on e.deptno=d.deptno;

左連接能完成的功能右連接一定可以完成。

全部教程
主站蜘蛛池模板: 欧洲在线免费视频 | 欧美zozozo人禽交免费大片 | 久久香蕉国产线看观看亚洲片 | 久久这里只有精品免费看青草 | 国产一级黄色网 | 你懂得在线播放 | 人人添人人澡人人澡人人诱 | 国产成人综合网亚洲欧美在线 | 国产人成久久久精品 | 在线午夜 | 最近中文字幕国语免费高清6 | 日本一区二区视频在线 | 韩国日本三级在线 | 中文精品北条麻妃中文 | 不卡无毒免费毛片视频观看 | 欧美黄色三级视频 | 国内日本精品视频在线观看 | 日韩视频在线精品视频免费观看 | 欧美视频久久 | 亚洲激情在线播放 | 日韩精品中文字幕久久 | 亚洲狼人香蕉香蕉在线28 | 日韩在线视频一区二区三区 | 欧美在线播放视频 | 欧美激情免费a视频 | 国产在线精品成人一区二区三区 | 免费看的黄网站 | 高清国产欧美一v精品 | 成人三级在线播放 | 亚欧成人 | 国产成 人 综合 亚洲网 | 欧美国产亚洲精品高清不卡 | 91久久精一区二区三区大全 | 在线观看免费播放网址成人 | 免费国产成人高清视频网站 | 最近中文字幕免费在线看 | 国产三级大片 | 成人免费在线观看 | 日亚毛片免费乱码不卡一区 | 大胆国模一区二区三区伊人 | 亚洲天天操|