数据库查询语句关键字总结

看过牛腩视频后,前17集讲后台代码的编写,尤其讲到查询语句的时候,顿时感觉原来学习过的查询语句中用到的关键字烟消云散了,啥都不记得了,通过看视频,帮着回忆了一部分,在这里总结一下,查询语句中用到的关键字的含义及使用。

一、select语句(单个表)

    1.最简单的查询:

            select * from [where ]

           select column1,column2....from [where]

 这里需要注意的是where子句中条件过滤使用到的关键字,比如用到逻辑运算符like 中的’%‘(匹配一个或多个字符)和’_‘(仅匹配一个)等。这个在新闻发布系统中也有用到。

       例如:按标题搜索:

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关键字取出唯一值,即任何重复的值只计数一次,结果为为:(廊坊,北京)。

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子句则作用于一列的查询条件

例如:

select  location from citytable  where city='北京'  --查询城市名为‘北京’的城市的位置 
select city group by city having count(memberId)>=3 --查询城市成员总数大于等于3的城市,同时按城市名分组  


二、多表查询

    1、inner join

       要求,查询的多张表中必须具有相同的匹配项。其中on表示作用的表的条件,n,c 为别名

    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代替

上面两张表,执行

    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记录进行编号排序后按顺序查询等。利用

    SELECT ROW_NUMBER() OVER (ORDER BY id desc)AS Row --Row为别名

      以上只是涉及到了一部分的查询关键字的总结,也是经常用到的,逐渐学习,才发现原来的知识还是应该不断的回忆和应用才能发现它更深一层应用的含义。更多关于数据库的知识有待进一步实践总结。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。