什么是主键、外键?
主键:唯一标识一条记录,不能有重复的,不允许为空。
外键:表的外键是另一表的主键, 外键可以有重复的, 可以是空值。
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键,比如:
学生表(学号,姓名,性别,班级)
// 其中每个学生的学号是唯一的,学号就是一个主键
课程表(课程编号,课程名,学分)
// 其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
// 成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键。
成绩表中的学号不是成绩表的主键,但它却是学生表的主键,则称成绩表中的学号是学生表的外键,同理 成绩表中的课程号是课程表的外键 。
左连接 - 关键字左边的表中的所有行都会返回
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
语法:
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
现在,我们希望列出所有的人,以及他们的定购 - 如果有的话。
LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
右连接 - 关键字右边的表中的所有行都会返回
RIGHT JOIN 关键字会从右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
RIGHT JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
现在,我们希望列出所有的定单,以及定购它们的人 - 如果有的话。
RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。
您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName