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

MySQL數(shù)據(jù)庫(kù)的多表操作

 更新時(shí)間:2022年08月03日 08:51:05   作者:面屏思過???????  
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)的多表操作,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助

一、 數(shù)據(jù)庫(kù)的多表操作

數(shù)據(jù)庫(kù)的多表關(guān)系:

  • 一對(duì)一
  • 一對(duì)多
  • 多對(duì)一
  • 多對(duì)多

二,操作

一對(duì)一

建立數(shù)據(jù)表personcard,設(shè)置person數(shù)據(jù)表id為主鍵且自增,設(shè)置cardid為外鍵

// 創(chuàng)建person表
CREATE TABLE person (
id INT PRIMARY KEY AUTO_INCREMENT, // 主鍵 自增
NAME VARCHAR(20)
);

// 創(chuàng)建card表
CREATE TABLE card (
	id INT PRIMARY KEY AUTO_INCREMENT, // 主鍵 自增
	number VARCHAR(20) UNIQUE NOT NULL,// 不能為null
	pid INT UNIQUE,// pid唯一
	CONSTRAINT cp_fk1 FOREIGN KEY (pid) REFERENCES person(id) // 外鍵列
);

一對(duì)多

創(chuàng)建user數(shù)據(jù)表和orderlist數(shù)據(jù)表,這里不再設(shè)置uid為唯一值,因此是一對(duì)多的關(guān)系

// 創(chuàng)建user表
CREATE TABLE USER(
	id INT PRIMARY KEY AUTO_INCREMENT, // 主鍵 自增
	NAME VARCHAR(20)
);

// 添加數(shù)據(jù)
INSERT INTO USER VALUES (NULL, '張三'),(NULL, '李四');
//  創(chuàng)建orderlist表
CREATE TABLE orderlist(
	id INT PRIMARY KEY AUTO_INCREMENT,
	number VARCHAR(20),
	uid INT, // 這里沒有再設(shè)置唯一值
	CONSTRAINT out_fk1 FOREIGN KEY (uid) REFERENCES USER(id) // 外鍵列

);
-- 添加數(shù)據(jù)
INSERT INTO orderlist VALUES (NULL, 'hm001', 1), (NULL, 'hm002', 1),(NULL, 'hm003', 2),(NULL, 'hm004', 2);
  • 多對(duì)多 創(chuàng)建student數(shù)據(jù)表,設(shè)置主鍵,再創(chuàng)建course數(shù)據(jù)表,創(chuàng)建中間表將兩者關(guān)聯(lián)起來(lái)
// 創(chuàng)建student表
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20)

);
// 創(chuàng)建course表
CREATE TABLE course (
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(10)
);

//  創(chuàng)建中間表
CREATE TABLE stu_course(
	id INT PRIMARY KEY AUTO_INCREMENT,
	sid INT,
	cid INT,
	CONSTRAINT sc_fk1 FOREIGN KEY (sid) REFERENCES student(id),// 設(shè)置外鍵
	CONSTRAINT sc_fk2 FOREIGN KEY (cid) REFERENCES course(id)// 設(shè)置外鍵
);

多表查詢-內(nèi)鏈查詢:

通過規(guī)定語(yǔ)法,進(jìn)行內(nèi)鏈查詢

// 標(biāo)準(zhǔn)語(yǔ)法: SELECT 列名 FROM 表名1 [INNER] JOIN 表名2 ON 關(guān)聯(lián)條件;
-- 查詢用戶信息和對(duì)應(yīng)的訂單信息
SELECT * FROM USER INNER JOIN orderlist ON orderlist.uid = user.id;
// 設(shè)置別名進(jìn)行查詢
SELECT u.name, u.age, o.number FROM USER u INNER JOIN orderlist o ON o.uid = u.id;

多表查詢-隱式內(nèi)連接:

// 標(biāo)準(zhǔn)語(yǔ)法: SELECT 列名 FROM 表名1,表名2 WHERE 關(guān)聯(lián)條件;
// 查詢用戶姓名,年齡。和訂單編號(hào)
SELECT u.name, u.age, o.number FROM USER u, orderlist o WHERE o.uid = uid;

多表查詢-左外連接:

標(biāo)準(zhǔn)語(yǔ)法: SELECT 列名 FROM 表名1 LEFT [OUTER] JOIN 表名2 ON 條件;

// 查詢所有用戶信息,以及用戶對(duì)應(yīng)的訂單信息

SELECT u.* o.number FROM USER u LEFT OUTER JOIN orderlist o ON o.uid = u.id;

多表查詢-右外連接:

標(biāo)準(zhǔn)語(yǔ)法: SELECT 列名 FROM 表名1 RIGHT [OUTER] JOIN 表名2 ON 條件;
//  查詢所有訂單信息,以及訂單所屬的用戶信息
SELECT o.*, u.name FROM USER u RIGHT OUTER JOIN orderlist o ON o.uid = u.id;

多表查詢-子查詢:

// 結(jié)果是單行單列的
// 標(biāo)準(zhǔn)語(yǔ)法: SELECT 列名 FROM 表名 WHERE 列名=(SELECT 列名 FROM 表名 [WHERE 條件]);

// 查詢年齡最高的用戶姓名
SELECT NAME,age FROM USER WHERE age=(SELECT MAX(age) FROM USER);

// 結(jié)果是多行單列的
// 標(biāo)準(zhǔn)語(yǔ)法:SELECT 列名 FROM 表名 WHERE 列名 [NOT] IN (SELECT 列名 FROM 表名 [WHERE 條件]); 

// 查詢張三和李四的訂單信息
SELECT * FROM orderlist WHERE uid IN (SELECT id FROM USER WHERE NAME IN ('張三','李四'));

// 結(jié)果是多行多列的
// 標(biāo)準(zhǔn)語(yǔ)法: SELECT 列名 FROM 表名 [別名],(SELECT 列名 FROM 表名 [WHERE 條件]) [別名] [WHERE 條件];

// 查詢訂單表中id大于4的訂單信息和所屬用戶信息
SELECT u.name, o.number FROM USER u, (SELECT * FROM orderlist WHERE id > 4) o WHERE o.uid=u.id;

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

相關(guān)文章

最新評(píng)論