MySQL别名
在SQL语句中,可以为表名及字段(列)名称指定别名(Alias),别名是SQL标准语法,几乎所有的数据库系统都支持。通过关键字AS来指定。
表别名语法:
select colum from table AS table_alias;
列别名语法:
select colum AS column_alias from table;
INNER JOIN
等值链接,只返回两个表中联结字段相等的行,但,inner join的本质并不是取交集,而是膨胀/扩张,是可带条件的膨胀/扩张(实现交集);
LEFT JOIN
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录
CROSS JOIN
交叉链接:函数返回两个或更多指定集的叉积。所得集中元组的顺序取决于要联接的集的顺序以及其成员的顺序。
自连接
自连接的本意就是将一张表看成多张表来做连接
UNION
联和
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据
以上几种方式的区别和联系。
作业
组合两张表 (难度:简单)
在数据库中创建表1和表2,并各插入三行数据(自己造)
表1: Person
±------------±--------+
| 列名 | 类型 |
±------------±--------+
| PersonId | int |
| FirstName | varchar |
| LastName | varchar |
±------------±--------+
PersonId 是上表主键
表2: Address
±------------±--------+
| 列名 | 类型 |
±------------±--------+
| AddressId | int |
| PersonId | int |
| City | varchar |
| State | varchar |
±------------±--------+
AddressId 是上表主键
编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State
CREATE TABLE person(
PersonID int PRIMARY KEY AUTO_INCREMENT,
FirstName varchar(20),
SecondName varchar(20)
)ENGINE=INNODB CHARSET=utf8;
INSERT INTO person VALUES(1,‘De’,‘Ma’);
INSERT INTO person VALUES(2,‘Zhi’,‘Zhang’);
INSERT INTO person VALUES(3,‘Wang’,‘Baiwan’);
CREATE TABLE address(
AddressId int PRIMARY KEY AUTO_INCREMENT,
PersonId int,
City varchar(20),
State varchar(20)
)ENGINE=INNODB CHARSET=UTF8;
INSERT INTO address VALUES(1,2,‘Huangpu’,‘Shanghai’);
INSERT INTO address VALUES(2,1,‘Huangpu’,‘Shanghai’);
INSERT INTO address VALUES(3,3,‘Changsha’,‘Hunan’);
INSERT INTO address VALUES(4,4,‘Haidian’,‘Beijing’);
select FirstName,SecondName,City,State from address as a join person as b on a.PersonId=b.PersonID;
删除重复的邮箱(难度:简单)
编写一个 SQL 查询,来删除 email 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
±—±--------+
| Id | Email |
±—±--------+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
±—±--------+
Id 是这个表的主键。
例如,在运行你的查询语句之后,上面的 Email表应返回以下几行:
±—±-----------------+
| Id | Email |
±—±-----------------+
| 1 | a@b.com |
| 2 | c@d.com |
±—±-----------------+
–自链接
delete e1 from email e1 ,email e2 where e1.Email=e2.Email and e1.id>e2.id;
select * from email;
本文深入探讨了SQL中的表联接技术,包括INNER JOIN、LEFT JOIN、CROSS JOIN和自连接,以及如何使用别名简化查询。同时,提供了实际案例,如组合两张表和删除重复邮箱的具体操作。
847

被折叠的 条评论
为什么被折叠?



