MySQL详细的操作
这里我只有一个表,现在我修改一下表中的数据,把Master的类型改为INT,并添加一些数据在里面mysql>>
mysql> UPDATE st SET Master=1 WHERE>
mysql> UPDATE st SET Master=2 WHERE>
mysql> UPDATE st SET Master=3 WHERE>
mysql> UPDATE st SET Master=4 WHERE>
mysql> UPDATE st SET Master=7 WHERE>
mysql> UPDATE st SET Master=8 WHERE>
mysql> UPDATE st SET Master=5 WHERE> mysql> SELECT * FROM st;
+----+--------+------+--------+--------+
|> +----+--------+------+--------+--------+
|1 | luowei | NULL | M | 1 |
|2 | Qi | NULL | F | 2 |
|3 | Ro | NULL | M | 3 |
|4 | RQ | NULL | F | 4 |
|5 | pk | NULL | M | 7 |
|6 | jk | NULL | M | 8 |
|7 | OL | NULL | M | 5 |
+----+--------+------+--------+--------+
现在表的基本情况如上所示。当然我们为了方便记录Master,使用是INT来标,其实Master是一个姓名,所以我们再建立一个新表mt,来记录Master的对应的关系
mysql> CREATE TABLE mt(
->> -> name VARCHAR(30) NOT NULL );
mysql> INSERT INTO mt (name) VALUE ('A');
......
自己多插入几行,我这里就省略了
mysql> SELECT * FROM mt;
+----+------+
|> +----+------+
|1 | A |
|2 | B |
|3 | C |
|4 | D |
|5 | E |
|6 | F |
+----+------+
好了现在两个表准备好了,接下来我将做一下多表之间的查询
多表之间的查询可以分为:
交叉查询:笛卡尔乘积,两表相乘;
内连接:对称连接,就是显示两个表中都有的,一个表中如果没有,就不显示了;
外连接:非对称连接
左外连接:LEFT JOIN ON 左表中的都显示,右表中无的话显示为NULL
右外连接:RIGHT JOIN ON 右表中的都显示,左表中无的话显示为NULL
自连接:一个表中的一列建立在同张表的另一列;
UNION:连接两个表;
接下来分别对上面的情况进行实验;
1.交叉查询:
mysql> SELECT * FROM st,mt;
42 rows in set (0.00 sec)//中间的数据就省略了,这里的结果就是两个表的行数相乘的结果;
2.内连接:
mysql> SELECT st.Name,mt.name FROM st,mt WHERE st.Master=mt.id;
+--------+------+
| Name | name |
+--------+------+
| luowei | A |
| Qi | B |
| Ro | C |
| RQ | D |
| OL | E |
+--------+------+
3.左外连接:
mysql> SELECT st.Name,mt.name FROM st LEFT JOINmtON st.Master=mt.id;
+--------+------+
| Name | name |
+--------+------+
| luowei | A |
| Qi | B |
| Ro | C |
| RQ | D |
| pk | NULL |
| jk | NULL |
| OL | E |
+--------+------+
这时候我们可以看到,凡是左表中有的,都显示了,右表中没有的都显示为NULL了;
4.右外连接:
mysql> SELECT st.Name,mt.name FROM st RIGHT JOINmtON st.Master=mt.id;
+--------+------+
| Name | name |
+--------+------+
| luowei | A |
| Qi | B |
| Ro | C |
| RQ | D |
| OL | E |
| NULL | F |
+--------+------+
5.自连接:
mysql> SELECT k1.Name,k2.Gender FROM st AS k1,st AS k2 WHERE k1.ID = k2.Master;
+--------+--------+
| Name | Gender |
+--------+--------+
| luowei | M |
| Qi | F |
| Ro | M |
| RQ | F |
| OL | M |
| pk | M |
+--------+--------+
6.UNION;
mysql> SELECT> +--------+----------+
| new_id | new_name |
+--------+----------+
| 1 | luowei |
| 2 | Qi |
| 3 | Ro |
| 4 | RQ |
| 5 | pk |
| 6 | jk |
| 7 | OL |
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | D |
| 5 | E |
| 6 | F |
+--------+----------+
13 rows in set (0.00 sec)这样就把两个表连接到了一起了。
页:
[1]