1.过滤数据
(1).Select Distinct子句
SELECT DISTINCT 子句检索指定列列表中的唯一不同值,换句话说,它从结果集中删除列中的重复值。 DISTINCT 子句将所有 NULL 值视为相同的值
语法如下所示:
SELECT DISTINCT
column_name1,
column_name2 ,
...
FROM
table_name;
A. DISTINCT一个字段的示例 以下语句返回 customers 表中所有客户所在的所有城市:
SELECT
city
FROM
sales.customers
ORDER BY
city;
B. DISTINCT多列示例 以下语句查找所有客户的不同城市和州。
SELECT DISTINCT
city,
state
FROM
sales.customers
C. DISTINCT带有null值示例 以下示例查找客户的不同(唯一)电话号码:
SELECT DISTINCT
phone
FROM
sales.customers
ORDER BY
phone;
(2).SQL Server WHERE子句
要从表中获取满足一行或多个条件的行,请使用 WHERE 子句,如下所示:
SELECT
select_list
FROM
table_name
WHERE
search_condition;
在 WHERE 子句中,指定搜索条件以过滤 FROM 子句返回的行。 WHERE 子句仅返回导致搜索条件计算为 TRUE 的行。搜索条件是逻辑表达式 或多个逻辑表达式的组合
通过使用简单的相等来查找行 以下语句检索类别为 id 为 1 的所有产品:
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
category_id = 1
ORDER BY
list_price DESC;
(3).AND 查找满足两个条件的行
AND 是一个逻辑运算符,用于组合两个布尔表达式 以下示例返回满足两个条件的产品: category_id 为 1 , model_year 为 2018 。 它使用逻辑运算符 AND 来组合这两个条件。
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
category_id = 1 AND model_year = 2018
ORDER BY
list_price DESC;
(4).(>,=,<)使用比较运算符
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
list_price > 300 AND model_year = 2018
ORDER BY
list_price DESC;
(5).OR 查找满足任意一个条件的行
OR 是一个逻辑运算符,用于组合两个布尔表达式 在语句中使用多个逻辑运算符时,SQL Server将在 AND 运算符之后计算 OR 运算符。 但是,可以使用括 号更改评估顺序。
A. 使用OR运算符示例 以下查询查找价格大于 3000 或型号为 2018 的产品。满足其中一个条件的任何产品都包含在结果集中。
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
list_price > 3000 OR model_year = 2018
ORDER BY
list_price DESC;
(6).Between查找两个值之间的值的行
A. SQL Server BETWEEN两个数字示例 以下语句查找价格介于 1899 和 1999.99 之间的产品:
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
list_price BETWEEN 1899.00 AND 1999.99
ORDER BY
list_price DESC;
B. SQL Server BETWEEN两个日期示例 以下查询查找客户在2017年1月15日至2017年1月17日期间下的订单:
SELECT
order_id,
customer_id,
order_date,
order_status
FROM
sales.orders
WHERE
order_date BETWEEN '20170115' AND '20170117'
ORDER BY
order_date;
(7). IN 查找值列表中具有值的行
以下示例使用 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;
8.Like 查找包指定含字符串的行
A. %(百分比)通配符 查找姓氏( last_name )以字母 z 开头的客户:
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
last_name LIKE 'z%'
ORDER BY
first_name;
C. [list of characters]通配符 带有字符列表的方括号,例如: [ABC] 表示单个字符,必须是列表中指定的字符之一。 例如,以下查询返回姓氏( last_name )中第一个字符为 Y 或 Z 的客户:
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
last_name LIKE '[YZ]%'
ORDER BY
last_name;
E. [^]通配符 带有插入符号( ^ )后跟范围,例如 [A-C] 或字符列表,例如 [^ABC] 的方括号表示不在指定范围或字符列 表中的单个字符。 例如,以下查询返回姓氏中的第一个字符不是范围 A 到 X 中的字母的客户信息:
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
last_name LIKE '[^A-X]%'
ORDER BY
last_name;
F. NOT LIKE运算符 以下示例使用 NOT LIKE 运算符查找名字中第一个字符不是字母 A 的客户:
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
first_name NOT LIKE 'A%'
ORDER BY
first_name;