欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL數(shù)據(jù)庫(kù)高級(jí)查詢(xún)和多表查詢(xún)

 更新時(shí)間:2020年08月04日 14:43:43   作者:Jack_黃  
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)高級(jí)查詢(xún)和多表查詢(xún),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

MySQL多表查詢(xún)

添加練習(xí)表

-- 用戶(hù)表(user)
CREATE TABLE `user`(
	`id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '用戶(hù)id(主鍵)',
	`username` VARCHAR(50) COMMENT '用戶(hù)姓名', 
	`age` CHAR(3) COMMENT '用戶(hù)年齡'
);

-- 訂單表(orders)
CREATE TABLE `orders`(
	`id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '訂單id(主鍵)',
	`price` DOUBLE COMMENT '訂單價(jià)格',
	`user_id` INT COMMENT '用戶(hù)id(外鍵)'
);

-- 給已經(jīng)存在的表添加外鍵,語(yǔ)法如下
-- alter table 表名 add constraint [外鍵名字] foreign key (外鍵字段) references 父表(主鍵字段);
ALTER TABLE orders ADD CONSTRAINT user_fk FOREIGN KEY (user_id) REFERENCES `user` (id);

-- 向user表中添加數(shù)據(jù)
INSERT INTO USER VALUES(1,'第一',11);
INSERT INTO USER VALUES(2,'小二',12);
INSERT INTO USER VALUES(3,'張三',33);
INSERT INTO USER VALUES(4,'李四',24);
INSERT INTO USER VALUES(5,'王五',17);
INSERT INTO USER VALUES(6,'趙六',36);
INSERT INTO USER VALUES(7,'七七',18);
INSERT INTO USER VALUES(8,'粑粑',NULL);

-- 向orders 表中插入數(shù)據(jù)
INSERT INTO orders VALUES(111,1314,3);
INSERT INTO orders VALUES(112,122,3);
INSERT INTO orders VALUES(113,15,4);
INSERT INTO orders VALUES(114,315,5);
INSERT INTO orders VALUES(115,1014,NULL);
INSERT INTO orders VALUES(116,666,6);
INSERT INTO orders VALUES(117,1111,1);
INSERT INTO orders VALUES(118,8888,NULL);

在這里插入圖片描述

在這里插入圖片描述

笛卡爾積

  • 笛卡爾乘積是指在數(shù)學(xué)中,兩個(gè)集合X和Y的笛卡爾積(Cartesian product),又稱(chēng)直積,表示為X × Y,第一個(gè)對(duì)象是X的成員而第二個(gè)對(duì)象是Y的所有可能有序?qū)Φ钠渲幸粋€(gè)成員。(笛卡爾積)百度百科
  • 什么笛卡爾積,如下所示
SELECT * FROM `user`,`orders`;

在這里插入圖片描述

  • 像如上圖查出來(lái)的數(shù)據(jù),對(duì)我們程序員是沒(méi)啥用的。
  • 哪如何消除笛卡爾積呢?需要主外鍵的約束,去重復(fù)數(shù)據(jù)。
SELECT * FROM `user` AS u,`orders` AS o WHERE u.`id`=o.`user_id`;

在這里插入圖片描述

1.內(nèi)連接

1.1隱式內(nèi)連接

  • from 后面直接出現(xiàn)多表表名,這個(gè)屬于隱式內(nèi)連接
  • select * from 表a,表b where a.id = b.a_id;
SELECT * FROM `user` AS u,`orders` AS o WHERE u.`id`=o.`user_id`;

在這里插入圖片描述

1.2顯示內(nèi)連接(推薦使用)

  • 使用 inner join 來(lái)鏈接表,后面 on 跟條件。(inner 可以省略)
  • select * from 表a inner join 表b on a.id = b.a_id;
  • 查詢(xún)成年用戶(hù)和訂單數(shù)據(jù);
SELECT * FROM `user` u JOIN `orders` o ON u.`id`=o.`user_id` WHERE age >= 18;

在這里插入圖片描述

2.外連接

  • 外鏈接可以顯示單表的全部數(shù)據(jù),包括null;

2.1右外鏈接

  • 顯示右邊表的全部數(shù)據(jù)
  • 使用 right outer join 來(lái)鏈接表,后面 on 跟條件。(outer 可以省略)
  • select * from 表a right outer join 表b on a.id=b.a_id;
