亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL表的內(nèi)外連接和視圖使用實(shí)戰(zhàn)練習(xí)

 更新時(shí)間:2024年01月29日 09:57:46   作者:YoungMLet  
這篇文章主要給大家介紹了關(guān)于MySQL表的內(nèi)外連接和視圖使用的相關(guān)資料,MySQL的內(nèi)外連接查詢是用于將兩個(gè)或多個(gè)表中的數(shù)據(jù)進(jìn)行關(guān)聯(lián)查詢的一種方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、表的內(nèi)外連接

表的連接分為內(nèi)連和外連。

1. 內(nèi)連接

內(nèi)連接實(shí)際上就是利用 where 子句對(duì)兩種表形成的笛卡爾積進(jìn)行篩選,我們前面學(xué)習(xí)的查詢都是內(nèi)連接,也是在開發(fā)過程中使用的最多的連接查詢。

語法:

			select 字段 from 表1 inner join 表2 on 連接條件 and 其他條件;

例如:

  • 顯示 JAMES 的名字和部門名稱

用前面的寫法直接用笛卡爾積:

			select ename, dname from emp, dept where emp.deptno=dept.deptno and ename='JAMES';

用標(biāo)準(zhǔn)的內(nèi)連接寫法:

			select ename, dname from emp
			    -> inner join dept
			    -> on emp.deptno = dept.deptno
			    -> and ename = 'JAMES';

2. 外連接

外連接分為左外連接和右外連接。

(1)左外連接

如果聯(lián)合查詢,左側(cè)的表完全顯示,我們就稱作是左外連接。

語法:

			select 字段名 from 表名1 left join 表名2 on 連接條件;

例如,先創(chuàng)建兩張表:

學(xué)生表,并插入數(shù)據(jù):

成績表,并插入數(shù)據(jù):

接下來要做的:

  • 查詢所有學(xué)生的成績,如果這個(gè)學(xué)生沒有成績,也要將學(xué)生的個(gè)人信息顯示出來

我們使用左外連接,將學(xué)生表的信息在左邊顯示,當(dāng)左邊表和右邊表沒有匹配時(shí),也會(huì)顯示左邊表的數(shù)據(jù):

			select * from stu left join exam on stu.id = exam.id;

(2)右外連接

如果聯(lián)合查詢,右側(cè)的表完全顯示我們就說是右外連接。

語法:

			select 字段 from 表名1 right join 表名2 on 連接條件;
  • 對(duì) stu 表和 exam 表聯(lián)合查詢,把所有的成績都顯示出來,即使這個(gè)成績沒有學(xué)生與它對(duì)應(yīng),也要顯示出來

      		select * from stu right join exam on stu.id=exam.id;
    

接下來我們繼續(xù)使用員工表進(jìn)行練習(xí):

  • 列出部門名稱和這些部門的員工信息,同時(shí)列出沒有員工的部門

方法一:

			select d.dname, e.* from dept d left join emp e on d.deptno = e.deptno;

方法二:

			select d.dname, e.* from emp e right join dept d on d.deptno = e.deptno;

3. 練習(xí)

二、視圖

1. 視圖的使用

我們上面所使用的內(nèi)外連接所生成的表都是一個(gè)臨時(shí)表,假設(shè)我們頻繁地使用該表,那么有沒有辦法將這個(gè)臨時(shí)表轉(zhuǎn)化為虛擬表呢?

視圖就是一個(gè)虛擬表,其內(nèi)容由查詢定義。同真實(shí)的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。視圖的數(shù)據(jù)變化會(huì)影響到基表,基表的數(shù)據(jù)變化也會(huì)影響到視圖。

  • 創(chuàng)建視圖

      			create view 視圖名 as select語句;
    

例如我們使用內(nèi)連接:

而創(chuàng)建視圖:

我們會(huì)發(fā)現(xiàn)多了一個(gè)表結(jié)構(gòu),我們查看該表:

如上,我們發(fā)現(xiàn)該表和我們用內(nèi)連接的結(jié)果一樣。

  • 修改了視圖,對(duì)基表數(shù)據(jù)有影響

  • 修改了基表,對(duì)視圖有影響

  • 刪除視圖

      			drop view 視圖名;
    

2. 視圖規(guī)則和限制

  • 與表一樣,必須唯一命名(不能出現(xiàn)同名視圖或表名);
  • 創(chuàng)建視圖數(shù)目無限制,但要考慮復(fù)雜查詢創(chuàng)建為視圖之后的性能影響;
  • 視圖不能添加索引,也不能有關(guān)聯(lián)的觸發(fā)器或者默認(rèn)值;
  • 視圖可以提高安全性,必須具有足夠的訪問權(quán)限;
  • order by 可以用在視圖中,但是如果從該視圖檢索數(shù)據(jù) select 中也含有 order by ,那么該視圖中的 order by 將被覆蓋;
  • 視圖可以和表一起使用。

