sql 多表 表与表之间的关系,多表查询

声明:阿里巴巴开发手册禁止表的级联,所有相关操作应在代码中实现。

一、外键

申明外键约束

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


[外键名称]用于删除外键约束的,一般建议‘_fk’结尾
	alter table 从表 drop foreign key 外键名称


二、表与表之间的关系

1.一对多

在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键;
category:products=1: m

例:
#添加外键字段 category_id
alter table product add column category_id varchar(32);

#添加约束
 alter table product add constraint product_fk foreign key (category_id)references category (cid);
2.多对多

需要创建第三张表,中间表至少有两个字段,分别作为外键只想各自一方的主键。(就是将多对多拆分成两个一对多);
orders、item、products

## 联合主键(可省略)
alter table 'item' add primary key (oid,pid);

## orders表和中间表的主外键关系
alter table 'item' add constraint item_orders_fk foreign key(oid) references orders(oid);

### produtcs表和中间表的主外键关系
alter table 'item' add constraint item_products_fk foreign key(pid) references products(pid);

两张表都是主表;中间表是从表,提供两个字段,都是外键;

3.一对一

三、连接查询

0.笛卡尔积

在这里插入图片描述

1. 多表查询
1.1交叉连接查询(基本不会使用-得到的是两个表的乘积)
语法:
	select * from A,B;
1.2内连接查询(关键字:inner join ——inner可省略):只拼接两张表中共有的部分
隐式内连接
select * from A,B where 条件;
显式内连接
select * from A inner join B on 条件;
1.3 外连接查询(关键字:outer join ——outer 可省略)
左外连接(left outer join):以左表为基准展示所有的内容 没有的NULL填充
select * from A left outer join B on 条件;
右外连接:right outer join:以右表为基准展示所有的内容 没有的NULL填充
select * from A right outer join B on 条件;
2.子查询

子查询:一条select语句结果作为另外一条select语法一部分(查询条件,查询结果,表等)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
mysql学习总结, 表与表关系 表:具有固定列数和任意行数。 数据库:一些关联表的集合。 主键:一个数据表只能包含一个主键,使用主键来查询数据。 外键:用来关联两张表。 索引:快速访问数据库表的特定信息,索引是对数据库表一列和多列的值进行排序的一种数据结构。 DDL:数据定义语言:定义数据库对象:创建库,表,列等。 DML:数据操作语言:用来操作数据库表中的记录。 DQL:数据查询语言:用来查询数据。 DCL:数据控制语言:用来定义访问权限和安全级别。 oracle 创建用户: CREATE USER 用户名 IDENTIFIED BY 密码; grant resource ,connect to 用户名; mysql数据库分为两类: 系统数据库: information_schema:存储数据库对象信息(例如:用户表信息,列信息等里面内容不能动)。 performance_schema:存储数据库服务器性能参数信息。 mysql:存储数据库用户权限信息。 sys:以视图形式将information_schema和performance_schema结合,查询出更容易理解数据。 用户数据库:   用户自己创建的数据库,一个项目一个数据库。 常用数据类型: double:浮点型(double(5,2)表示最多5位,其中必须有两位小数)。 char:固定长度字符串类型 varchar:可变长度字符串类型 text:字符串类型 blob:二进制类型 data:日期类型(格式为:yyyy-MM-dd) time:时间类型(格式为:hh:mm:ss) datatime:日期时间类型(格式为:yyyy-MM-dd hh:mm:ss) 在mysql中字符串类型和日期类型都要用单引号括起来。('mysql','2020-01-01')

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值