1. 建表
CREATE TABLE `student` (
`id` int(11) NOT NULL,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`age` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `student` VALUES (1, '張三', 12);
INSERT INTO `student` VALUES (2, '李四', 12);
INSERT INTO `student` VALUES (3, '王五', 12);
INSERT INTO `student` VALUES (4, '趙六', 12);
INSERT INTO `student` VALUES (5, '孫七', 12);
INSERT INTO `student` VALUES (6, '王八', 12);
CREATE TABLE `grade` (
`id` int(11) NOT NULL,
`sid` int(11) NULL DEFAULT NULL,
`grade` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `grade` VALUES (1, 1, 100);
INSERT INTO `grade` VALUES (2, 2, 80);
INSERT INTO `grade` VALUES (3, 3, 99);
INSERT INTO `grade` VALUES (4, 4, 66);
2. inner join-內(nèi)連接
內(nèi)連接中and和where沒有區(qū)別,都是取連接后的結(jié)果進(jìn)行條件篩選。
2.1 不加條件
2.2 and 條件
2.3 where 條件
3. left join - 左外連接
3.1 不加條件
3.2 and 條件
left join中以左表全匹配進(jìn)行連接,之后使用and進(jìn)行篩選;不符合條件的左表數(shù)據(jù)保留,右表數(shù)據(jù)為null。
3.3 where 條件
在left join 中以左表全匹配進(jìn)行連接,之后以where進(jìn)行篩選;只篩選符合條件的數(shù)據(jù)。
4. right join
同3中l(wèi)eft join,只是基表相反。
5. 總結(jié)
- 所有連接,使用where是對(duì)連接后符合條件的數(shù)據(jù)行進(jìn)行再次的條件篩選,只保留符合條件的數(shù)據(jù)行;
- left join連接時(shí),使用and以左表為主,左表數(shù)據(jù)全部保留,不符合條件的數(shù)據(jù)行右表數(shù)據(jù)為null;
- right join連接時(shí),使用and以右表為主,右表數(shù)據(jù)全部保留,不符合條件的數(shù)據(jù)行左表數(shù)據(jù)為null;
到此這篇關(guān)于mysql連接查詢中and與where區(qū)別的文章就介紹到這了,更多相關(guān)mysql連接查詢and與where內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Mysql帶And關(guān)鍵字的多條件查詢語句
- mysql條件查詢and or使用方法及優(yōu)先級(jí)實(shí)例分析
- MySQL中 and or 查詢的優(yōu)先級(jí)分析
- MySQL左聯(lián)多表查詢where條件寫法示例
- PHP將MySQL的查詢結(jié)果轉(zhuǎn)換為數(shù)組并用where拼接的示例
- MySQL查詢條件中放置on和where的區(qū)別分析