DAY1 Studyboom
整理如下:
SQL中表的联结(JOIN)就是将其他表中的列添加过来,进行“添加列”的集合运算。与表的加减法(UNION并集、INTERSECT交集、EXCPTE差集)等集合运算不一样,UNION等运算是以行(纵向)为单位进行操作,而JOIN等联结方式是以列(横向)为单位进行的。
主要分为INNER JOIN和OUTER JOIN
这里复习一下如何创建表A:
CREATE TABLE persons(
id_p varchar(10) not null primary KEY,
Lastname varchar(20) not null,
Firstname varchar(20) not null,
Address varchar(20) not null)
alter table persons add column City varchar(20) not NULL;
发现少了City一列,如何添加列?
ALTER TABLE <表名> ADD COLUMN <列名> <该列数据类型> <该列所需条件>
alter table persons add column City varchar(20) not NULL;
在Persons表中插入数据:
INSERT into persons values(
'1','Adams','John','Oxford Street','City');
INSERT into persons values(
'2','Bush','George','Fifth Avenue','New York');
INSERT into persons values(
'3','Carter','Thomas','Changan Street','Beijing');
发现City这里的数据添加错了,如何修改数据呢?
UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...
update persons set City='London' WHERE id_p='1'
查看表
创建表B:
CREATE TABLE Orders(
id_O VARCHAR(5) NOT NULL PRIMARY KEY,
OrderNo varchar(10) not NULL,
id_p varchar(5) not NULL)
INSERT into Orders values('1','77895','3');
INSERT into Orders values('2','44678','3');
INSERT into Orders values('3','22456','1');
INSERT into Orders values('4','24356','1');
INSERT into Orders values('5','34764','65');
1、内联接—inner join 只返回两个表中联结字段相等的行
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName;
2.左联结—left(outer)rjoin 返回包括左表中的所有记录和右表中联结字段相等的记录
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName;
以左表为基础,LastName为Bush的行的Id_P字段在右表中没有匹配,查询结果仍然保留该行,右表没有的数据并用null填充。
3. 右联结—right(outer) join 返回包括右表中的所有记录和左表中联结字段相等的记录
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName;
以右表为基础,右表中存在的OrderNo列中的34764在左表中无对应的数值,结果仍保留,无对应的值用null填充。
4. full join 表A和表B的并集
5. cross join 笛卡尔积