当前位置:   article > 正文

【MySQL】_联合查询基础表

【MySQL】_联合查询基础表

联合查询也称为多表查询,是将多个表联合到一起进行查询

笛卡尔积是联合查询的基础笛卡尔积其实就是一种排列组合,把两张表的记录尽可能地排列组合出n种情况:

以两张表:班级表与学生表为例,计算这两个表的笛卡尔积:

笛卡尔积就是得到了一张更大的表,其列数为两个表列数之和,行数为两个表列数之积;

试在testdemo1数据库下创建以下表:

  1. mysql> show tables;
  2. +---------------------+
  3. | Tables_in_testdemo1 |
  4. +---------------------+
  5. | classes |
  6. | course |
  7. | score |
  8. | student |
  9. +---------------------+
  10. 4 rows in set (0.00 sec)

 表的结构与内容分别为:

(1)student表:

  1. mysql> desc student;
  2. +------------+-------------+------+-----+---------+----------------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +------------+-------------+------+-----+---------+----------------+
  5. | id | int(11) | NO | PRI | NULL | auto_increment |
  6. | sn | varchar(20) | YES | | NULL | |
  7. | name | varchar(20) | YES | | NULL | |
  8. | qq_mail | varchar(20) | YES | | NULL | |
  9. | classes_id | int(11) | YES | | NULL | |
  10. +------------+-------------+------+-----+---------+----------------+
  11. 5 rows in set (0.00 sec)
  12. mysql> select* from student;
  13. +----+-------+------------+------------------+------------+
  14. | id | sn | name | qq_mail | classes_id |
  15. +----+-------+------------+------------------+------------+
  16. | 1 | 09982 | 黑旋风李逵 | xuanfeng@qq.com | 1 |
  17. | 2 | 00835 | 菩提老祖 | NULL | 1 |
  18. | 3 | 00391 | 白素贞 | NULL | 1 |
  19. | 4 | 00031 | 许仙 | xuxian@qq.com | 1 |
  20. | 5 | 00054 | 不想毕业 | NULL | 1 |
  21. | 6 | 51234 | 好好说话 | say@qq.com | 2 |
  22. | 7 | 83223 | tellme | NULL | 2 |
  23. | 8 | 09527 | 老外学中文 | foreigner@qq.com | 2 |
  24. +----+-------+------------+------------------+------------+
  25. 8 rows in set (0.00 sec)

(2)classes表:

  1. mysql> desc classes;
  2. +-------+--------------+------+-----+---------+----------------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +-------+--------------+------+-----+---------+----------------+
  5. | id | int(11) | NO | PRI | NULL | auto_increment |
  6. | name | varchar(20) | YES | | NULL | |
  7. | desc | varchar(100) | YES | | NULL | |
  8. +-------+--------------+------+-----+---------+----------------+
  9. 3 rows in set (0.00 sec)
  10. mysql> select* from classes;
  11. +----+-------------------+-----------------------------------------------+
  12. | id | name | desc |
  13. +----+-------------------+-----------------------------------------------+
  14. | 1 | 计算机系20191| 学习了计算机原理、C和Java语言、数据结构和算法 |
  15. | 2 | 中文系20193| 学习了中国传统文学 |
  16. | 3 | 自动化20195| 学习了机械自动化 |
  17. +----+-------------------+-----------------------------------------------+
  18. 3 rows in set (0.00 sec)

(3)course表:

  1. mysql> desc course;
  2. +-------+-------------+------+-----+---------+----------------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +-------+-------------+------+-----+---------+----------------+
  5. | id | int(11) | NO | PRI | NULL | auto_increment |
  6. | name | varchar(20) | YES | | NULL | |
  7. +-------+-------------+------+-----+---------+----------------+
  8. 2 rows in set (0.00 sec)
  9. mysql> select* from course;
  10. +----+--------------+
  11. | id | name |
  12. +----+--------------+
  13. | 1 | Java |
  14. | 2 | 中国传统文化 |
  15. | 3 | 计算机原理 |
  16. | 4 | 语文 |
  17. | 5 | 高阶数学 |
  18. | 6 | 英文 |
  19. +----+--------------+
  20. 6 rows in set (0.00 sec)

(4)score表: 

  1. mysql> desc score;
  2. +------------+--------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +------------+--------------+------+-----+---------+-------+
  5. | score | decimal(3,1) | YES | | NULL | |
  6. | student_id | int(11) | YES | | NULL | |
  7. | course_id | int(11) | YES | | NULL | |
  8. +------------+--------------+------+-----+---------+-------+
  9. 3 rows in set (0.00 sec)
  10. mysql> select* from score;
  11. +-------+------------+-----------+
  12. | score | student_id | course_id |
  13. +-------+------------+-----------+
  14. | 70.5 | 1 | 1 |
  15. | 98.5 | 1 | 3 |
  16. | 33.0 | 1 | 5 |
  17. | 98.0 | 1 | 6 |
  18. | 60.0 | 2 | 1 |
  19. | 59.5 | 2 | 5 |
  20. | 33.0 | 3 | 1 |
  21. | 68.0 | 3 | 3 |
  22. | 99.0 | 3 | 5 |
  23. | 67.0 | 4 | 1 |
  24. | 23.0 | 4 | 3 |
  25. | 56.0 | 4 | 5 |
  26. | 72.0 | 4 | 6 |
  27. | 81.0 | 5 | 1 |
  28. | 37.0 | 5 | 5 |
  29. | 56.0 | 6 | 2 |
  30. | 43.0 | 6 | 4 |
  31. | 79.0 | 6 | 6 |
  32. | 80.0 | 7 | 2 |
  33. | 92.0 | 7 | 6 |
  34. +-------+------------+-----------+
  35. 20 rows in set (0.00 sec)

在该数据库中四张表,三个实体:学生、班级、课程;

其中学生和班级是一对多关系,学生和课程是多对多关系(成绩表是关联表),班级和课程之间没有直接的关联关系;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/193027?site
推荐阅读
相关标签
  

闽ICP备14008679号