黑马程序员-ADO.net-SQL语句复习大全(二)
来源:互联网 发布:淘宝的管理团队 编辑:程序博客网 时间:2024/05/21 10:49
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
呵呵,这次的笔记代码比较多咯,要知道用记事本写代码,你懂的,没事一如既往的努力,没有人给我加油,我自己给自己加油。我就是最棒的。噢耶
作为程序员很多时候喜欢在深夜学习,因为安静,也因为心灵的宽慰与舒坦,一个人夜深了,敲着代码,累了就听一下,高进的“夜的钢琴曲” 很好听哦,听着舒服,推荐给大家哈,好啦学习啦.
1.数据的分组 group by (放在where之后)
select FAge,count(*) from person group by Fage根据年龄分组,然后记录不同年龄的个数
select FAge,FName,count(*) from person group by Fage(错误),前面的字段必须在group by中出现
select FAge,AVG(FSalary) from person group by Fage,聚合函数可以包括
2.Having语句
select FAge ,count(*) from person where (count(*)>1) group by FAge (where中不能包含聚合函数)
select FAge ,count(*) from person group by fage having count(*)>1 出现在having中的字段必须放在select中
having是对分组后的信息的过滤所以不存在代替where
3.限制结果集的行数(应用在数据分页的作用)
select * from person order by FSalary DESC,按照工资排序
select top 3 * from person order by FSalary DESC,按照工资排序前3名
工资从高到低排序检索从第六名后的三个人的信息:(子查询)
select top 3* from person where FNumber not in
(select top 5 FNumber from person order by fsalary desc) order by fsalary desc)
休息一下,吃饭去了。出去跑了一下一个上午又快过了,家里的事情还真是多呀,好啦,开始吧,别浪费时间了,要学的还很多呢
人呀,不逼自己是不行的,至少是学生时期。
开始时间11:36
4.去掉重复数据
alter table person add FSubCompany vachar(20),给表增加字段alter table修改表,增加部门信息
select distinct FDepartment from person 查找部门信息不重复的
两个字段不加distinct,和加distnct,distinct消除完全相同的信息
5.联合结果集union
两条查询语句中间加union把查询结果汇总,上下两个字段的数量要一致,类型要相容
select FName ,Fage,0 from person
union (all)
select FName,fage,Fsalary from person
缺少的时候可以补足。
单个字段之间的union将重复的数据合并了,容易的导致数据丢失
不想重复数据合并,中间加union all
6.案例1,要求查询员工的最低年龄和最高年龄,临时工和正式工要分别查询
select '正式员工最高年龄',MAX(fage) from person
union all
select '正式员工最低年龄',min(fage)from person
union all
select '临时工最高年龄', Max(fage)from person
union all
select '临时工最低年龄',min(fage) fage person
7.案例2 查询每位正式员工的信息,包括工号,工资,并且在最后一行加上所有员工工资额合计
select FNumber,FSalary from person
union
selecet '工资合计',sum(FSalary) from person
8.数据库函数
数字函数
ABS() 求绝对值 select abs(-3);
geiling():摄入到最大整数。3.33舍入为4,-3.33舍入为-3
floor():舍入到最小整数。3.33舍入3,2.89舍入到2,-3.89舍入到-4
round(-3.61,0)四舍五入。舍入到“离我半径最近的数”,后面0指的是精度
9.字符串函数
len():计算字符串长度
select len('abc')或者select FName,len(FName)from person
lower(),upper():转小写,转大写
ltrim()字符串左侧的空格去掉
rtrim(); 字符串右侧的空格去掉
select ltrim(' bb '),rtrim(' bbb '),ltrim(rtrim(' bb '))两边都去掉空格
substring(string, start_position,length) string为主串,
start_position为子串在主串中的起始位置,lenght为子字符串的最大长度
例如:substring('abcdef111',2,3),2是开始的位置,3表示截取的长度
select FName ,substring(FName,2,2) from person
10.日期函数
getdate(); 取得当前日期
dateadd(datepart,number,date),计算增加以后的日期,daata为待选计算日期,number为增量
select dateaaa(day,3,getdate()); 在当前日期的时间3天
select dateadd(hh,1,getdate()); 在当前日期上加1个小时
datediff(datepart,startdate,enddate),计算两个日期的差额,datepart是计量单位,是天还是小时
select datediff(hh,getdate(),dateadd(day,-3,gedate()));
求每年入职员工的个数
select datediff(year,FIndate,getdate()), count (*) from person
group by datediff(year,FIndate,getdate());
datepart(datepart,date):返回一个日期的特定部分。
select datepart(year,FInDate),count(*) from person
group bu Datepart(year,FInDate);计算每年入职的个数
11.类型转换函数
cast(expression as data_type) expression是表达式,type是类型
convert(data_type,expression) 就是反过来写了
right(FIdNumber,3) as 后三位
cast(right(FidNumber,3) as integer)as 后三位的整数形式
cast(right(FidNumber,3) as integer)+1 后三位加1
convert(integer,right(FidNumber,3))/2 as 后三位除以2
12.空值处理函数
select isnull(FName,'佚名') as 姓名 from preson,如果是空就显示佚名
13.流控制函数
case函数用法,类似于switch case类型 例如:select FName,
case experssion {
when value1 then returnvalue1 case FLevel
when value2 then returnvalue2 when 1 then '普通用户’
else defaultreturnvalue3 when 2 then '会员'
end when 3 then 'VIP'
else '未知客户类型'
end
}as 客户类型 from person
select FName,
{
case 如果有判断条件则case后不带数据
when FSalary<2000 then '低收入'
when FSalary>=2000 and FSalary<5000 then '中等收入'
else '高收入'
end
} as 收入水平 from person
- 黑马程序员-ADO.net-SQL语句复习大全(二)
- 黑马程序员-ADO.net-SQL语句复习大全(一)
- 黑马程序员-ADO.net-SQL语句进阶练习
- 黑马程序员-自学笔记-SQL Server与ADO.Net(二)
- 黑马程序员--ADO.NET数据库访问技术(二)
- 黑马程序员之ado.net之二
- 黑马程序员—ADO.Net笔记(防止sql注入)
- 黑马程序员—ADO.net基础复习篇2
- 黑马程序员—ADO.net复习基础篇3
- 黑马程序员之ADO.NET学习笔记:通过SqlCommand对象执行SQL语句
- 黑马程序员-Ado.Net
- 黑马程序员-ADO.Net
- 黑马程序员-ADO.NET
- 黑马程序员 ADO.net
- 黑马程序员-ADO.net
- 黑马程序员-----ADO.NET
- 黑马程序员--ADO.NET
- 【黑马程序员】ADO.NET
- 如何不需要再sudo输入密码
- ORA-08002: 序列 SEQ_WGB_TEST2.CURRVAL 尚未在此会话中定义
- Merge or Rebase?
- 整型,字符串转换
- 数据库操作通用类库 不管是sql server oracle mysql 还有别的都可以啊! 太强了
- 黑马程序员-ADO.net-SQL语句复习大全(二)
- 国内免费(开源)CMS系统大全
- 不健壮代码分析
- 在Java应用中嵌入sshd服务(续)
- 动态规划专项intermediate:LA 4015
- Ubuntu 11.04 DHCP server 和 ipv6 备忘
- Color the Ball
- viewpager的用法总结
- Windows使用技巧(以Windows7为例)