MySQL多表查询之连接查询

0. 数据源

/*
 Navicat Premium Data Transfer

 Source Server         : localhost_3306
 Source Server Type    : MySQL
 Source Server Version : 80016
 Source Host           : localhost:3306
 Source Schema         : tempdb

 Target Server Type    : MySQL
 Target Server Version : 80016
 File Encoding         : 65001

 Date: 08/05/2023 00:34:36
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for class
-- ----------------------------
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class`  (
  `id` int(11) NOT NULL,
  `c_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of class
-- ----------------------------
INSERT INTO `class` VALUES (1, '高三 1 班');
INSERT INTO `class` VALUES (2, '高三 2 班');
INSERT INTO `class` VALUES (3, '高三 3 班');
INSERT INTO `class` VALUES (4, '高三 4 班');
INSERT INTO `class` VALUES (5, '高三 5 班');

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `num` int(11) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `age` int(11) NULL DEFAULT NULL,
  `tel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `c_id` int(11) NULL DEFAULT NULL,
  `g_id` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`num`) USING BTREE,
  INDEX `f_std_cls`(`c_id`) USING BTREE,
  CONSTRAINT `f_std_cls` FOREIGN KEY (`c_id`) REFERENCES `class` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (101, '张三', 23, '354456354', 1, NULL);
INSERT INTO `student` VALUES (102, '王五', 34, '4334', 1, 101);
INSERT INTO `student` VALUES (103, '李四', 32, '131434', 3, 101);
INSERT INTO `student` VALUES (104, '赵无极', 23, '4234', 2, NULL);
INSERT INTO `student` VALUES (105, '韩夫子', 34, '23', 2, 102);
INSERT INTO `student` VALUES (106, '高俅', 25, '42543', 4, 103);
INSERT INTO `student` VALUES (107, '范瑶', 26, '2345', NULL, 104);
INSERT INTO `student` VALUES (108, '斯巴达克斯', 27, '422156 ', NULL, 104);

SET FOREIGN_KEY_CHECKS = 1;

在这里插入图片描述

1. 多表查询概述

(1)定义:指从多张表中查询数据。
(2)笛卡尔积:在数学中,两个集合A和集合B的所有组合情况。在多表查询时,要消除笛卡尔积现象。

// 此时已经产生了笛卡尔现象, 一共返回了40条记录
mysql> select * from student, class;
+-----+------------+------+-----------+------+------+----+-----------+
| num | name       | age  | tel       | c_id | g_id | id | c_name    |
+-----+------------+------+-----------+------+------+----+-----------+
| 101 | 张三       |   23 | 354456354 |    1 | NULL |  1 | 高三 1|
| 101 | 张三       |   23 | 354456354 |    1 | NULL |  2 | 高三 2|
| 101 | 张三       |   23 | 354456354 |    1 | NULL |  3 | 高三 3|
| 101 | 张三       |   23 | 354456354 |    1 | NULL |  4 | 高三 4|
| 101 | 张三       |   23 | 354456354 |    1 | NULL |  5 | 高三 5|
| 102 | 王五       |   34 | 4334      |    1 |  101 |  1 | 高三 1|
| 102 | 王五       |   34 | 4334      |    1 |  101 |  2 | 高三 2|
| 102 | 王五       |   34 | 4334      |    1 |  101 |  3 | 高三 3|
| 102 | 王五       |   34 | 4334      |    1 |  101 |  4 | 高三 4|
| 102 | 王五       |   34 | 4334      |    1 |  101 |  5 | 高三 5|
| 103 | 李四       |   32 | 131434    |    3 |  101 |  1 | 高三 1|
| 103 | 李四       |   32 | 131434    |    3 |  101 |  2 | 高三 2|
| 103 | 李四       |   32 | 131434    |    3 |  101 |  3 | 高三 3|
| 103 | 李四       |   32 | 131434    |    3 |  101 |  4 | 高三 4|
| 103 | 李四       |   32 | 131434    |    3 |  101 |  5 | 高三 5|
| 104 | 赵无极     |   23 | 4234      |    2 | NULL |  1 | 高三 1|
| 104 | 赵无极     |   23 | 4234      |    2 | NULL |  2 | 高三 2|
| 104 | 赵无极     |   23 | 4234      |    2 | NULL |  3 | 高三 3|
| 104 | 赵无极     |   23 | 4234      |    2 | NULL |  4 | 高三 4|
| 104 | 赵无极     |   23 | 4234      |    2 | NULL |  5 | 高三 5|
| 105 | 韩夫子     |   34 | 23        |    2 |  102 |  1 | 高三 1|
| 105 | 韩夫子     |   34 | 23        |    2 |  102 |  2 | 高三 2|
| 105 | 韩夫子     |   34 | 23        |    2 |  102 |  3 | 高三 3|
| 105 | 韩夫子     |   34 | 23        |    2 |  102 |  4 | 高三 4|
| 105 | 韩夫子     |   34 | 23        |    2 |  102 |  5 | 高三 5|
| 106 | 高俅       |   25 | 42543     |    4 |  103 |  1 | 高三 1|
| 106 | 高俅       |   25 | 42543     |    4 |  103 |  2 | 高三 2|
| 106 | 高俅       |   25 | 42543     |    4 |  103 |  3 | 高三 3|
| 106 | 高俅       |   25 | 42543     |    4 |  103 |  4 | 高三 4|
| 106 | 高俅       |   25 | 42543     |    4 |  103 |  5 | 高三 5|
| 107 | 范瑶       |   26 | 2345      | NULL |  104 |  1 | 高三 1|
| 107 | 范瑶       |   26 | 2345      | NULL |  104 |  2 | 高三 2|
| 107 | 范瑶       |   26 | 2345      | NULL |  104 |  3 | 高三 3|
| 107 | 范瑶       |   26 | 2345      | NULL |  104 |  4 | 高三 4|
| 107 | 范瑶       |   26 | 2345      | NULL |  104 |  5 | 高三 5|
| 108 | 斯巴达克斯 |   27 | 422156    | NULL |  104 |  1 | 高三 1|
| 108 | 斯巴达克斯 |   27 | 422156    | NULL |  104 |  2 | 高三 2|
| 108 | 斯巴达克斯 |   27 | 422156    | NULL |  104 |  3 | 高三 3|
| 108 | 斯巴达克斯 |   27 | 422156    | NULL |  104 |  4 | 高三 4|
| 108 | 斯巴达克斯 |   27 | 422156    | NULL |  104 |  5 | 高三 5|
+-----+------------+------+-----------+------+------+----+-----------+

(3)消除笛卡尔现象
多表查询时,指定查询的匹配条件即可过滤掉多余的无效信息。
此处添加查询条件:where student.c_id=class.id,即可消除笛卡尔现象。

mysql> select * from student, class where student.c_id=class.id;
+-----+--------+------+-----------+------+------+----+-----------+
| num | name   | age  | tel       | c_id | g_id | id | c_name    |
+-----+--------+------+-----------+------+------+----+-----------+
| 101 | 张三   |   23 | 354456354 |    1 | NULL |  1 | 高三 1|
| 102 | 王五   |   34 | 4334      |    1 |  101 |  1 | 高三 1|
| 104 | 赵无极 |   23 | 4234      |    2 | NULL |  2 | 高三 2|
| 105 | 韩夫子 |   34 | 23        |    2 |  102 |  2 | 高三 2|
| 103 | 李四   |   32 | 131434    |    3 |  101 |  3 | 高三 3|
| 106 | 高俅   |   25 | 42543     |    4 |  103 |  4 | 高三 4|
+-----+--------+------+-----------+------+------+----+-----------+
6 rows in set (0.00 sec)

2. 内连接

在内连接查询中,只有满足条件的记录才能出现在结果关系中。
内连接查询的是两张表的交集部分。

// demo
// 查询每一个学生编号,姓名及其关联的班级名称;
// 下面分别用隐式内连接和显示内连接来实现;

2.1 隐式内连接
格式:SELECT 字段列表 FROM 表1, 表2 WHERE 条件...;

mysql> select student.num,student.name,class.c_name from student, class where student.c_id=class.id;
+-----+--------+-----------+
| num | name   | c_name    |
+-----+--------+-----------+
| 101 | 张三   | 高三 1|
| 102 | 王五   | 高三 1|
| 104 | 赵无极 | 高三 2|
| 105 | 韩夫子 | 高三 2|
| 103 | 李四   | 高三 3|
| 106 | 高俅   | 高三 4|
+-----+--------+-----------+
6 rows in set (0.00 sec)

2.2 显示内连接
格式:SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件...;
关键字 INNER 可以省略不写

mysql> select student.num,student.name,class.c_name from student INNER JOIN class on student.c_id=class.id;
+-----+--------+-----------+
| num | name   | c_name    |
+-----+--------+-----------+
| 101 | 张三   | 高三 1|
| 102 | 王五   | 高三 1|
| 104 | 赵无极 | 高三 2|
| 105 | 韩夫子 | 高三 2|
| 103 | 李四   | 高三 3|
| 106 | 高俅   | 高三 4|
+-----+--------+-----------+
6 rows in set (0.00 sec)

2.3 结果分析

从结果可以看出,两种方式都产生一样的结果。原本一共有8个学生,内连接查询后只是返回了其中 6个学生。很明显,因为107,108两个学生的c_id为null,不满足where条件,所以没有被查询出来,这也印证了内连接只会将满足条件的记录查询出来或返回两个表的交集部分这一说法。

3. 外连接

3.1 左外连接
返回包括左表中的所有记录和右表中连接字段相等的记录
格式:SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件...;
关键字 OUTER 可以省略不写
实际上,正式开发中通常都是直接省略了OUTER,直接LEFT JOIN或RIGHT JOIN。也习惯直接称其为左连接或右连接

(1)引子
通过2.3分析可知,内连接只是返回了2个表的交集部分。那假如我不但要获取两个表的交集部分,还要得到107,108两个学生的记录呢?该如何操作???
此时可以通过左连接办到。

(2)测试

mysql> select student.num,student.name,class.c_name from student LEFT JOIN class on student.c_id=class.id;
+-----+------------+-----------+
| num | name       | c_name    |
+-----+------------+-----------+
| 101 | 张三       | 高三 1|
| 102 | 王五       | 高三 1|
| 103 | 李四       | 高三 3|
| 104 | 赵无极     | 高三 2|
| 105 | 韩夫子     | 高三 2|
| 106 | 高俅       | 高三 4|
| 107 | 范瑶       | NULL      |
| 108 | 斯巴达克斯 | NULL      |
+-----+------------+-----------+
8 rows in set (0.00 sec)

(3)结论
因为左表中的107、108在右表中没有匹配行,所以返回的右表中的指定列都是null值。
左连接的结果包括指定的左表中的所有行,而不仅仅是连接列所匹配的行。
如果左表的某行在右表中没有匹配行,则在相关联的结果行中,右表的所有选择列均为null值

3.2 右外连接
返回包括右表中的所有记录和左表中连接字段相等的记录
格式:SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件...;
关键字 OUTER 可以省略不写

右连接是左连接的反向状态,将返回右表的所有行。如果右表的某行在左表中没有匹配行,左表将返回null值。

mysql> select student.num,student.name,class.c_name from student RIGHT JOIN class on student.c_id=class.id;
+------+--------+-----------+
| num  | name   | c_name    |
+------+--------+-----------+
|  101 | 张三   | 高三 1|
|  102 | 王五   | 高三 1|
|  104 | 赵无极 | 高三 2|
|  105 | 韩夫子 | 高三 2|
|  103 | 李四   | 高三 3|
|  106 | 高俅   | 高三 4|
| NULL | NULL   | 高三 5|
+------+--------+-----------+
7 rows in set (0.00 sec)

4. 自连接

在一个连接查询中,涉及的两个表都是同一张表,那么这种查询称之为自连接查询。
语法:SELECT 字段列表 FROM 表A 别名A JOIN 表B 别名B ON 条件...
自连接查询,可以是内连接查询,也可以是外连接查询


首先明确g_id字段的含义:

student中的g_id表示组长的意思,如果其值为null,表示对应的学生没有组长,否则就是该学生的组长。比如101,104的g_id为null,表示其没有组长。102,103的g_id都是101,表示102,103学生的组长都是101。


4.1 查询学生 及其 所属组长的名字

// 隐式内连接
mysql> select s1.name as 学生,s2.name as 所属组长 from student s1,student s2 where s1.g_id=s2.num;
+------------+----------+
| 学生       | 所属组长 |
+------------+----------+
| 王五       | 张三     |
| 李四       | 张三     |
| 韩夫子     | 王五     |
| 高俅       | 李四     |
| 范瑶       | 赵无极   |
| 斯巴达克斯 | 赵无极   |
+------------+----------+
6 rows in set (0.00 sec)
// 显式内连接
mysql> select s1.name as 学生,s2.name as 所属组长 from student s1 INNER JOIN student s2 on s1.g_id=s2.num;
+------------+----------+
| 学生       | 所属组长 |
+------------+----------+
| 王五       | 张三     |
| 李四       | 张三     |
| 韩夫子     | 王五     |
| 高俅       | 李四     |
| 范瑶       | 赵无极   |
| 斯巴达克斯 | 赵无极   |
+------------+----------+
6 rows in set (0.00 sec)

4.2 查询所有学生 及其 所属组长的名字,如果学生没有组长,也要查询出来

mysql> select s1.name as 学生,s2.name as 所属组长 from student s1 LEFT JOIN student s2 on s1.g_id=s2.num;
+------------+----------+
| 学生       | 所属组长 |
+------------+----------+
| 张三       | NULL     |
| 王五       | 张三     |
| 李四       | 张三     |
| 赵无极     | NULL     |
| 韩夫子     | 王五     |
| 高俅       | 李四     |
| 范瑶       | 赵无极   |
| 斯巴达克斯 | 赵无极   |
+------------+----------+
8 rows in set (0.00 sec)

5. 复合条件连接查询

复合条件连接查询是在连接查询的过程中,通过添加过滤条件,以此来限制查询的结果,使查询的结果更加准确。

// 以下使用了内连接
mysql> select student.num,student.name,class.c_name from student INNER JOIN class on student.c_id=class.id;
+-----+--------+-----------+
| num | name   | c_name    |
+-----+--------+-----------+
| 101 | 张三   | 高三 1|
| 102 | 王五   | 高三 1|
| 104 | 赵无极 | 高三 2|
| 105 | 韩夫子 | 高三 2|
| 103 | 李四   | 高三 3|
| 106 | 高俅   | 高三 4|
+-----+--------+-----------+
6 rows in set (0.00 sec)
// 需求:只返回num>=104的学生;
// 可以添加此条件来再次过滤: AND student.num>=104;
mysql> select student.num,student.name,class.c_name from student INNER JOIN class on student.c_id=class.id AND student.num>=104;
+-----+--------+-----------+
| num | name   | c_name    |
+-----+--------+-----------+
| 104 | 赵无极 | 高三 2|
| 105 | 韩夫子 | 高三 2|
| 106 | 高俅   | 高三 4|
+-----+--------+-----------+
3 rows in set (0.00 sec)

6. 表的别名机制

select student.num,student.name,class.c_name from student INNER JOIN class on student.c_id=class.id;

上述sql语句中, 多次使用了表名, 假如表名很长, 那这样的话就不利于sql语句的编写, 所以有比要为表名起一个别名来简化sql语句的编写。

格式:表名 [AS] 别名
注意:AS关键字可以省略

mysql> select s.num,s.name,c.c_name from student AS s INNER JOIN class AS c on s.c_id=c.id;
+-----+--------+-----------+
| num | name   | c_name    |
+-----+--------+-----------+
| 101 | 张三   | 高三 1|
| 102 | 王五   | 高三 1|
| 104 | 赵无极 | 高三 2|
| 105 | 韩夫子 | 高三 2|
| 103 | 李四   | 高三 3|
| 106 | 高俅   | 高三 4|
+-----+--------+-----------+
6 rows in set (0.00 sec)

需要注意的是:一旦起了别名,那么整条sql语句中就只能使用别名了,不能再使用表的原名了。否则报错。

// 已经为student表起了别名s, 但是student.c_id处却仍然使用了表名student, 所以报错。
mysql> select s.num,s.name,c.c_name from student AS s INNER JOIN class AS c on student.c_id=c.id;
ERROR 1054 (42S22): Unknown column 'student.c_id' in 'on clause'

7. 表的联合查询union

联合查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。

格式:
SELECT 字段列表 FROM 表 A...
UNION [ALL]
SELECT 字段列表 FROM 表B...;

// 查询num<=104的学生;
mysql> select * from student where num <= 104;
+-----+--------+------+-----------+------+------+
| num | name   | age  | tel       | c_id | g_id |
+-----+--------+------+-----------+------+------+
| 101 | 张三   |   23 | 354456354 |    1 | NULL |
| 102 | 王五   |   34 | 4334      |    1 |  101 |
| 103 | 李四   |   32 | 131434    |    3 |  101 |
| 104 | 赵无极 |   23 | 4234      |    2 | NULL |
+-----+--------+------+-----------+------+------+
4 rows in set (0.00 sec)
// 查询age>=23的学生
mysql> select * from student where age >= 23;
+-----+------------+------+-----------+------+------+
| num | name       | age  | tel       | c_id | g_id |
+-----+------------+------+-----------+------+------+
| 101 | 张三       |   23 | 354456354 |    1 | NULL |
| 102 | 王五       |   34 | 4334      |    1 |  101 |
| 103 | 李四       |   32 | 131434    |    3 |  101 |
| 104 | 赵无极     |   23 | 4234      |    2 | NULL |
| 105 | 韩夫子     |   34 | 23        |    2 |  102 |
| 106 | 高俅       |   25 | 42543     |    4 |  103 |
| 107 | 范瑶       |   26 | 2345      | NULL |  104 |
| 108 | 斯巴达克斯 |   27 | 422156    | NULL |  104 |
+-----+------------+------+-----------+------+------+
8 rows in set (0.00 sec)

7.1 UNION ALL

// 使用UNION ALL将上述结果直接合并起来
mysql> select * from student where num<=104 UNION ALL select * from student where age>=23;
+-----+------------+------+-----------+------+------+
| num | name       | age  | tel       | c_id | g_id |
+-----+------------+------+-----------+------+------+
| 101 | 张三       |   23 | 354456354 |    1 | NULL |
| 102 | 王五       |   34 | 4334      |    1 |  101 |
| 103 | 李四       |   32 | 131434    |    3 |  101 |
| 104 | 赵无极     |   23 | 4234      |    2 | NULL |
| 101 | 张三       |   23 | 354456354 |    1 | NULL |
| 102 | 王五       |   34 | 4334      |    1 |  101 |
| 103 | 李四       |   32 | 131434    |    3 |  101 |
| 104 | 赵无极     |   23 | 4234      |    2 | NULL |
| 105 | 韩夫子     |   34 | 23        |    2 |  102 |
| 106 | 高俅       |   25 | 42543     |    4 |  103 |
| 107 | 范瑶       |   26 | 2345      | NULL |  104 |
| 108 | 斯巴达克斯 |   27 | 422156    | NULL |  104 |
+-----+------------+------+-----------+------+------+
12 rows in set (0.00 sec)

7.2 UNION

// 通过UNION ALL只是将结果给合并起来, 里面可能含有重复的;
// 通过UNION可以达到去重的效果; 
mysql> select * from student where num<=104 UNION select * from student where age>=23;
+-----+------------+------+-----------+------+------+
| num | name       | age  | tel       | c_id | g_id |
+-----+------------+------+-----------+------+------+
| 101 | 张三       |   23 | 354456354 |    1 | NULL |
| 102 | 王五       |   34 | 4334      |    1 |  101 |
| 103 | 李四       |   32 | 131434    |    3 |  101 |
| 104 | 赵无极     |   23 | 4234      |    2 | NULL |
| 105 | 韩夫子     |   34 | 23        |    2 |  102 |
| 106 | 高俅       |   25 | 42543     |    4 |  103 |
| 107 | 范瑶       |   26 | 2345      | NULL |  104 |
| 108 | 斯巴达克斯 |   27 | 422156    | NULL |  104 |
+-----+------------+------+-----------+------+------+

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/18828.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

两小时让你全方位的认识文件(一)

想必友友们在生活中经常会使用到各种各样的文件&#xff0c;那么我们是否了解它其中的奥秘呢&#xff0c;今天阿博就带领友友们深入地走入文件&#x1f6e9;️&#x1f6e9;️&#x1f6e9;️ 文章目录 一.为什么使用文件二.什么是文件三.文件的打开和关闭四.文件的顺序读写 一…

时间复杂度

学习《代码随想录》 时间复杂度为什么要引入时间复杂度和空间复杂度&#xff1f;什么是时间复杂度&#xff1f;这个O是什么意思&#xff1f;时间复杂度越低越好&#xff1f; 内存管理什么是内存空间&#xff1f;&#xff08;C为例&#xff09;为什么总说C/C更偏向底层&#xff…

T-SQL游标的使用

一.建表 INSERT INTO cloud VALUES( 你 ) INSERT INTO cloud VALUES( 一会看我 ) INSERT INTO cloud VALUES( 一会看云 ) INSERT INTO cloud VALUES( 我觉得 ) INSERT INTO cloud VALUES( 你看我时很远 ) INSERT INTO cloud VALUES( 你看云时很近 ) 二.建立游标 1.游标的一般格…

判断大小端的错误做法

这里不详细讲解大小端的区别&#xff0c;只讲解判断大小端的方法。 1.大端&#xff0c;小端的区别 0x123456 在内存中的存储方式 大端是高字节存放到内存的低地址 小端是高字节存放到内存的高地址 2.大小端的判断 1.错误的做法 int main() {int a0x1234;char c(char)a;if(…

2022年宜昌市网络搭建与应用竞赛样题(三)

网络搭建与应用竞赛样题&#xff08;三&#xff09; 技能要求 &#xff08;总分1000分&#xff09; 竞赛说明 一、竞赛内容分布 “网络搭建与应用”竞赛共分三个部分&#xff0c;其中&#xff1a; 第一部分&#xff1a;网络搭建及安全部署项目&#xff08;500分&#xff0…

基于SpringBoot3从零配置SpringDoc

为了方便调试&#xff0c;更好的服务于前后端分离式的工作模式&#xff0c;我们给项目引入Swagger。 系列文章指路&#x1f449; 系列文章-基于SpringBoot3创建项目并配置常用的工具和一些常用的类 文章目录 1. SpringFox2. SpringDoc2.1 引入依赖2.2 配置文件2.3 语法2.4 使…

PCL学习八:Keypoints-关键点

参考引用 Point Cloud Library黑马机器人 | PCL-3D点云 PCL点云库学习笔记&#xff08;文章链接汇总&#xff09; 1. 引言 关键点也称为兴趣点&#xff0c;它是 2D 图像或 3D 点云或曲面模型上,可以通过检测标准来获取的具有稳定性、区别性的点集。从技术上来说&#xff0c;关键…

Microsoft Edge新功能测评体验

Microsoft Edge使用体验 Microsoft Edge是一款现代化的浏览器&#xff0c;它拥有众多功能和强大的性能&#xff0c;为用户带来更加流畅的浏览体验。 Edge最近推出了分屏功能&#xff0c;支持一个窗口同时显示两个选项卡&#xff0c;这可以大大提高生产力和多任务处理能力。 一…

API接口对程序员的帮助有哪些,参考值简要说明

API接口对程序员的帮助有哪些 提高开发效率&#xff1a;通过API接口&#xff0c;程序员能够在不用重复编写代码的情况下&#xff0c;直接获取其他应用程序提供的服务或数据&#xff0c;极大地提高了开发效率。 减少错误率&#xff1a;使用API接口可以避免手动输入数据容易出现…

洛谷P5047 [Ynoi2019 模拟赛] Yuno loves sqrt technology II(离线区间逆序对+莫队二次离线)

题目 给你一个长为n(1<n<1e5)的序列a(0<ai<1e9)&#xff0c; m(1<m<1e5)次询问&#xff0c;每次查询一个区间[l,r]的逆序对数&#xff0c;可离线。 思路来源 登录 - 洛谷 三道经典分块题的更优复杂度解法&[Ynoi2019模拟赛]题解 - 博客 - OldDriverT…

Flutter性能分析工具使用

使用前提 flutter常用的性能分析工具&#xff0c;这些工具都集成在android studio中&#xff0c;基本能满足我们的需求了。在下面介绍的几个工具中&#xff0c;Flutter Performance和Flutter Inspector都能够直接在debug模式下使用&#xff0c;但是DevTools只能在profile模式下…

typescript:熟练掌握typescript

一、简介 TypeScript 教程 | 菜鸟教程 TypeScript (简称:TS)是JavaScript的超集 (JS有的TS 都有)。 TypeScriptType JavaScript (在JS 基础之上&#xff0c;为JS添加了类型支持)。 哔哩哔哩_教程_TypeScript 二、TypeScript为什么要为js增加类型支持&#xff1f; 背景&am…

4年外包出来,5次面试全挂....

我的情况 大概介绍一下个人情况&#xff0c;男&#xff0c;毕业于普通二本院校非计算机专业&#xff0c;18年跨专业入行测试&#xff0c;第一份工作在湖南某软件公司&#xff0c;做了接近4年的外包测试工程师&#xff0c;今年年初&#xff0c;感觉自己不能够再这样下去了&…

鲲鹏展翅 信安高飞 | 鲲鹏开发者峰会2023-麒麟信安技术论坛成功举办!

2023年5月6日-7日&#xff0c;以“创未来 享非凡”为主题的鲲鹏开发者峰会2023在东莞松山湖举办。鲲鹏产业生态繁荣&#xff0c;稳步发展&#xff0c;正在成为行业核心场景及科研领域首选&#xff0c;加速推动数字化转型。 作为鲲鹏生态重要合作伙伴&#xff0c;麒麟信安受邀举…

Notion Ai中文指令使用技巧

Notion AI 是一种智能技术&#xff0c;可以自动处理大量数据&#xff0c;并从中提取有用的信息。它能够 智能搜索&#xff1a;通过搜索文本和查询结果进行快速访问 自动归档&#xff1a;可以根据关键字和日期自动将内容归档 内容分类&#xff1a;可以根据内容的标签和内容的…

交互式数据分析和处理新方法:pandas-ai =Pandas + ChatGPT

Python Pandas是一个为Python编程提供数据操作和分析功能的开源工具包。这个库已经成为数据科学家和分析师的必备工具。它提供了一种有效的方法来管理结构化数据(Series和DataFrame)。 在人工智能领域&#xff0c;Pandas经常用于机器学习和深度学习过程的预处理步骤。Pandas通…

基于JavaWeb实现的汽车维修管理系统

【简介】 本系统基于springboot mybatis jps架构开发&#xff0c;前后端分离&#xff0c;开发环境为jdk1.8、mysql、maven。系统功能主要分为汽车维修管理、配件管理、财务管理、基础数据管理、系统维护5大模块。 【功能结构】 【技术架构】 系统架构&#xff1a;springboot …

深度学习第J6周:ResNeXt-50实战解析

目录 一、模型结构介绍 二、前期准备 三、模型 三、训练运行 3.1训练 3.2指定图片进行预测 &#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作者&#xff1a;[K同学啊] &#x1f4cc; …

移动端异构运算技术 - GPU OpenCL 编程(基础篇)

一、前言 随着移动端芯片性能的不断提升&#xff0c;在移动端上实时进行计算机图形学、深度学习模型推理等计算密集型任务不再是一个奢望。在移动端设备上&#xff0c;GPU 凭借其优秀的浮点运算性能&#xff0c;以及良好的 API 兼容性&#xff0c;成为移动端异构计算中非常重要…

Echarts使用本地JSON文件加载不出图表的解决方法以及Jquery访问本地JSON文件跨域的解决方法

前言 最近需要做一个大屏展示&#xff0c;需要用原生html5cssjs来写&#xff0c;所以去学了一下echarts的使用。在使用的过程中难免碰到许多BUG&#xff0c;百度那是必不可少的&#xff0c;可是这些人写的牛头不对马嘴&#xff0c;简直是标题党一大堆&#xff0c;令我作呕&…