outlook 发表于 2018-10-17 12:10:59

【SQL Server学习笔记】SELECT语句

  本文主要记录在学习select语句中,需要特别注意的知识点。版本是SQL Server 2008 R2。
  1、让%不被认为是通配符,可以用escape关键字。
--查找产品名称中包含%字符的记录,用/表示后面的%不是通配符 SELECT * FROM PRODUCT WHERE PRODUCT_NAME LIKE '%/%%' ESCAPE '/'   2、声明变量、赋值。
--SQL Server 2008之前的版本 DECLARE @prod_name NVARCHAR(10)SET @prod_name = 'abc'SELECT * FROM product WHERE prod_name LIKE '%' + @prod_name + '%'   --SQL Server 2008中初始化变量,一步到位 DECLARE @prod_name NVARCHAR(10) = 'abc';  3、GROUP BY ALL
--对OrderDate列的所有值进行分组 --不满足where条件的OrderDate也会出现,汇总值为NULL SELECT OrderDate,      sum(TotalDue) Total FROM Sales.SalesOrderHeader WHERE OrderDate BETWEEN '2001-07-31' AND '2001-07-31' GROUP BY ALL OrderDate  4、count(*)会统计NULL,count(字段)不会统计NULL。使用avg(字段)、count(字段)时,NULL不会有负面影响。
  5、ORDER BY
--排序的字段可以不出现在select子句中 SELECT Name FROM Production.Product ORDER BY ListPrice ASC   --select中用distinct时,order by中的字段必须出现在select列表中 SELECT DISTINCT         Name,      ListPrice FROM Production.Product ORDER BY ListPrice ASC   --在排序结果集中使用top关键字 SELECT TOP 10         Name FROM Production.Product ORDER by ListPrice ASC   /*========================================== 在早期版本中,由于top子句不能使用局部变量, 所以为了限制返回的结果集,用set rowcount X, 在最新的版本中直接用top关键字, 而且top子句可以用变量 ============================================*/--限制10行 SELECT TOP (10)         Name FROM Production.Product--限制返回10%的行 SELECT TOP (10) PERCENT          Name FROM Production.Product--在top中使用变量 DECLARE @percent TINYINT =80SELECT TOP (@percent) PERCENT          Name FROM Production.Product  6、union中的order by
select SalesPersonID,SalesQuota from sales.SalesPerson where SalesQuota > 200000union allselect SalesPersonID,SalesQuota from sales.SalesPerson where SalesQuota

页: [1]
查看完整版本: 【SQL Server学习笔记】SELECT语句