musql--多表操作

 

主表: category (分类表)    cid为主键

从表:product(商品表)      category_id为外键

 

    外键特点: 1.从表外键的值是对主表主键的引用.

                    2.从表外键类型,必须与主表主键类型一致.

 

语法:

    alter table 从表 add[constraint] [外键名称] foreign key (从表外键字段名) references 主表(主表的主键)

 

// [外键名称]可以不写,[外键名称]用于删除外键约束删除外键约束: 

alter table 从表 drop foreign key 外键名称   

     alter table product add foreign key(category_id) references category(cid);

                          从表                                      外键                                主表     主键  

 

要想删除主表中与从表有关联关系的数据,可以这么做:

  1. 解除主从表的约束关系

  2. 先删除从表中与主表有关系的数据,再删除主表中的数据。

另外,从表也不能添加主表中不存在的数据

删除外键约束:    

    alter table 从表 drop foreign key 外键名称   

功放

表与表的关系:

一对多的建表原则

  在多的一方 创建一个字段,字段作为外键 指向 1的一方的主键

alter table produce add foreign key(cno) references category(cid);

 

多对多的建表原则

需要创建第三张表,中间至少两个字段,中间为从表,两边为主表.

 

alter table stu_course add foreign key(sno) references stu(sid);

                       从表                               外键                 主表  主键   

alter table stu_course add foreign key(cno) references stu(cid);

 

 

多表查询      (A,B为两表名称)     条件:一般为 A = B

1.交叉连接查询(基本不会使用..因为得到的是两个表的乘积)  

        语法: select * from A,B;

 

2.内连接查询   (使用关键字 inner join ---inner可省略)

        隐式内连接 : select * from A,B where 条件 ;  

  

      显示内连接 : select * from A inner join B on 条件 ;

 

 

3.外连接查询   (使用关键字 outer join --outer可以省略)

        左外连接 : select * from A left outer join B on 条件 ; 

        右外连接 : select * from A right outer join B on 条件 ;

 

内连接和外连接的区别:

 

 

子查询  :一条select语句结果作为另一条select语法的一部分

隐式内连接:

    select p.* from products p, category c where p.category_id = c.cid and c.cname = '化妆品');

                              从表              主表               p(从表).外键    = c(主表).主键  c.主表的一属性 = 化妆品

子查询:

    select * from products where category_id = (select cid from category where cname = '化妆品');

                           从表                        外键                   主键           主表                          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值