38.笔记 MySQL学习——使用连接实现多表连接
来源:互联网 发布:苏州中移软件 编辑:程序博客网 时间:2024/06/06 10:52
38.笔记 MySQL学习——使用连接实现多表连接
与SQL语言中其他语句相比,SELECT语句时最常用,也是最不容易掌握的。
MYSQL的SELECT语句基本语法如下:
SELECT select_list
FROM table_list
WHERE row_contraint
GROUP BY grouping_columns
ORDER BY sorting_columns
HAVING group_constraint
LIMIT count;
MYSQL 不要求必须有FROM 子句。
1. 内连接
使用INNER JOIN来隔开多个表的名字,就进行了内连接
例如:
SELECT * FROM T1 INNER JOIN T2;
这样得到的是笛卡尔积
可以通过WHERE子句进行限定,如下
SELECT T1.*,T2.* FROM T1 INNER JOIN T2WHERE T1.I1=T2.I2;
此外CROSS JOIN 和JOIN 以及逗号都等同于INNER JOIN。
2. 对列进行限定
当一个表中出现相同的列名的时候,需要通过表名来解决可能产生的歧义。
如果需要进行自连接的话,需要使用别名来解决问题。
3. 左连接
内连接只会显示在两个表里都匹配上的行。
外连接可以把其中一个表在另一个表里没有匹配的行也显示出来。
左连接的话,当左表的某行在右表里无匹配时,仍然会被选取为一个输出行。
右连接相反。
创建两个表如下:
mysql> create table t1 (i1 int,c1 varchar(10));
Query OK, 0 rows affected (0.01 sec)
mysql> create table t2 (i2 int,c2 varchar(10));
Query OK, 0 rows affected (0.01 sec)
插入数据如下:
mysql> insert into t1 values ( 1, 'a');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t1 values ( 2, 'b');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t1 values ( 3, 'c');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t2 values ( 2, 'c');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t2 values ( 3, 'b');
Query OK, 1 row affected (0.01 sec)
mysql> insert into t2 values ( 4, 'a');
Query OK, 1 row affected (0.01 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
内连接如下:
mysql> select t1.*,t2.* from t1 inner join t2 ont1.i1=t2.i2;
+------+------+------+------+
| i1 | c1 | i2 | c2 |
+------+------+------+------+
| 2 | b | 2 | c |
| 3 | c | 3 | b |
+------+------+------+------+
2 rows in set (0.01 sec)
左连接如下:
mysql> select t1.*,t2.* from t1 left join t2 ont1.i1=t2.i2;
+------+------+------+------+
| i1 | c1 | i2 | c2 |
+------+------+------+------+
| 2 | b | 2 | c |
| 3 | c | 3 |b |
| 1 | a | NULL | NULL |
+------+------+------+------+
3 rows in set (0.00 sec)
只想将左表里哪些在右表里无匹配的行找出来时,LEFT JOIN非常有用。
如下:
mysql> select t1.*,t2.* from t1 left join t2 ont1.i1=t2.i2 where t2.i2 is null;
+------+------+------+------+
| i1 | c1 | i2 | c2 |
+------+------+------+------+
| 1 | a | NULL | NULL |
+------+------+------+------+
1 row in set (0.00 sec)
可以通过ON子句或USING()子句指定匹配条件。USING子句要求被连接的列必须有相同的名字。
NATURAL LEFT JOIN类似于LEFT JOIN。会按照LEFT JOIN规则对左右两个表所有同名的列进行匹配。
- 38.笔记 MySQL学习——使用连接实现多表连接
- MySQL学习笔记(二):内连接和外连接实现多表查询
- MySQl 子查询,左右连接,多表连接学习笔记
- Mysql学习笔记九——内连接、左连接、右连接查询
- MySQL学习笔记之多表连接
- mysql学习笔记——远程连接数据库
- java学习笔记之——JDBC(连接mysql数据库)
- MySQL学习笔记(十)内外连接及多表连接
- Java 学习笔记01:使用JDBC连接MYSQL数据库
- 【python学习笔记】python使用sqlalchemy连接mysql数据库
- ubuntu playframework 使用 ebean 连接 MySQL 学习笔记
- libevent学习笔记【使用篇】——8. 连接监听:接收TCP连接
- MySQL 笔记 —— 连接远程数据库
- 69.笔记 MySQL学习——C编写MySQL程序二连接服务器
- MySQL学习16:多表连接
- MySQL学习16:多表连接
- PHP学习笔记(三)连接MySQL
- MySQL学习笔记9:连接查询
- 阿里云 centos7 安装 mysql5.7
- 目前主流的浏览器以及其内核名
- 阿里云服务器远程登录闪退
- Kubernetes 主从架构安装
- 框架集、css
- 38.笔记 MySQL学习——使用连接实现多表连接
- 配置nginx图片路径,访问nginx上的图片
- 39.笔记 MySQL学习——使用子查询实现多表检索
- PTA 03-树2 List Leaves
- 前端不会特效怎么办?用这个css属性玩转图片处理
- acA4096-30um
- 实验二
- 水仙花数
- 存个档