1.最简单的查询:
select * from [where ]
select column1,column2....from [where]
这里需要注意的是where子句中条件过滤使用到的关键字,比如用到逻辑运算符like 中的’%‘(匹配一个或多个字符)和’_‘(仅匹配一个)等。这个在新闻发布系统中也有用到。
例如:按标题搜索:
1
2
3
|
Select
top
10 n.id,n.title,n.createtime,c.[
name
]
from
news n
inner
join
category c
on
c.caid=c.id
where
n.title
like
'%'
+ @title +
'%'
|
当然还有很多,例如between,not ,in等关键字的使用也很重要。
2.DISTINCT关键字
这个关键字,主要用来取出列中唯一的值,比如:记录中的一个字段值(city)如果有重复(廊坊,北京,廊坊,北京),那么利用DISTINCT关键字取出唯一值,即任何重复的值只计数一次,结果为为:(廊坊,北京)。
1
|
select
DISTINCT
city
from
[
table
]
|
3.使用别名
利用别名可以显示我们想要的名字,方便阅读。select city as 城市 from ...
4.group by 和having子句
group by 用来对查询到的结果集进行分组,必须位于select语句中的from子句或where子句之后。
having子句类似于where子句,紧跟在group by子后,作为一个查询条件。
与where子句的区别:where子句作用于一条记录中的查询条件,而having子句则作用于一列的查询条件
例如:
1
2
|
select
location
from
citytable
where
city=
'北京'
--查询城市名为‘北京’的城市的位置
select
city
group
by
city
having
count
(memberId)>=3
--查询城市成员总数大于等于3的城市,同时按城市名分组
|
二、多表查询
1、inner join
要求,查询的多张表中必须具有相同的匹配项。其中on表示作用的表的条件,n,c 为别名
1
2
3
4
|
Select
*
From
news n
Inner
join
category c
on
c.caid=c.id
|
要执行的查询结果必须是在两张表中同时含有相同的类别号的记录才会被查询出来。
例如:以牛腩视频中例子为例:
category表中id表示新闻类别的id ,而news表中的caid则表示该新闻属于具体哪个类别
那么执行上面查询语句后的结果:
inner join表
可以看到结果为类别号在两张表中均存在的项。inner join还包括等值联合和不等值,这主要由on后面的条件决定
2.left join
左外连接:连接时,on条件左边表所有项均查询出来,而右边表中若无匹配项,则以null代替
上面两张表,执行
1
|
select
*
from
category c
left
join
news n
on
c.id=n.caid
|
结果为:
3.right join
顾名思义,右外连接结果与left join相反,将右边表所有项查询出来,而左边表中无匹配项的则以null代替。
4.full join
无论左边还是右边所有项均返回结果。无对应项以null代替。
三、其它
除了以上涉及到的查询关键字外,还涉及到了嵌套查询,in关键字的使用,对sql记录进行编号排序后按顺序查询等。利用
1
|
SELECT
ROW_NUMBER() OVER (
ORDER
BY
id
desc
)
AS
Row
--Row为别名
|