• SQL SERVER之数据查询


    

      本篇主要解说查询语句,全部的演示样例都会依照以下这张表进行。

    stuID

    stuName

    age

    sex

    11090241031

    王小虎

    21

    11090241032

    王小六

    22

    11090241033

    张三

    23

    1.使用where子句查询表中满足条件的记录

    比較查询

     算术比較查询

    算术比較中经常使用的就是所谓的><<>=!<(不小于)!=(不等于)等,比較的语法例如以下

    select* from T_student where age!>30

    select* from T_student where stuName<> '王小七'

    注意:在where子句中,假设比較的是数值型数据,则能够省略单引號,假设是字符串或者日期的话,须要用单引號引起来

     

        Between and

    用来查询指定条件范围的记录

    select* from T_student where agebetween 3 and 45

    注意:between and的查询的记录包含两个边界值

    IN运算符查询与列表匹配的记录

     使用IN运算符能够查询与列表匹配的记录

    select* from T_student where agein(32,15)

    注意:在SQL语句中也能够使用not in运算符来排除一些记录。

     

    逻辑查询

     SQL中逻辑运算符主要包含ANDORNOT三种。

     AND:用来同一时候满足多个条件的记录

     OR:用来满足多个条件中的当中随意一个条件

     NOT:用来满足反条件的记录

    select* from T_student where agein(30,15)and stuName ='王小虎'

    (假设有一个条件为False的话,就不会显示结果)

    select* from T_student where agein(32,15)or stuName ='王小虎'

    (仅仅要满足不论什么一个条件就能够显示记录)

    select* from T_student where agenot in(32,15)

    (查询的是反条件记录,也就是不满足年龄在3215的记录)

    复杂逻辑

    复杂逻辑事实上就是ANDORNOT的运算符使用的组合,正如我们所知运算符也有先后顺序

    NOT>AND>OR

    select* from T_student where agenot in(32,15)OR stuName ='王小六'

    (依据先后顺序可知,查询的是年龄不是3215或者名字是王小六的记录)

     

    空值查询

      在使用SQL语句时,有时可能遇到该字段中没有值,那么就称为空值(null),查询语句也很easy.

    select* from T_student where stuNameIS NOT NULL

    (查询表汇总名字不是空值的记录)

    Like模糊查询

    使用LIKE操作符实现模糊查询

    在使用SQL时,可能有时会遇到一种情况,不能全然确定自己要查找的信息,可是这些信息又有一些明显的特征,那么就能够採取以下的模糊查询

    匹配随意单个字符

     通配符“_”表示匹配单个字符,在查询中能够用到

    select* from T_student where stuName like '_'

    (表示查询王*虎的记录)

    匹配0个或者多个字符

    通配符%表示匹配0个或者多个字符,即一个%能够表示一个字符或者多个字符

    select* from T_student where stuName like '%'

    (表示名字中首字符石王的记录)

     

    通配符[]

    字符列中的不论什么单一字符

    select* from T_student where stuName like '[王菲]%'

    (表示姓名以王或者菲开头的记录)

    通配符[^]

    表示不在字符列中的不论什么单一字符

    select * from T_student where stuName like '[^]%'

    (表示姓名不是已菲开头的记录)

     

    转义字符

    在使用SQL运行模糊查询时,假设数据表某个字段本身就包括通配符时,又该怎么办

    (1):在须要转义的%或者是_前加一个转义符,该转义符能够是一个随意字符

    (2):在ESCAPEkeyword后指定该转义符的名称

    select * from T_student where sutID  like '%$_%' ESCAPE '$'

    (该查询语句表示,ID中包括_的记录,当中转义符$已经把_转义)

     

     

    ---------------------------------------------------------------------------------------

    2.数据表的分组操作

    表中的数据的排序和分组

    我们在使用SQL语句查询操作时,可能查询出的语句是没有规律的,那么为了更好的观察自己查到的结果能够对其进行排序。

    GROUP BY

    通过ORDER BY子句能够对查询结果指定的列进行升序或降序,这取决于后面的keyword

    select * from T_student order by age desc

    (将查出后的结果按降序排序)

    注意:ORDER BY子句仅仅是对终于结果进行排序,不能用在select子查询中的select语句中,并且ORDER BY子句的位置必须放在全部子句的最后,也就是说,假设查询语句中有多个子句的话,那么ORDER BY子句必须放在这些子句之后

     经常使用的聚合函数

     所谓的聚合函数就是统计函数,主要是对得到的数据进行排序求值等操作

    函数

    功能

    COUNT(列表达式)

    计算给定列或者表示式中非空行数

    COUNT(*)

    计算数据表中的总行数,包含空值

    MAX(列表达式)

    计算给定列中或者表达式中的最大值

    MIN(列表达式)

    计算给定列或者表达式中的最小值

    SUM(列表达式)

    计算给定列或者表达式中全部的总和

    AVG(列表达式)

    计算给定列或者表达式中的全部值得平均值

     

     

    使用GROUP BY子句对表中数据进行分组

    GROUP by子句能够依据数据列的多个数据查询出来的结果进行分组

    select age, count(stuname)from t_student whereage <50 group by age order by age

    (以年龄进行分组,而且统计每一个年龄段的学生的数目)

    使用having限制分组后的查询结果

     假设要对分组后的结果限制查询条件,就能够使用having语句,该语句放在GROUP BY语句的后面

    select age, count(stuname)from t_student whereage <50 group by age having age >15 order by age

    (跟上面的同样,仅仅只是又多了年龄的限制,必须大于15

    限制结果集行数

    有些时候,我们并不希望看到查出的结果的所有,仅仅显示几行就可,尤其当在分页操作中的时候,仅仅关心前几条记录就OK了,这时候就须要对结果集进行限制

    语法:select top n {precent}列名1,列名2 from表名

    Top:keyword,表示限制结果集行数的keyword

    N:表示限制结果集行数

    Precent:表示返回查询的结果集中的前N%的行数

    selecttop 1 agefromt_student where age <50

    (表示仅仅返回一行)

     

     

     

  • 相关阅读:
    IOS 开发 网络发展史(基础知识)
    加密详解
    IOS对接支付的流程
    App混合开发浅谈
    swift语法100
    2015年最新Android基础入门教程目录第二章:Android UI(User Interface)详解(已完结 40/40)
    2015年最新Android基础入门教程目录第一章:环境搭建与开发相关(已完结 10/10)
    Reactive开发
    tensorflow 安装
    Mask RCNN笔记
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3902585.html
Copyright © 2020-2023  润新知