多表操作

一、外键特点:

  • 从表外键的值是对主表主键的引用。
  • 从表外键类型,必须与主表主键类型一致。
alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);

二、多表查询

2.1 交叉查询(笛卡尔积) 【两个表的乘积】

 select * from A,B;

2.2 内连接查询

- 隐式内连接:select * from A,B where 条件;
- 显示内连接:select * from A inner join B on 条件;
- /*inner可以省略*/

##建议多表查询时,使用别名
SELECT DISTINCT c.cname FROM category c
  INNER JOIN products p ON c.cid = p.category_id
  WHERE p.flag = '1';

2.3 外连接

  • 左外连接:查询左表(A表)所有的数据,关联的右表(B表)数据是否显示,取决于条件是否成立,如果成立显示数据,如果不成立显示null。
    格式:select * from A left outer join B on 连接条件
  • 右外连接:查询右表(B表)所有的数据,关联的左表(A表)数据是否显示,取决于条件是否成立,如果成立显示数据,如果不成立显示null。
    格式:select * from A right outer join B on 连接条件
    Tips:outer可以省略

子查询

select …查询字段 … from … 表… where … 查询条件

#方案1:内连接
SELECT * FROM products p , category c WHERE c.cid = p.category_id AND c.cname='化妆品' AND p.flag = '1';

#方案2:--子查询 --查询条件
  SELECT cid FROM category WHERE cname = '化妆品' ;
  SELECT * FROM products p WHERE p.category_id = 'c003';
  # 查询条件
  SELECT * FROM products p WHERE p.category_id = (SELECT cid FROM category WHERE cname = '化妆品')
#方案3:--子查询 --表
  # 表
  SELECT * FROM category WHERE cname = '化妆品' ;  
  SELECT * FROM products p , (SELECT * FROM category WHERE cname = '化妆品') c WHERE c.cid = p.category_id; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值