修改視圖中數(shù)據(jù)對(duì)原表中數(shù)據(jù)有影響,修改原表中數(shù)據(jù)對(duì)視圖中數(shù)據(jù)也有影響

例如:

針對(duì)actor表創(chuàng)建視圖actor_name_view,只包含first_name以及l(fā)ast_name兩列,并對(duì)這兩列重新命名,first_name為first_name_v,last_name修改為last_name_v:

CREATE TABLE IF NOT EXISTS actor (
actor_id smallint(5) NOT NULL PRIMARY KEY,
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL,
last_update timestamp NOT NULL DEFAULT (datetime(‘now',‘localtime')))

create view actor_name_view as 
select first_name  first_name_v,last_name  last_name_v from actor;

總結(jié) 

到此這篇關(guān)于MySQL表的內(nèi)外連接和視圖使用的文章就介紹到這了,更多相關(guān)MySQL表內(nèi)外連接和視圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql中find_in_set()函數(shù)用法詳解以及使用場景

    Mysql中find_in_set()函數(shù)用法詳解以及使用場景

    前幾天在sql查詢的時(shí)候,想要判斷數(shù)據(jù)庫中表的某一列中的值是否在List集合中,接觸到了find_in_set的使用,用起來方便快捷,下面這篇文章主要給大家介紹了關(guān)于Mysql中find_in_set()函數(shù)用法詳解以及使用場景的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • MySQL內(nèi)存表的特性與使用介紹

    MySQL內(nèi)存表的特性與使用介紹

    臨時(shí)表和內(nèi)存表都可以人工創(chuàng)建,但臨時(shí)表更多的作用是系統(tǒng)自己創(chuàng)建后,組織數(shù)據(jù)以提升性能,如子查詢,臨時(shí)表在多個(gè)連接之間不能共享。這里只討論內(nèi)存表
    2013-02-02
  • mysql主從復(fù)制的實(shí)現(xiàn)步驟

    mysql主從復(fù)制的實(shí)現(xiàn)步驟

    本文主要介紹了mysql主從復(fù)制的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • MySQL5.6.40在CentOS7 64下安裝過程詳解

    MySQL5.6.40在CentOS7 64下安裝過程詳解

    這篇文章主要介紹了MySQL5.6.40在CentOS7 64下安裝過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 5個(gè)常用的MySQL數(shù)據(jù)庫管理工具詳細(xì)介紹

    5個(gè)常用的MySQL數(shù)據(jù)庫管理工具詳細(xì)介紹

    本篇文章是對(duì)5個(gè)常用的MySQL數(shù)據(jù)庫管理工具進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL中的聚簇索引、非聚簇索引、聯(lián)合索引和唯一索引詳細(xì)介紹

    MySQL中的聚簇索引、非聚簇索引、聯(lián)合索引和唯一索引詳細(xì)介紹

    本文主要介紹了MySQL的索引類型,根據(jù)索引的存儲(chǔ)方式來劃分,索引可以分為聚簇索引和非聚簇索引。聚簇索引的特點(diǎn)是葉子節(jié)點(diǎn)包含了完整的記錄行,而非聚簇索引的葉子節(jié)點(diǎn)只有所以字段和主鍵ID,感興趣的同學(xué)可以閱讀本文
    2023-04-04
  • Mysql數(shù)據(jù)庫連接失敗SSLException: Unsupported record version Unknown-0.0問題

    Mysql數(shù)據(jù)庫連接失敗SSLException: Unsupported record 

    這篇文章主要介紹了Mysql數(shù)據(jù)庫連接失敗SSLException: Unsupported record version Unknown-0.0問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 全面分析MySQL?ERROR?1045出現(xiàn)的原因及解決

    全面分析MySQL?ERROR?1045出現(xiàn)的原因及解決

    這篇文章主要介紹了全面分析MySQL?ERROR?1045出現(xiàn)的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • mysql備份腳本以及刪除前5天的備份文件

    mysql備份腳本以及刪除前5天的備份文件

    mysql備份腳本在網(wǎng)上有很多的,在本文將為大家詳細(xì)介紹下如何刪除前5天的備份文件,感興趣的朋友不要錯(cuò)過
    2013-10-10
  • MySQL實(shí)例精講單行函數(shù)以及字符數(shù)學(xué)日期流程控制

    MySQL實(shí)例精講單行函數(shù)以及字符數(shù)學(xué)日期流程控制

    SQL函數(shù)即數(shù)據(jù)庫的內(nèi)置函數(shù),可以運(yùn)用在SQL語句中實(shí)現(xiàn)特定的功能。SQL單行函數(shù)對(duì)于每一行數(shù)據(jù)進(jìn)行計(jì)算后得到一行輸出結(jié)果。SQL單行函數(shù)根據(jù)數(shù)據(jù)類型分為字符函數(shù)、數(shù)字函數(shù)、日期函數(shù)、轉(zhuǎn)換函數(shù),另外還有一些別的函數(shù)
    2021-10-10

最新評(píng)論