【SQL必知必会】04.高级过滤数据(零基础自学笔记)

(一)检索数据

1、SELECT语句

假设针对一个含商品和供应商信息等的数据库,进行SQL语句的操作:

(1)检索单个列:

SELECT prod_name    --语法:SELECT(关键字) + 列名 +
FROM Products;     --FROM(关键字)+ 表名 ; 以分号结合本条语句

(2)检索多个列: 

SELECT prod_id,prod_name,prod_price
FROM Products;

 (3)检索所有列:

SELECT *
FROM Products;

(二)排序检索数据

1、排序数据

SELECT prod_name
FROM Products
ORDER BY prod_name;

2、按多列排序

SELECT prod_name
FROM products
ORDER BY prod_price,prod_name;

3、按位置排序

SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY 2, 3;

4、指定排序方向

SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY prod_price DESC;    --DESC按降序排列

(三)过滤数据

1、 WHERE子句

SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;

2、WHERE子句操作符

 (1)检查单个值

SELECT prod_name, prod_price
FROM Products
WHERE prod_price < 10;

 (2)不匹配检查

SELECT  vend_id, prod_name
FROM Products
WHERE vend_id <> 'DLL01';    --供应商ID不等于DLL01

(3)范围值检查

SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 5 AND 10;

(4)空值检查

SELECT prod_name
FROM Products
WHERE prod_price IS NULL;

(四)高级过滤数据

1、AND、OR操作符

 

SELECT prod_name, prod_price
FROM Products
WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01')
    AND prod_price >= 10;    --查询供应商ID为DLL01或者BRS01的产品中价格大于等于10的产品信息

2、IN操作符(IN和OR比较,建议使用IN)

SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ('DLL01', 'BRS01')    --检索供应商ID为DLL01和BRS01的所有产品
ORDER BY prod_name;

3、NOT操作符(在复杂子句中,NOT非常有用)

SELECT prod_name
FROM Products
WHERE NOT vend_id = 'DLL01'    --查询供应商ID不为DLL01的所有产品信息
ORDER BY prod_name;

(五)用通配符进行过滤

1、LIKE操作符

SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '%bean bag%';    --查询产品名称中间字符为'bean bag'的产品信息,
                                      --不论这个字符串前面和后面有什么字符,也不论前后有几个字符
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE 'Fi%h';    --%放中间的示例

2、下划线_通配符

SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '_ish';    --下划线_只能匹配一个字符

3、方括号[]通配符

-- 查询所有名字以J和M开头的联系人
SELECT cust_contact
FROM Custumers
WHERE cust_contact LIKE '[JM]%';
-- 查询所有名字不以J和M开头的联系人
SELECT cust_contact
FROM Custumers
WHERE cust_contact LIKE '[^JM]%';    --用^符号否定

4、注意事项

(1)不要过分使用通配符

(2)除非绝对必要否则不要把通配符y用在搜索模式的开始处,因为放在开始处搜索起来是最慢的

(3) 注意通配符的应用,如果放错位置可能不会返回你想要的结果

(六)创建计算字段

1、拼接字段

(1)字段,基本与“列”的意思相同。

拼接字段,就是像这样“123”拼接“456”,得到"123456",不同的数据库语言使用不同的字符,以SQL为例:

SELECT vend_name + '(' + vend_country + ')'
FROM Vendors
ORDER BY vend_name;

(2)下面给代码加点“料”——函数RTRIM,作用是去掉值右边的所有空格。

SELECT RTRIM(vend_name) + '(' + RTRIM(vend_country) + ')'
FROM Vendors
ORDER BY vend_name;

类似的“TRIM”是去掉左右空格,“LTRIM”去掉左边空格。 

(3)使用别名

SELECT RTRIM(vend_name) + '(' + RTRIM(vend_country) + ')'
FROM Vendors
ORDER BY vend_name;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值