SQLServer的基本知识

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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜爱Java语言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值