sql进阶

外键约束【应用】

如果该列与另的一张表的主键有关联关系,那么这一列就是键列。

外键约束能保证数据的正确性和完整性。

外键约束格式:

CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主表主键列名)
constraint:约束
foreign:外国的
reference:引用
简写:可以不知道外键名(默认即可)
FOREIGN KEY (本表外键列名) REFERENCES 主表名(主表主键列名)

建立外键

-- 创建orderlist订单表
CREATE TABLE orderlist(
	id INT PRIMARY KEY AUTO_INCREMENT,    -- id
	number VARCHAR(20) NOT NULL,          -- 订单编号
	uid INT,                              -- 订单所属用户
	CONSTRAINT ou_fk1 FOREIGN KEY (uid) REFERENCES USER(id)   -- 添加外键约束
);

删除外键

-- 标准语法
ALTER TABLE 表名 DROP FOREIGN KEY 外键名;

-- 删除外键
ALTER TABLE orderlist DROP FOREIGN KEY ou_fk1;

建表后添加外键

-- 标准语法
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名);

-- 添加外键约束
ALTER TABLE orderlist ADD CONSTRAINT ou_fk1 FOREIGN KEY (uid) REFERENCES USER(id);

多表关系【理解/分析】

一对一

**建表原则:**在任意一个表建立外键,去关联另外一个表的主键

一对多

**建表原则:**在多的一方,建立外键约束,来关联一的一方主键

多对多

**建表原则:需要借助第三张表中间表,中间表至少包含两个列,**这两个列作为中间表的外键,分别关联两张表的主键

多表查询【掌握】

1.内连接

查询结果是两个表的交集

2.外连接

查询结果是一张表的全部和两张表的交集。

3.子查询

3.1 子查询的结果是单列单行的(一个值) 可以直接做比较运算例如:= >

  1. 2子查询的结果是单列多行的(多个值) 可以使用in函数做运算:in(子查询)

​ 3.3 子查询的结果是多行多列的(一个表)可以把结果当作临时表使用

select student t1,(子查询) as t2 where t1.id = t2.uid ;

4.自关联查询

同一张表使用别名当作2张表去使用。前提是表中的数据有关联关系。

select* from student t1 ,student t2 where t1.id = t2.mgr;

多表查询练习[掌握]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值