• SQL的操作符distinct的用,SQL BETWEEN 操作符NOT操作符等的使用


    使用的数据库MYSQL;

    在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。

    distinct :

    1.可以作用于单列  

    2.也可以作用于多列  

    当作用于多列时 select distinct name, id from test;
    实际上是根据name和id两个字段来去重的,这种方式QL Server支持,

    select distinct name, id from test;

    返回的结果为多行,这说明distinct并非是对name和id两列“字符串拼接”后再去重的,而是分别作用于了name和id列。

    3.distinct 必修放在开头处

    select  name, distinct,id from test;          会报错,因为distinct必须放在开头!!!

    4.count统计

    select count(distinct name) from test;	  --表中name去重后的数目

    count是不能统计多个字段的,下面的SQL在Mysql无法运行。

    select count(distinct name, id) from test;

    若想使用,请使用嵌套查询,如下:

    select count(*) from (SELECT DISTINCT Depart from Tests) AS T;

    SQL BETWEEN 操作符

    1.BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。

    如果想查询两个数据范围之外的的数据,请使用NOT操作符

    SQL  in 操作符

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

    SELECT * FROM score WHERE degree IN(85,86,88);   查询 Score表中 degree的值为85,86或88的数据

    SQL  order by用法

    实现方式:

    1.asc 升序,可以省略,是数据库默认的排序方式

     2.desc 降序,跟升序相反。

        最后要注意order by的原则,写在最前面的字段,他的优先级最高,也就是写法中第一个的字段名1的优先级最高,优先执行他的内容。

    以Class降序查询Student表的所有记录。
    select * from student ORDER BY class desc;

    以Cno升序、Degree降序查询Score表的所有记录。
    SELECT * FROM score ORDER BY cno ASC ,degree DESC;

    SQL AVG 函数

    AVG 函数返回数值列的平均值。NULL 值不包括在计算中。

    SQL AVG() 语法

    SELECT AVG(column_name) FROM table_name

    我们希望计算 "OrderPrice" 字段的平均值。

    我们使用如下 SQL 语句:

    SELECT AVG(OrderPrice) AS OrderAverage FROM Orders
    得到下面的结果集:
    
    

    我们希望找到 OrderPrice 值高于 OrderPrice 平均值的客户。

    我们使用如下 SQL 语句:

    SELECT Customer FROM Orders
    WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)
    结果集类似与下面:

     

     

     

    SQL IN 操作符

    IN 操作符

    IN 操作符允许我们在 WHERE 子句中规定多个值。

    SQL IN 语法

    SELECT column_name(s)
    FROM table_name
    WHERE column_name IN (value1,value2,...)
    Persons表:
    IdLastNameFirstNameAddressCity
    1 Adams John Oxford Street London
    2 Bush George Fifth Avenue New York
    3 Carter Thomas Changan Street Beijing
    
    

     

     

     

    IN 操作符实例

    现在,我们希望从上表中选取姓氏为 Adams 和 Carter 的人:

    我们可以使用下面的 SELECT 语句:

    SELECT * FROM Persons
    WHERE LastName IN ('Adams','Carter')

    结果集:

    IdLastNameFirstNameAddressCity
    1 Adams John Oxford Street London
    3 Carter Thomas Changan Street Beijing
     
     


    ANY,ALL ,SOME的用法

    准备两个表:

    test(add,addd)
    test2(o,t,t,f)

    ANY,SOME 父查询中的结果集大于子查询中任意一个结果集中的值,则为真
    SELECT * FROM test2 WHERE N>ANY(SELECT N FROM test)
    SELECT * FROM test2 WHERE N>SOME(SELECT N FROM test)

    ALL,ANY,SOME 的子查询
    ALL 父查询中的结果集大于子查询中每一个结果集中的值,则为真
    SELECT * FROM test2 WHERE N>ALL (SELECT N FROM test)

    ANY 与子查询IN相同
    SELECT * FROM test2 WHERE N=ANY (SELECT N FROM test)
    SELECT * FROM test2 WHERE N IN (SELECT N FROM test)

    NOT IN
    AND作用 父查询中的结果集不等于子查询中任意一个结果集中的值,则为真
    SELECT * FROM test2 WHERE N NOT IN(SELECT * FROM test)

    <>ANY 与NOT IN
    <>ANY
    OR作用 父查询中的结果集不等于子查询中的a或者b或者c,则为真
    SELECT * FROM test2 WHERE N <>ANY(SELECT * FROM test)

  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
  • 原文地址:https://www.cnblogs.com/wdyjt/p/14461312.html
Copyright © 2020-2023  润新知