(数据科学学习⼿册28)SQLserver2012中的查询语句汇总⼀、简介
数据库管理系统(DBMS)最重要的功能就是提供数据查询,即⽤户根据实际需求对数据进⾏筛选,并以特定形式进⾏显⽰。在Microsoft SQL Serve 2012 中,可以使⽤通⽤的SELECT语句进⾏查询操作,该语句具有⾮常灵活的使⽤⽅式和丰富的功能,即可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询,本⽂就将对常⽤的⼤多数SQL中的数据查询语句进⾏总结和演⽰;
⼆、实操部分
本节中使⽤到的数据是美团的商家信息数据,⾪属于数据库practice下的表T;
2.1 使⽤SELECT语句进⾏查询
2.1.1 对列查询
/* 选择所有列 */
USE practice
GO
SELECT * FROM T
GO
查询结果:
/* 选择单个列 */
USE practice
GO
SELECT 店铺名称 FROM T
GO
查询结果:
/* 选择多个列 */
USE practice
GO
SELECT 店铺名称,商品名称 FROM T
GO
查询结果:
/* 为选择的列设置代号 */
USE practice
GO
SELECT 店铺名称 AS Shop_Name,商品名称 AS Goods_Name FROM T
GO
查询结果:
/* 利⽤字符查询表达式连接信息 */
USE practice
GO
SELECT 店铺名称+菜系 AS 店铺属性 FROM T
GO
查询结果:
/* 利⽤算数运算符⽣成新信息 */
USE practice
GO
SELECT 价格/原价 AS 折扣 FROM T
GO
查询结果:
2.1.2 去重查询
/* 查询某列的去重信息 */
USE practice
GO
SELECT DISTINCT 菜系 FROM T
GO
查询结果:
2.1.3 限制查询的⾏数
/* 查询前10⾏数据 */
USE practice
GO
SELECT TOP 10 * FROM T
GO
查询结果:
/* 查询前20%⾏的数据 */
USE practice
GO
SELECT TOP 20 PERCENT * FROM T
GO
查询结果:
2.2 使⽤WHERE⼦句进⾏条件查询2.2.1 使⽤⽐较运算符
/* 查询菜系为⽕锅的所有数据 */
USE practice
GO
SELECT * FROM T
WHERE 菜系 = '⽕锅'
GO
查询结果:
in运算符的含义/* 查询价格⼤于等于100的所有数据 */
USE practice
GO
SELECT * FROM T
WHERE 价格 >= 100
GO
查询结果:
/* 查询菜系⾮⽕锅的所有数据 */
USE practice
GO
SELECT * FROM T
WHERE 菜系 != '⽕锅'
GO
查询结果:
2.2.2 使⽤逻辑运算符
/* 查询菜系为⽕锅且价格⼤于100的所有数据 */
USE practice
GO
SELECT * FROM T
WHERE 菜系 = '⽕锅' AND 价格 >= 100
GO
查询结果:
/* 查询菜系为⽕锅或甜品饮品的所有数据 */
USE practice
GO
SELECT * FROM T
WHERE 菜系 = '⽕锅' OR 菜系 = '甜点饮品'
GO
查询结果:
/* 查询菜系不为⽕锅的所有数据 */
USE practice
GO
SELECT * FROM T
WHERE NOT 菜系 = '⽕锅'
GO
查询结果:
2.2.3 使⽤LIKE运算符
LIKE是模式匹配运算符,功能类似正则表达式,⽤于指定⼀个字符串是否与指定的字符串模式相匹配,使⽤LIKE 运算符的代码格式如下:
[NOT] LIKE '匹配字符串' [ESCAPE '<;转义字符>']
⽅括号中的内容是可选的,若⼀个LIKE关键词前带有NOT,则代表进⾏相反的操作(即指匹配未出现匹配字符串的⽬标);ESCAPE⼦句⽤于指定转义字符。匹配字符串可以是⼀个完整的字符串,也可以包含通配符% _ [] [^],这四种通配符的含义如下:
LIKE⼦句中的通配符
通配符含义
%代表任意长度(长度可以为0)的字符串
_代表任意单个字符
[]指定范围或集合内的任意单个字符
[^]不在指定范围或集合内的任意单个字符
下⾯是通配符的⼀些⽰例:
LIKE 'AB%' 返回以AB开头的任意长字符串
LIKE '%ABC' 返回以ABC结尾的任意长字符串
LIKE '%ABC%' 返回包含ABC的任意长字符串
LIKE '_AB' 返回以AB结尾的长度为3的字符串
LIKE '[ABC]%' 返回以A、B、C任意⼀个开头的任意长字符串
LIKE 'L[^A]%' 返回以L开头,且第⼆个字符不是A的,任意长字符串
我们在WHERE中使⽤LIKE⼦句来进⾏字符串的模式匹配:
/* 查询所有连锁店(即名称⾥带有中⽂括号) */
USE practice
GO
SELECT 店铺名称 FROM T
WHERE 店铺名称 LIKE '%(%'
GO
查询结果:
/* 查询所有川菜店 */
USE practice
GO
SELECT 店铺名称+' '+菜系 AS 川菜店 FROM T
WHERE 菜系 LIKE '川_'
GO
查询结果:
/* 查询所有连锁店(即店铺名称以')'结尾) */
USE practice
GO
SELECT 店铺名称 FROM T
WHERE 店铺名称 LIKE '%[)]'
GO
查询结果:
/* 查询所有⾮连锁店(即店铺名称不以')'结尾) */
USE practice
GO
SELECT 店铺名称 FROM T
WHERE 店铺名称 LIKE '%[^)]'
GO
查询结果:
2.2.4 使⽤运算符
运算符和可以⽤来查列的值在或不在指定的范围内。其中BETWEEN后是范围的下限(包括下限),AND后是范围的上限(包括上限)。
/* 查询所有价格在100到200之间的商品名称及对应价格 */
USE practice
GO
SELECT 商品名称,价格 FROM T
WHERE 价格 BETWEEN 100 AND 200
GO
查询结果:
/* 查询所有价格不在100到200之间的商品名称及对应价格 */
USE practice
GO
SELECT 商品名称,价格 FROM T
WHERE 价格 NOT BETWEEN 100 AND 200
GO
查询结果:
2.2.5 使⽤IN运算符
IN运算符可以⽤来表⽰列的值属于或不属于指定的集合。如果值属于制定的集合,返回true,否则返回false;
/* 查询所有菜系在('⽕锅','烧烤烤⾁','⼩吃快餐')中的店铺的名称及所属菜系 */
USE practice
GO
SELECT 店铺名称,菜系 FROM T
WHERE 菜系 IN('⽕锅','烧烤烤⾁','⼩吃快餐')
GO
查询结果:
/* 查询所有菜系不在('⽕锅','烧烤烤⾁','⼩吃快餐')中的店铺的名称及所属菜系 */
USE practice
GO
SELECT 店铺名称,菜系 FROM T
WHERE 菜系 NOT IN('⽕锅','烧烤烤⾁','⼩吃快餐')
GO
查询结果:
2.2.6 使⽤IS NULL运算符
运算符IS NULL可以判断列的值是否是NULL。如果是则返回true,否则返回false;
USE practice
GO
-- 插⼊⼀⾏带有空值的样本
INSERT INTO T VALUES(NULL,NULL,NULL,NULL,'川菜',100,230,'重庆')
-- 查商品名称为NULL的样本
SELECT * FROM T
WHERE 商品名称 IS NULL
GO
查询结果:
2.3 排序查询
使⽤ORDER BY⼦句可以按⼀个或多个属性列对数据进⾏排序。ORDER BY⼦句通常位于WHERE⼦句后⾯,默认的排序⽅式有两种(升序和降序),通过关键字ASC和DESC来指定。其中,ASC表⽰升序,DESC表⽰降序,默认为升序即ASC。当排序列包含空值NULL时,若使⽤ASC关键字,则排序列为空值的记录放在最后,若使⽤DESC 关键字,则排序列为空值的记录放在最前,即默认NULL是最⼤的数值;
/* 以价格列为排序列进⾏整体的降序排序 */
USE practice
GO
SELECT * FROM T
ORDER BY 价格 DESC
GO
查询结果:
/* 以价格列为排序列进⾏商品属性的升序排序 */
USE practice
GO
SELECT 店铺名称+' '+商品名称 AS 商品,价格 FROM T
ORDER BY 价格
GO
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论