seo整站优化多少钱,丹徒网站建设咨询,天津企业展厅设计公司,wordpress archives页一篇文章读懂MySQL的各种联合查询
联合查询是指将两个或两个以上的表的数据根据一定的条件合并在一起!
联合查询主要有以下几种方式#xff1a;
全连接#xff1a;将一张表的数据与另外一张表的数据彼此交叉联合查询出来 举例如下#xff1a; 先建两张表#xff1a;
CR…一篇文章读懂MySQL的各种联合查询
联合查询是指将两个或两个以上的表的数据根据一定的条件合并在一起!
联合查询主要有以下几种方式
全连接将一张表的数据与另外一张表的数据彼此交叉联合查询出来 举例如下 先建两张表
CREATE TABLE t_dept (id int(11) NOT NULL AUTO_INCREMENT,deptName varchar(30) DEFAULT NULL,address varchar(40) DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT8 DEFAULT CHARSETutf8CREATE TABLE t_emp (id int(11) NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,age int(3) DEFAULT NULL,sex varchar(255) DEFAULT NULL COMMENT 性别,deptId int(11) DEFAULT NULL,PRIMARY KEY (id),KEY fk_dept_id (deptId)
) ENGINEInnoDB AUTO_INCREMENT28 DEFAULT CHARSETutf8插入数据
INSERT INTO t_emp (id, name, age, sex, deptId) VALUES (3, 令狐冲, 24, NULL, 1);
INSERT INTO t_emp (id, name, age, sex, deptId) VALUES (4, 洪七公, 70, NULL, 2);
INSERT INTO t_emp (id, name, age, sex, deptId) VALUES (5, 乔峰, 35, NULL, 2);
INSERT INTO t_emp (id, name, age, sex, deptId) VALUES (6, 灭绝师太, 70, NULL, 3);
INSERT INTO t_emp (id, name, age, sex, deptId) VALUES (7, 周芷若, 20, NULL, 3);
INSERT INTO t_emp (id, name, age, sex, deptId) VALUES (8, 张三丰, 100, NULL, 4);
INSERT INTO t_emp (id, name, age, sex, deptId) VALUES (9, 张无忌, 25, NULL, 5);
INSERT INTO t_emp (id, name, age, sex, deptId) VALUES (10, 韦小宝, 18, NULL, NULL);
INSERT INTO t_emp (id, name, age, sex, deptId) VALUES (26, lin, 12, NULL, 12);
INSERT INTO t_dept (id, deptName, address) VALUES (1, 华山, 华山);
INSERT INTO t_dept (id, deptName, address) VALUES (2, 丐帮, 洛阳);
INSERT INTO t_dept (id, deptName, address) VALUES (3, 峨眉, 峨眉山);
INSERT INTO t_dept (id, deptName, address) VALUES (4, 武当, 武当山);
INSERT INTO t_dept (id, deptName, address) VALUES (5, 明教, 光明顶);
INSERT INTO t_dept (id, deptName, address) VALUES (6, 少林, 少林寺);
INSERT INTO t_dept (id, deptName, address) VALUES (7, 华山, 北京);
全连接是将表1的数据一条一条的与表2的数据进行拼接产生table1table2条数据 全连接测试 可以看到表的数据是79条字段的个数是33个不过这种查询没什么意义让我们来看一下内连接 内连接 内连接进行查询的过程是将表A的数据一条一条拿出来跟表B的数据进行对比满足条件的数据就保留下来 测试如下 外连接外连接有两种类型左外连接和右外连接外连接和内连接的区别是无论表A与表B是否有符合条件的数据主表都会保留这里的主表是指左连接时左边的表右连接时右边的表 1). 左连接关键字是left join直接看数据更好理解 可以看到左表主表的数据都保留下来了
2). 右连接 可以看到右表主表的数据都保留下来了
介绍一下using关键字
连接过程 1、在进行连接查询中使用on的地方就可以用using来代替不过前提是进行联合的条件的字段是同名的 2、如果使用using关键字来进行联合最终相同的字段只会显示一个
left join后面的筛选语句用where和on的区别 其实主要就是sql语句执行的顺序不同导致执行的结果也不一样大家记得留意这个问题很容易踩坑where语句执行比on偏后所以使用where来筛选其实就是联合查询之后再进行筛选的。下面举个例子还是使用上面的数据 第一个是不带where和and 的左连接上面已经介绍这里不再赘述 第二个是带where语句可以看到其实就是再第一个的基础上进行筛选 第三个和第四个是带on语句我们可以看到带on语句之后left join左边的表是没变化的都是全表而left join右边的表却得到筛选了为什么会这样这是因为on的执行顺序在join执行顺序之前见下图 所以就算添加了on的筛选语句它其实是先筛选右表的数据然后再用左表与剩余的右表数据进行连接查询
好了今天的内容就到此为止了后续会不断的更新欢迎大家点赞关注