首页> 基础笔记 >Mysql基础学习 Mysql基础学习

MySQL多表查询(连接查询)

作者:小萝卜 2019-08-29 浏览 1284

简介MySQL多表查询(连接查询),非等值和等值的多表查询,自身连接查询,复合连接查询

MySQL多表查询(连接查询)

多表查询给用户带来很大的灵活性,可以在任何时候增加新的数据类型,为不同实体创建新的表,然后通过连接进行查询。包括两种形式:

非等值和等值的多表查询

多表查询和普通的单表查询相似,都是使用SELECT语句。只不过在多表查询时需要把多张表的名字,全部填写在FROM子句中,并用逗号“,”将表名分开。同时,也可以对数据表使用别名进行引用。另外,为了在查询时区分多个表中出现的重复字段名,可以在字段列表中使用“表名.列名”的形式,如果不存在重名的列,可以省略表名。

➢ 自身连接查询

连接查询操作不仅可以用于多个表之间,也可以是一个表与其自己进行连接,称为自身连接查询。当一个表所代表的实体之间有关系时,就可以使用自身连接查询。

➢ 复合连接查询

前面介绍的多表查询是两个表之间,只有一个WHERE子句查询条件。如果在FROM子句后面有n个表需要查询,则在WHERE子句中就需要有多个连接条件。至少要比出现的表格数量少1个,也就是不能少于n−1个查询条件,多个条件使用“AND”关键词连接即可。

实例:
-- 新建数据表
mysql> create table grade(
    -> id int unsigned not null auto_increment primary key,
    -> sid int unsigned,
    -> php tinyint unsigned,
    -> mysql tinyint unsigned
    -> );
Query OK, 0 rows affected (0.06 sec)

mysql> insert into grade values
    -> (null,4,89,90),
    -> (null,2,90,95),
    -> (null,1,87,80),
    -> (null,5,100,100),
    -> (null,6,58,62),
    -> (null,7,78,94);
Query OK, 6 rows affected (0.00 sec)
Records: 6  Duplicates: 0  Warnings: 0

-- 关联查询
mysql> select * from stu,grade where stu.id = grade.sid;
+----+----------+-----+-----+---------+----+------+------+-------+
| id | name     | age | sex | classid | id | sid  | php  | mysql |
+----+----------+-----+-----+---------+----+------+------+-------+
|  4 | zhaoliu  |  31 | m   | lamp110 |  1 |    4 |   89 |    90 |
|  2 | lisi     |  22 | w   | lamp110 |  2 |    2 |   90 |    95 |
|  1 | zhangsan |  20 | m   | lamp110 |  3 |    1 |   87 |    80 |
|  5 | xiaowang |  18 | w   | lamp111 |  4 |    5 |  100 |   100 |
|  6 | laowang  |  38 | m   | lamp106 |  5 |    6 |   58 |    62 |
|  7 | xiaoli   |  28 | w   | lamp110 |  6 |    7 |   78 |    94 |
+----+----------+-----+-----+---------+----+------+------+-------+
6 rows in set (0.00 sec)


mysql> select s.*,g.php,g.mysql from stu s,grade g
    -> where s.id=g.sid;
+----+----------+-----+-----+---------+------+-------+
| id | name     | age | sex | classid | php  | mysql |
+----+----------+-----+-----+---------+------+-------+
|  4 | zhaoliu  |  31 | m   | lamp110 |   89 |    90 |
|  2 | lisi     |  22 | w   | lamp110 |   90 |    95 |
|  1 | zhangsan |  20 | m   | lamp110 |   87 |    80 |
|  5 | xiaowang |  18 | w   | lamp111 |  100 |   100 |
|  6 | laowang  |  38 | m   | lamp106 |   58 |    62 |
|  7 | xiaoli   |  28 | w   | lamp110 |   78 |    94 |
+----+----------+-----+-----+---------+------+-------+
6 rows in set (0.09 sec)


mysql> select * from grade;
+----+------+------+-------+
| id | sid  | php  | mysql |
+----+------+------+-------+
|  1 |    4 |   89 |    90 |
|  2 |    2 |   90 |    95 |
|  3 |    1 |   87 |    80 |
|  4 |    5 |  100 |   100 |
|  5 |    6 |   58 |    62 |
|  6 |    7 |   78 |    94 |
+----+------+------+-------+
6 rows in set (0.00 sec)

mysql> select g.id,g.sid,s.name,g.php,g.mysql from grade g,stu s
    -> where s.id = g.sid;
+----+------+----------+------+-------+
| id | sid  | name     | php  | mysql |
+----+------+----------+------+-------+
|  1 |    4 | zhaoliu  |   89 |    90 |
|  2 |    2 | lisi     |   90 |    95 |
|  3 |    1 | zhangsan |   87 |    80 |
|  4 |    5 | xiaowang |  100 |   100 |
|  5 |    6 | laowang  |   58 |    62 |
|  6 |    7 | xiaoli   |   78 |    94 |
+----+------+----------+------+-------+
6 rows in set (0.00 sec)

 

很赞哦! (0)

文章评论

    高端网站建设