MySql主键,外键的添加用来关联查询

2023-12-24 07:54:56
主键
在一张表中有若干组属性,其中有一组属性是唯一标识的,不能为空,不能重复,
比如说身份证中(姓名,生日,地址,身份证号码等)身份证号码是唯一的。
添加主键约束:
可以使用PRIMARY KEY 设置主键约束
CREATE TABLE major
(
   number INT PRIMARY KEY  AUTO_INCREMENT,
   NAME VARCHAR(20)
)
外键
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。
外键有两种情况
1. 不加外键约束
-- 可以任意的对表的数据进行操作 即使两个表的数据对不上也没有关系
-- 2. 添加外键约束后,两张表操作时,不能导致外键列和主键列对应关系不成立
引用另外一个数据表的某条记录。
外键列类型与主键列类型保持一致
数据表之间的关联/引用关系是依靠具体的主键(primary key)和外键
(foreign key)建立起来的。
主要添加外键约束方式:
1.在创建表时添加关系
CONSTRAINT 约束名 foreign key(majorid ) references major(id)
create table student(
id int not null auto_increment primary key,
num int,
name varchar(10)
majorid int,
CONSTRAINT 约束名 foreign key(majorid ) references major(id)
);

2.在创建表后添加关系? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY(组名) REFERENCES 表名(组名)
关联查询

1.用where条件关联查询

SELECT
s.number,s.name,s.gender,s.phone,m.name mname
FROM student s,major m
WHERE s.majorid =m.number  -- 先产生一个笛卡尔乘积 然后再条件筛选

2.inner连接:把满足条件关联在一起

SELECT 
 s.number,s.name,s.gender,s.phone,m.name mname
 FROM student s
 INNER JOIN major m ON s.majorid =m.number -- 把满足条件关联在一起

3.left连接 :即使不满足连接条,也要把左边表中的所有数据查询出来

SELECT 
 s.number,s.name,s.gender,s.phone,m.name mname
 FROM student s
 LEFT JOIN major m ON s.majorid =m.number -- 左连接 即使不满足连接条,也要把左边表中的所有数据查询出来

4.right连接:即使不满足连接条,也要把右边表中的所有数据查询出来

 SELECT 
 s.number,s.name,s.gender,s.phone,m.name mname
 FROM student s
 RIGHT JOIN major m ON s.majorid =m.number -- 右连接 即使不满足连接条,也要把右边表中的所有数据查询出来

文章来源:https://blog.csdn.net/2303_77522514/article/details/135164791
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。