在数据库中当我们想要查找某些数据时,我们可以找到数据所在的表,点击编辑前 200 行 或 选择前 1000 行。这样虽然可以找到想要的数据,但如果数据量多了,仅仅通过这种方法来查找数据就会占用我们的大部分时间,而且效率也低。
下面我们就使用 SQL Server 语句 来进行查询。
本章节主要内容:
目录
1.Distinct (去重复)
在查找数据时,当我们需要查找不重复的数据时,可以使用 Distnct 。
Select Distinct 句检索指定列列表中的唯一不同值,换句话说,它从结果集中删除列中的重复值。
语法:
Select Distinct * from 表名
注:Distinct子句将所有NULL值视为相同的值,只返回一个null。
例:查找客户的不同(唯一)电话号码
Select Distinct phone From sales.customers
Order by phone;
在上面示例中phone 是表的列名,sales.customers 是表的名称。
2.Where 字句
Where 字句主要是用来为查询的数据,添加查询条件。
在WHERE子句中,指定搜索条件以过滤FROM子句返回的行。
语法:
Select 字段 from 表名
Where 查询条件
Order by 字段
WHERE子句仅返回导致搜索条件计算为TRUE的行。
搜索条件是逻辑表达式或多个逻辑表达式的组合。
下面我们通过一个例子来理解where 的使用
例:查找编号为520 的同学
Select userID,studerName,studerID From SYS_User
Where studerID = 520
Order by studerID desc;
在数据库中where 字句的使用比较常见,在后面我们学习了子查询后,可以对它进行嵌套来查询多个条件。
3.AND(与)查找满足两个条件的行
AND是一个逻辑运算符,用于组合两个布尔表达式,要满足两个条件。
语法:
Select * Form 表名
Where 列名 = ‘…...’ And 列名 = ‘……’
它使用逻辑运算符AND来组合这两个条件。
例:查找学号为 03 且 分数为99 的同学
Select sno,studerName,score
From SYS_SC
Where sno = 03 and score = 99
Order by sno
注:在上面例子中要同时满足两个条件才能返回数据。
4.OR(或)查找满足任意一个条件的行
OR的使用和and的使用方法大致相同,但他在查询数据时只要有满足它的一个条件就能返回数据。
语法:
Select * Form 表名
Where 列名 = ‘…...’ OR 列名 = ‘……’
OR是一个逻辑运算符,用于组合两个布尔表达式
在语句中使用多个逻辑运算符时,SQL Server将在AND运算符之后计算OR运算符。 但是,可以使用括号更改评估顺序。
例:以下查询查找价格大于3000或型号为2018的产品。满足其中一个条件的任何产品都包含在结果集中。
Select product_name ,list_price,mdoel_year
From production.products
Where list_price > 3000 or model_year = 2018
Order by list_price Desc;
5. Between查找两个值之间的值的行
BETWEEN运算符是一个逻辑运算符,用于指定要测试值的范围。
语法:
Select * from 表名
Where 字段 between ?? And ??
Order by 字段 ;
例:查询50~100之间的值
Select * from student
where sno between 50 and 100
6. IN查找值列表中具有值的行
IN运算符是一个逻辑运算符。
IN运算符等效于多个OR运算符,因此,以下两条语法是等效的:
column in (v1,v2,v3)
column = v1 or column = v2 or column = v3
要取消IN运算符,请使用NOT IN运算符,如下所示:
column not in (v1,v2,v3)
例:使用 IN 查找价格为299.99或466.99或489.99的产品
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
list_price IN (299.99, 369.99, 489.99)
ORDER BY
list_price DESC;
例:使用 NOT IN 不查找价格为299.99或466.99或489.99的产品
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
list_price NOT IN (299.99, 369.99, 489.99)
ORDER BY
list_price DESC;