SELECT * FROM `user` u RIGHT JOIN `orders` o ON u.`id`=o.`user_id`;

在這里插入圖片描述

左邊表數(shù)據(jù)(user)

在這里插入圖片描述

右邊表數(shù)據(jù)(orders)

在這里插入圖片描述

2.2左外鏈接(推薦使用)

  • 顯示左邊表的全部數(shù)據(jù)
  • 使用 left outer join 來(lái)鏈接表,后面 on 跟條件。(outer 可以省略)
  • select * from 表a left outer join 表b on a.id=b.a_id;
SELECT * FROM `user` u LEFT JOIN `orders` o ON u.`id`=o.`user_id`;

在這里插入圖片描述

左邊表數(shù)據(jù)(user)

在這里插入圖片描述

右邊表數(shù)據(jù)(orders)

在這里插入圖片描述

3.子查詢(xún)

  • 子查詢(xún),嵌套的感覺(jué)。查詢(xún)出來(lái)的結(jié)果給另外一個(gè)查詢(xún)當(dāng)條件使用。
  • 查詢(xún)年齡最大的用戶(hù)的訂單數(shù)據(jù)
SELECT * FROM orders o WHERE o.`user_id` IN (
	SELECT u.`id` FROM `user` u WHERE u.`age` IN(
		SELECT MAX(u.`age`) FROM `user` u
	)
);

在這里插入圖片描述

4.全連接(MySQL不支持)

  • 全連接,左右兩張表的全部數(shù)據(jù)包括null。相當(dāng)于右外鏈接和左外鏈接的結(jié)合。
  • select * from 表a full outer join 表b on a.id=b.a_id;(MySQL不支持,不做演示)

MySQL其它文章,請(qǐng)看下面鏈接

MySQL DDL 語(yǔ)句

MySQL CRUD 語(yǔ)句

MySQL 聚合函數(shù)

MySQL 多表查詢(xún)

END…

到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)高級(jí)查詢(xún)和多表查詢(xún)的文章就介紹到這了,更多相關(guān)MySQL高級(jí)查詢(xún)和多表查詢(xún)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • MySQL如何查看數(shù)據(jù)庫(kù)連接數(shù)

    MySQL如何查看數(shù)據(jù)庫(kù)連接數(shù)

    本文介紹了在MySQL中查看數(shù)據(jù)庫(kù)連接數(shù)的多種方法,包括使用SHOWSTATUS命令、查詢(xún)information_schema數(shù)據(jù)庫(kù)、使用SHOWPROCESSLIST命令、查看最大連接數(shù)以及使用性能模式,每個(gè)方法都有詳細(xì)的示例和注意事項(xiàng),幫助你有效地監(jiān)控和管理數(shù)據(jù)庫(kù)連接
    2024-11-11
  • 使用MySQL實(shí)現(xiàn)一個(gè)分布式鎖

    使用MySQL實(shí)現(xiàn)一個(gè)分布式鎖

    在分布式系統(tǒng)中,分布鎖是一個(gè)最基礎(chǔ)的工具類(lèi)。這篇文章主要介紹了用MySQL實(shí)現(xiàn)一個(gè)分布式鎖,本文通過(guò)實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 為mysql數(shù)據(jù)庫(kù)添加添加事務(wù)處理的方法

    為mysql數(shù)據(jù)庫(kù)添加添加事務(wù)處理的方法

    開(kāi)始首先說(shuō)明一下,mysql數(shù)據(jù)庫(kù)默認(rèn)的數(shù)據(jù)庫(kù)引擎是MyISAM,是不支持事務(wù)的,單數(shù)如果你添加了數(shù)據(jù)執(zhí)行語(yǔ)句是不會(huì)出錯(cuò)的,單數(shù)不管用,即便是回滾事務(wù),記錄也是插入進(jìn)去了,所有首先我們要做的第一步是更改數(shù)據(jù)庫(kù)引擎
    2011-07-07
  • 一起了解了解MySQL存儲(chǔ)引擎

    一起了解了解MySQL存儲(chǔ)引擎

    大家好,本篇文章主要講的是一起了解了解MySQL存儲(chǔ)引擎,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽
    2021-12-12
  • 最新評(píng)論