主键
在一张表中有若干组属性,其中有一组属性是唯一标识的,不能为空,不能重复,
比如说身份证中(姓名,生日,地址,身份证号码等)身份证号码是唯一的。
添加主键约束:
可以使用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 -- 右连接 即使不满足连接条,也要把右边表中的所有数据查询出来