• sql简单查询


      用了C#、PHP、Java等开发一些东西,感觉sql很重要,不管对功能或性能上都需要精益求精的操作数据库,而此时程序员对sql语句的掌握尤其重要,很多时候如果不知道一些关键字查询,只知道简单的select和连接查询,或许在做东西的时候,只需要一个多表连接查询就可以解决的,就会很笨重的写成先查询出一部分,然后做一个循环,在根据查询生成n个sql语句在查询出n个结果集,或为了避免重复全部查询之后,在用相关的语言来消除重复记录。如果你还停留在这个水平的话我建议还是把sql再深入学习一下吧,这样的水平根本拿不出手。

      这周看了《SQL完全手册》,看了前八章左右,很多都是以前常用的,以及没有技术含量的东西,不过也会忽略一些细节。大概整理了一些,不是很详细,供以后查询使用,也希望放在博客上对其他人有些帮助。

      

    重复的记录(DISTINCT)

        select distinct field from table_name  可以避免查询出重复的field字段。

        与其对应的,也可以是默认的select all from。。。

    搜索条件(where)

        比较测试:=、<>、<、>、<=、>=

            在sql的3值逻辑下,一个搜索条件可以产生TRUE、FALSE或者NULL值,只有其搜索条件产生TRUE的那些记录才被包含在查询结果中。

        范围测试(BETWEEN):

            select field from table_name (not) between .. and ...

            A BETWEEN B AND C == (A >= B) AND (A<=C)

            当按值的条件范围考虑搜索条件时,BETWEEN测试是一种较为简单的方法。

        组成员测试(IN)

            它测试一个数据值是否匹配一组目标值中的一个。

            eg:select field from table_name where field (not) in (value1,value2,value3)

            与BETWEEN测试一样,IN测试并不增加SQL的表达能力:

                X IN(A,B,C)  ==  (X=A) OR (X=B) OR (X=C)

        模式匹配测试(LIKE):

            通配符字符:

                1. % 匹配任何顺序的0个或多个字符

                2. _ 匹配任何单个字符

        转义字符

            有时需要查询的条件中包含sql内置的模式匹配字符,就需要使用转移字符进行表达,此时需要用ESCAPE制定自定义的转义符:

                select * from table_name where field like 'A$ %BC %' ESCAPE  '$'

        NULL值测试(IS NULL):

            select * from table_name where field is null;

            

        复合搜索条件(AND、OR和NOT)

        

        排序查询结果(ORDER BY):

            select * from table_name order by field1,field2...

            第一个排序项(field1)是主要的排序键,其后的是次要的排序键,当两个查询结果记录在主要排序键处有相同的值时,就按次要排序键排序。

            指定升序或降序:

                DESC    升序(默认)

                ASC     降序排序

                select field1,field2,(field3 - field2) from table_name order by field1 ASC, 3 DESC

                //第三个字段上降序排序,第一个字段(field1)上升序排序。

    组合查询结果(UNION)

        需要把两个或更多的查询结果组成一个查询结果表。

        select * from table_name where condition1  UNION select * from table_name2 where condition2

         在由一个UNION操作组成的表中有几个重要的限制:

            1. 两个表必须包含同样数目的字段。

            2. 在第一个表中的数据类型必须与第二个表中对应的数据类型相同。

            3. 两个表都不能用ORDER BY字句排列。然而,组合后的查询结果可以排序。

        UNION操作消除了重复的记录,可以在UNION关键字之后指定ALL关键字。

        ORDER BY字句不能出现在由UNION操作组合的两个SELECT中,可以在第二个select后用ORDER BY,不过由UNION操作生成的字段是没有命名的。ORDER BY子句必须按字段编号制定字段来排序。

            select * from table_name where condition1  UNION ALL select * from table_name2 where condition2  ORDER BY 1,2

         可以使用多个UNION:

            A UNION (B UNION C)

            A(UNION B) UNION C

            (A UNION C )UNION B

  • 相关阅读:
    [更新设计]跨平台物联网通讯框架ServerSuperIO 2.0 ,功能、BUG、细节说明,以及升级思考过程!
    有幸参加“集团2016年工业事业部发展规划会议”,向网友汇报!!!
    Centos7之ssh连接keepalive
    AES加密算法
    MySQL之only_full_group_by
    AES加解密文件流
    Mongo基本配置
    前端js处理接口返回的压缩包(亲测可用)
    Ubuntu20.4静态ip和dhcp配置
    Java数组类型协变性、泛型类型的不变性
  • 原文地址:https://www.cnblogs.com/fanchangfa/p/2633818.html
Copyright © 2020-2023  润新知