SQL学习笔记(二)



承接上文

--------------------------------------------------分割线------------------------------------------------------

In 操作符

in操作符允许我们在where子句中规定多个值

语法如下:

select * from person where lastname in(‘Adams’,‘carter’)

between 操作符

between 操作符在where子句中使用,作用是选取介于两个值之间的数据范围

语法如下:

select * from table where columnname between value1  and value2

Alias(别名)

通过使用SQL,可以为列名称和表名称指定别名

语法如下:

select columnname from table as  lias_name

例子:

假设我们有两个表分别是:"Persons" "Product_Orders"。我们分别为它们指定别名 "p" "po"

现在,我们希望列出 "John Adams" 的所有定单。我们可以使用下面的 SELECT 语句 


SELECT po.OrderID, p.LastName, p.FirstNameFROM Persons AS p, Product_Orders AS po

WHERE p.LastName='Adams' AND p.FirstName='John'



SQL Join语句

用于根据两个或者多个表中的列之间的关系,从这些表中查询数据

Join Key

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join

数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。 


请注意,"Id_P" 列是 Persons 表中的的主键。这意味着没有两行能够拥有相同的 Id_P。即使两个人的姓名完全相同,Id_P 也可以区分他们。 

接下来请看order表


注意,"Id_O" 列是 Orders 表中的的主键,同时,"Orders" 表中的 "Id_P" 列用于引用 "Persons"表中的人,而无需使用他们的确切姓名。

请留意,"Id_P" 列把上面的两个表联系了起来。 

从两个表获取数据,有如下方法:

比如: 谁订购列产品,并且他们订购列什么产品?

select  p.lastname,p.firstname,o.orderno from persons as p,orders as o where p.Id_p =o.Id_p


除了上边的这个方法,我们也可以使用join来从两个表中获取数据

select  p.lastname, p.firstname,o.orderno from persons  as p Inner Join orders as o on p.Id_p=o.Id_p 


Join 类型,以及它们之间的差异(inner join)

join: 如果表中至少有一个匹配,则返回行

left join: 即使右表没有匹配,也从左表返回所有的行

right join:即使左表没有匹配,也从右表返回所有的行

full join :只要其中一个表中存在匹配,就返回行。

左表:就是第一个使用的表,右表: 是我们第二个使用的表。


left join 关键字

left join 从左表(table_name1)那里返回所有的行,即使在右表(table_name2)中没有匹配的行。

一图胜千言:

举例如下:

person表:


order表如下:

我们现在希望列出所有的人,以及他们的订购-如果有的话。

select p.lastname,p.firstname,o.orderno from persons as p Left join orders as o

on p.Id_p=o.Id_p order by p.lastname

结果集如下:



从结果集中,我们可以看到,即使右表没有匹配的行,也把左表的所有行都返回列。

right join 正好和left join 相反。此处不再赘述。


full join 是综合了left 和right join的两个链接,返回两个表的所有行,即使没有匹配。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值