1.内连:
如下,user表中有userid,username,userage,userthing字段属性,colleagues表里有collid,collname,collsex,collposition字段属性,当两张表内连接,只会查询两张表里通过on条件都满足的数据,即user表和colleagues表都有的数据。
查询名字相同的那条数据,也就是说,user表里和colleagues表名字都相同的那条数据,即要求必须同时满足两张表。
SELECT * FROM USER INNER JOIN colleagues ON user.username = colleagues.collname
- 1
先看两张表里原来的数据,user表的和colleagues表的数据分别如下图:
在看通过上述的SQL内连查询语句查出来的结果:
查询出的结果是必须是条件满足两张表,即两张表共有的数据。
2.左连:
左连本身就是以左表数据为主,查符合条件的数据,还是以user表和colleagues表为例,user表中原来的数据和colleagues表中原来的数据如下:
左连的语句如下:
SELECT * FROM USER LEFT JOIN colleagues ON user.username = colleagues.collname ;
- 1
查询结果如下:
可以看出满足名字相同的只有yaoshuting一条数据,但是user表中的数据都会显示出来,即便在colleagues表中是没有数据的。
当给左连再加上where条件判断时,如下:
SELECT * FROM USER LEFT JOIN colleagues ON user.username = colleagues.collname WHERE colleagues.collname IS NOT NULL;
- 1
结果如下:只查出左连后,还满足where条件的数据。
3.右连:
右连本身就是以右表数据为主,查符合条件的数据,还是以user表和colleagues表为例,user表中原来的数据和colleagues表中原来的数据上述有,这里直接给右连的结果,如下:
SELECT * FROM USER RIGHT JOIN colleagues ON user.username = colleagues.collname;
- 1
能看出来本身colleagues表中就只有3条数据,在查出名字相同的满足user表的数据,以colleagues表为主,也可以写成colleagues left join user,这样也是以colleagues表数据为主的,即user left join colleagues 等同于 colleagues right join user。
小结:
1.内连就是抓取两张表共同满足on条件后的数据。
2.左连就是以左表数据为主,再查出满足on条件后的数据。
3.右连就是以右表数据为主,再查出满足on条件后的数据。
4.A表左连B表等同于B表右连A表,A表右连B表等同于B表左连A表。
一、创建商品分类表:(分开插入数据的)
1、创建 goods_cates 表
#创建表if 用法: 如果不存在创建,存在报错
create table if not exists goods_cates(cate_id int unsigned primary key auto_increment, cate_name varchar(40));
2、将刚刚查询的数据插入到这个表中(部分插入):下面的代码,insert插入数据,把values去掉了
3、更新数据、并关联表
通过goods_cates 数据表来更新goods数据表
二、创建品牌数据表并且插入数据
1、创建goods_brands表并且同时分组写入数据,一步到位。(可这样创建表后边加上分组写)
2、更新数据并关联表:
通过goods_brands 数据表来更新goods数据表
三、修改商品表的结构
1、修改表的名称、属性
本例子中,要想添加外键,必须修改成int属性,要保持属性一致
2、注意:添加外键的那个字段的数据类型必须要与相关联的那个表的字段的数据类型一致。
四、多张表的连接查询
内连接:
左连接:
右连接:
五、外键约束的创建和删除(可建立关系,不能随便添加数据)
现在3张表的状况:
注意,如果添加不上外键:
1、检查你的表引擎是不是都是INNodb类型的,只有这种类型才可以创建外键。
2、相关联的表都要改引擎Innodb
①先查看一下表的结构:show create table 表名 \G;
② 修改:alter table 表名 engine=Innodb;
1、添加外键
show create table goods; 查看
2、注意:添加外键的那个字段的数据类型必须要与相关联的那个表的字段的数据类型一致。
3、删除刚添加的外键约束:需要指定具体删除的外键的名字:
4、删除两个key:
六、数据备份与还原
1、备份一个数据库
下面是备份一个叫做python1807A的数据库:
注意:必须退出,再写命令, 在虚拟机上需要加 -h IP 地址, 在windows不需要加-h、IP地址
>后面保存路径,直接定义即可,会自己创建文件
2、备份多个数据库
例:备份dailyfresh数据库、ihome_python04数据库、python1807A数据库
加上--databases这个选项,然后跟多个数据库的名称。
3、备份所有数据库
使用--all-databases选项就可备份所有数据库了。
4、数据还原
先确保有数据库,没有先创建数据库,再还原数据表中的数据