SQL Server 基础

1. select 查询的列,对列的限制;where 过滤行,对行的限制;group by 集合运算,如取平均数;having 对集合运算取值的限制,如均值要大于30;order by 对排序规则的限制(默认递增)
2. F5执行,效果等同于execute
3. select Top 100 from 表; 查出前100行的数据
4. order by; select id,name,price from Product order by name desc,price; 先按照name递减排序,然后在相同的name中按照price递增排序
select id,name,price from Product order by 2; 按照第二列(即name列)递增排序
5. isnull函数:判断某一数据是否为空;
select id, name, isnull(price ,' ') from Product order by name desc,price; 为了不困扰用户,如果price的值为null,则查询出来的值会表示为空
6. as关键字:给表列起别名:
select id, name, isnull(price ,' ') as price123 from Product order by name desc,price; 经过isnull(price ,' ')操作,查出的原price列没有列名,这时候给该列起个别名price123
7. + 关键字:将“列”与“字符串”连接起来:
select id, name, price, name + ‘产品的价格为’ + convert(varchar,price)from Product order by name desc,price; convert(varchar,price)数据类型转换,将钱类型的price转为varchar类型以方便字符串拼接
8. 算数表达式:+ - * /
select id, name, rate as '每小时工资', round(rate*40*52,1) as ‘年薪’, round(rate*40*52,0) as ‘年薪’ from Employee; round(rate*40*52,1)小数点后四舍五入保留1位,round(rate*40*52,0)四舍五入不要小数位
select id, name, rate as '每小时工资', (rate+5)*40*52 as ‘年薪’ from Employee; (rate+5)*40*52改变运算优先级
9. between A and B
既包含A,又包含B
10. 通配符:
like "%"或“_” "_"单项匹配 ,“%”多项匹配
11. where语句中使用 in 或 not in
select * from product where size in ('1','3','4') 尺寸为1,3,4中的一种,not in 不为括号中的任意一种
12. where语句中使用 is null或is not null
select * from product where size is not null 查出size不为空的
13. and or
14. 聚合函数:count(),distinct(),max(),min(),avg(),sum()
select count(SalesID) from Sales where SalesID is not null
select count(distinct(SalesID)) from Sales where SalesID is not null 去除重复值后计数
select avg(TotalDue),max(TotalDue),min(TotalDue),sum(TotalDue) from Sales.SalesOrder
15. select SalesID,max(TotalDue) from Sales.SalesOrder where SalesID is not null group by SalesID 当SalesID,max(TotalDue)一起查询,这时候一定要有group by,且所有像SalesID这种普通列的一定要跟在group by后面(*************为什么**************) 如这样写是会报错的 select SalesID,max(TotalDue) from Sales.SalesOrder
select SalesID,max(TotalDue) from Sales.SalesOrder where SalesID is not null group by SalesID having max(TotalDue)>5000 order by SalesID having专门对max(TotalDue)>5000条件进行限制,后面不能跟诸如SalesID这样的普通列。
select SalesID,OrderDatae,max(TotalDue)
from Sales.SalesOrder
where SalesID is not null and OrderDate >'2017-7-6' --对普通列进行限制
group by SalesID,OrderDatae --如果select中既有普通列又有一些函数的特殊列,这时候普通列都要放这儿
having max(TotalDue)>5000 --针对一些特殊函数列的限制
order by SalesID

浙公网安备 33010602011771号