MySql主键,外键的添加用来关联查询
2023-12-24 07:54:56
主键
在一张表中有若干组属性,其中有一组属性是唯一标识的,不能为空,不能重复,
比如说身份证中(姓名,生日,地址,身份证号码等)身份证号码是唯一的。
添加主键约束:
可以使用PRIMARY KEY
设置主键约束
CREATE TABLE major
(
number INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20)
)
外键
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。
外键有两种情况
1. 不加外键约束
-- 可以任意的对表的数据进行操作 即使两个表的数据对不上也没有关系
-- 2. 添加外键约束后,两张表操作时,不能导致外键列和主键列对应关系不成立
-- 可以任意的对表的数据进行操作 即使两个表的数据对不上也没有关系
-- 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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!