---------------------- Windows Phone 7手机开发、Net培训、期待与您交流! ----------------------
黑马程序员--.Net学习日记——数据库(2)
Having语句:
1.在where中不能使用聚合函数,必须使用Having,Having要位于Group By之后,select Fage,COUNT(*) as 人数from T_Person.
2.注意:Having中不能使用未参数分组的列,Having不能替代where.作用不一样,Having是对组进行过滤.
限制结果集行数:
1.select top 5 * from T_Person order by FSalary Desc
2.检索按照工资从高到低排序检索从第六名开始一共三个人的信息:select top 3 * from T_Person where Fnumber not in(select top 5 Fnumber from T_Person order by FSalary DESC) order by FSalary DESC
去掉数据重复
1.distinct是对整个结果集进行数据重复处理的,而不是针对每一个列.
联合结果集:
1.简单的结果集联合:select FNumber,FName,FAge from T_Person UNION select FIdCardNUmber,Fname,Fage from T_Temp
2.基本原则:每个结果集必须有相同的列数;每个结果集的列必须类型相容
3.union合并两个查询结果集,并且将其中完全重复的数据行合并为一条,union因为要进行重复值扫描,所以效率低,因此如果不是确定要合并重复行,那么就用 union all.
数字函数:
1.ABS():求绝对值.
2.CEILING():舍入到最大整数.3.33将被舍入为4,2.89将被舍入到3,-3.61将被舍入为-3.
3.FLOOR():舍入到最小整数.3.33将被舍入为3,2.89将被舍入到2,-3.61将被舍入为-4.
4.ROUND():四舍五入
字符串函数:
1.LEN():计算字符串长度.
2.LOWER(),UPPER():转小写,大写
3.LTRIM():字符串左侧的空格去掉
4.RTRIM();字符串右侧的空格去掉
5.substring(string,start_position,length)参数string为主字符串,start_position为子字符串在主字符串中的起始位置,length为子字符串的最大长度
日期函数
1.GETDATE();取得当前日期时间
2.DATEADD(datepart,number,date),计算增加以后的日期.参数date为待计算的日期参数date为待计算的日期.参数number为增量;参数datepart为计量单位.dateadd(day,3,date)为计算日期date的三天后的日期,而dateadd(month,-8,date)为计算date的八个月之前的日期.
3.datediff(datepart,startdate,enddate):计算两个日期之间的差额.datepart为计量单位,可取值参考dateadd.
4.datepart(datepart,date):返回一个日期的特定部分.
类型转换函数
1.cast(expression as data_type)
2.convert(data_type,expression)
3.select FIdNumber
4.right(FIdNumber,3)as后三位
5.cast(right(FIdNumber,3)as integer)as 后三位的整数形式
6.cast(right(FIdNumber,3)as integer)+1 as后三位加1
7.convert(integer,right(FIdNumber,3))/2 as 后三位除以2
case函数用法:
单值判断,相当于switch case
case expressin
when value1 then returnvalue1
when value2 then returnvalue2
when value3 then returnvalue3
else defaultreturnvalue
索引(Index):
1.全表扫描:对数据进行检索(select)效率最差的是全表扫描,就是一条一条的找.
2.如果没有目录,查汉语字典就要一页页的翻,而有了目录只要查询目录就可以了.为了提高检索的速度,可以为经常进行检索的列添加索引,相当于创建目录.
3.创建索引的方式,在表设计器中点击右键,选择"索引/键"→添加→在列中选择索引包含的列.
4.使用索引提高查询效率,但是索引也使占据空间的,而且添加,更新,删除数据的时候也需要同步更新索引,因此会降低Insert,Update,Delete的速度.只要经常检索的字段上(where)创建索引.
5.即使创建了索引,仍然有可能全盘扫描,比如like,函数,类型转换等
子查询:
1.将一个查询语句作为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被成为子查询.所有可以使用表的地方几乎都可以使用子查询来代替.select * from (select * from T2 where FAge<30)
---------------------- Windows Phone 7手机开发、Net培训、期待与您交流! ----------------------
详细请查看:http://net.itheima.com/