Select *或[列名] from 表
select* from Orders
使用比较操作符来比较表中的值与指定的值或表达式的值
= 等于 >大于 <小于 >=大于等于 <= 小于等于 <>不等于
使用字符串比较符 like
比较字符串时,可使用like和通配符进行查找
查询条件中的字符串内,所有的字符都有效,包括开始和结尾的空格
like只可用于:char、nchar、varchar、nvarchar 和datetime
通配符 描述 示例
% 0或多个字符串 select* from Orders where customerid like '%e%'
_ 任何单个的字符 select* from customers where country like'u_'
[] 在指定区域或集合内的任何单个字符 select* from customers where country like'u[k,a]'
[^] 不在指定区域或集合内的任何单个字符 select* from customers where country like'u[^k]'
用逻辑操作符 and、or 和 not 来连接一系列的表达式
使用 and 返回满足所有条件的行
使用 or返回满足任一条件的行
使用 not 返回不满足条件的行
使用圆括号为表达式分组,改变表达式求值顺序,增加表达式的可读性
优先级 not、and、or 由左到右
select productid, productname, supplierid, unitprice from products
where (productname like 't%' or productid = 46) and (unitprice > 16.00)
使用 between 来查询在一定范围内的值
使用 between 时,注意
结果集中,包含范围内的边缘值
尽量使用 between 而不用 and 和比较操作符表示的表达式(>=x and <=y)
要使结果集不包含边缘值,则使用(>x and <y)
要返回不在指定区域的行时,使用 not between
select productname, unitprice from products
where unitprice between 10 and 20
使用 in 语句指定一个值的列表作为查询条件
使用 in 时,注意
和使用由 or 操作符连起来的一系列比较操作符,其效果是等价的
在搜索条件中不能包含 null 值,这将返回不可预测的结果集
使用 not in 搜索条件来返回值不在指定列表中的行
使用 not 会降低数据检索速度
select* companyname, country
from suppliers
where country in ('Japan', 'Italy')
使用 is null 搜索条件来查询某指定列没任何信息的行
使用 is not null 来查询指定列中非空的行
select companyname, fax
from suppliers
where fax IS null
使用 ORDER BY 子句为结果集中的行排序,有升序和降序, 排序升序为默认,也可加上asc,倒序为desc
select * from employees order by firstname asc
select * from employees order by firstname desc
使用ORDER BY 时,注意
SQL Server 并不主动为结果集中的行排序
ORDER BY缺省地按升序排列
ORDER BY 子句中指定的列并不一定要出现在选择列表中
ORDER BY 子句指定的列不能超过8 060字节
可以按照字段名、计算出的值或表达式进行排序
select * from employees order by price*count
可以在 ORDER BY 子句中引用某字段在选择列表中的位置而进行排序
select * from employees order by 1
ORDER BY 子句不能用于数据类型 text 或 p_w_picpath 字段
Order by 子句用来定义返回数据的排列顺序。
Order by子句可以按照from子句的表中的任一列或多列来定义输出顺序。
如果有 where,order by在where后
Order by后可以接多个列名,先按第一列排序,重复的列值后按第二列排序,以次轮推
用 DISTINCT消除重复行,使结果集列出惟一的值
使用 DISTINCT 时,注意
除非指定 DISTINCT 子句,否则 SELECT 语句将返回所有满足搜索条件的行
选择列表中所有列的组合值将决定其惟一性
包含任何惟一组合值的行都将被检索到并被返回到结果集中
除非使用了 ORDER BY 子句,否则 DISTINCT 子句将按随机的顺序显示结果集中的行
如果指定了 DISTINCT 子句, ORDER BY 中的字段必须出现在选择列表中
USE northwind
SELECT DISTINCT country
FROM suppliers
ORDER BY country
关键字 TOP n :列出结果集中前 n 个记录
关键字TOP n PERCENT:列出结果集中前 n% 的记录。
应注意
在 ORDER BY 子句中指定值的范围
关键字 TOP 后使用无符号的整数
如果 TOP n PERCENT 生成小数,则将取整
可以在结果集中用 WITH TIES 子句包含那些值相等的记录,这时结果集中可以包含任意数目的行
USE northwind
SELECT TOP 5 productname, unitprice
FROM products
使用聚合函数
avg(平均值)
count(表达式中值的数目)
count(*)(所选择的行的数目)
max(表达式中的最大值)
min(表达式中最小值)
sum(计算表达式中所有值的和)
stdev(样本标准偏差)
stdevp(填充标准偏差)
var(样本方差)
varp(总体方差)
1 计算诸如平均值和总和的函数称为聚合函数
2 SQL Server 对整个表或表里某个组中的字段进行汇总、计算,然后生成单个的值
3 可以在 SELECT 语句中单独使用聚合函数,也可以与语句 GROUP BY 联合使用
4 如果记录集中没有满足 WHERE 子句的记录,则其他所有函数返回空值, COUNT(*)返回 0
字段的数据类型决定了可以用在该字段上的聚合函数类型
如:SUM 和 AVG 只能用在数据类型代表数字的字段上
select productid,sum(quantity)as sumquqntity from [order details]
group by productid
having productid=1 or sum(quantity)>500
order by productid