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)

 

posted @ 2021-02-28 23:41  旧歌  阅读(351)  评论(0编辑  收藏  举报