さまざまなクエリのMySQLの接続に参加します

最近のプロジェクトは、銀行の変態のニーズを満たすために、クエリに参加し、いくつかのSQLを使用しています。夜にちょうどその時自習をし、関連するビデオを参照してください、それでは記録知識、そして次回は、以下の絵によると、あなたは、SQLを記述する方法を知ることができます。

注意事項:条件を配置すべき参加操作...に、表2の排出の関連部分の現在の理解、リアデータフィルタリングの最終排出部、

1.以下の表は、さまざまなSQL文の解釈を示し、結合操作

2.セルフテスト

  •   内蔵表:表のスコア、それぞれ(SC)、および学生テーブル(学生);関係student.student_id = sc.id、次のように文は次のとおりです。
    • SET NAMES utf8mb4;
      SET FOREIGN_KEY_CHECKS = 0;
      
      -- ----------------------------
      -- Table structure for sc
      -- ----------------------------
      DROP TABLE IF EXISTS `sc`;
      CREATE TABLE `sc`  (
        `id` int(11) NOT NULL,
        `score` int(255) NULL DEFAULT NULL,
        PRIMARY KEY (`id`) USING BTREE
      ) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
      
      -- ----------------------------
      -- Records of sc
      -- ----------------------------
      INSERT INTO `sc` VALUES (10, 40);
      INSERT INTO `sc` VALUES (11, 20);
      INSERT INTO `sc` VALUES (12, 30);
      
      SET FOREIGN_KEY_CHECKS = 1;
    • DROP TABLE IF EXISTS `student`;
      CREATE TABLE `student`  (
        `id` int(11) NOT NULL,
        `student_id` int(11) NULL DEFAULT NULL,
        `name` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
        PRIMARY KEY (`id`) USING BTREE
      ) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
      
      -- ----------------------------
      -- Records of student
      -- ----------------------------
      INSERT INTO `student` VALUES (0, 12, 'b');
      INSERT INTO `student` VALUES (1, 11, 'a');
      INSERT INTO `student` VALUES (3, 13, 'c');
      
      SET FOREIGN_KEY_CHECKS = 1;
  • 建表数据结果如下:
  • 可以根据图表中的sql 语句进行相关join查询测试;

3.简单测试2个结果:

测试第一个join 语句如下:

select student.student_id,sc.score from student LEFT JOIN sc on student.student_id=sc.id

结果为:

测试第二个join 语句如下: 

select student.student_id,sc.score from student LEFT JOIN sc on student.student_id=sc.id WHERE sc.id is null

结果为:;解析:在 第一个语句的基础上加上 WHERE sc.id is null ;只保留sc.id 为 nul的数据,而这个数据 只有 student 和 sc 非交集部分才有;

 

 

重点为  mysql 没有 full outer join 或者 full join;导致 要想完成 图中的 6,7部分,必须使用 图中1和4 或 1和5 的 union 来实现;

测试第6个join 语句如下:

select student.student_id,sc.score from student left JOIN sc on student.student_id=sc.id
UNION
select student.student_id,sc.score from student RIGHT JOIN sc on student.student_id=sc.id

结果为:

 

测试第7个join 语句如下:

select student.student_id,sc.score from student left JOIN sc on student.student_id=sc.id WHERE sc.id is null
UNION
select student.student_id,sc.score from student RIGHT JOIN sc on student.student_id=sc.id WHERE student.student_id is null

结果为:

 

 

  

おすすめ

転載: www.cnblogs.com/rgcLOVEyaya/p/RGC_LOVE_YAYA_1103_1days.html